outlook_mapi_sys/
bindings.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT license.
3
4// Bindings generated by `windows-bindgen` 0.60.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_link::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_link::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_link::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_link::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_link::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_link::link!("mapi32" "system" fn DeinitMapiUtil());
118    unsafe { DeinitMapiUtil() }
119}
120#[inline]
121pub unsafe fn DeregisterIdleRoutine(ftg: *mut core::ffi::c_void) {
122    windows_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::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_link::link!("olmapi32" "cdecl" 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_link::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_link::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_link::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_link::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 PpropFindProp(
1471    lpproparray: *mut SPropValue,
1472    cvalues: u32,
1473    ulproptag: u32,
1474) -> *mut SPropValue {
1475    windows_link::link!("mapi32" "system" fn PpropFindProp(lpproparray : *mut SPropValue, cvalues : u32, ulproptag : u32) -> *mut SPropValue);
1476    unsafe { PpropFindProp(lpproparray as _, cvalues, ulproptag) }
1477}
1478#[inline]
1479pub unsafe fn PropCopyMore(
1480    lpspropvaluedest: *mut SPropValue,
1481    lpspropvaluesrc: *mut SPropValue,
1482    lpfallocmore: LPALLOCATEMORE,
1483    lpvobject: *mut core::ffi::c_void,
1484) -> i32 {
1485    windows_link::link!("mapi32" "system" fn PropCopyMore(lpspropvaluedest : *mut SPropValue, lpspropvaluesrc : *mut SPropValue, lpfallocmore : LPALLOCATEMORE, lpvobject : *mut core::ffi::c_void) -> i32);
1486    unsafe {
1487        PropCopyMore(
1488            lpspropvaluedest as _,
1489            lpspropvaluesrc as _,
1490            lpfallocmore,
1491            lpvobject as _,
1492        )
1493    }
1494}
1495#[inline]
1496pub unsafe fn RTFSync<P0>(lpmessage: P0, ulflags: u32) -> windows_core::Result<windows_core::BOOL>
1497where
1498    P0: windows_core::Param<IMessage>,
1499{
1500    windows_link::link!("mapi32" "system" fn RTFSync(lpmessage : * mut core::ffi::c_void, ulflags : u32, lpfmessageupdated : *mut windows_core::BOOL) -> windows_core::HRESULT);
1501    unsafe {
1502        let mut result__ = core::mem::zeroed();
1503        RTFSync(lpmessage.param().abi(), ulflags, &mut result__).map(|| result__)
1504    }
1505}
1506#[inline]
1507pub unsafe fn ScBinFromHexBounded(lpsz: *const i8, lpb: *mut u8, cb: u32) -> i32 {
1508    windows_link::link!("mapi32" "system" fn ScBinFromHexBounded(lpsz : *const i8, lpb : *mut u8, cb : u32) -> i32);
1509    unsafe { ScBinFromHexBounded(lpsz, lpb as _, cb) }
1510}
1511#[inline]
1512pub unsafe fn ScCopyNotifications(
1513    cnotification: i32,
1514    lpnotifications: *mut NOTIFICATION,
1515    lpvdst: *mut core::ffi::c_void,
1516    lpcb: *mut u32,
1517) -> i32 {
1518    windows_link::link!("mapi32" "system" fn ScCopyNotifications(cnotification : i32, lpnotifications : *mut NOTIFICATION, lpvdst : *mut core::ffi::c_void, lpcb : *mut u32) -> i32);
1519    unsafe { ScCopyNotifications(cnotification, lpnotifications as _, lpvdst as _, lpcb as _) }
1520}
1521#[inline]
1522pub unsafe fn ScCopyProps(
1523    cvalues: i32,
1524    lpproparray: *mut SPropValue,
1525    lpvdst: *mut core::ffi::c_void,
1526    lpcb: *mut u32,
1527) -> i32 {
1528    windows_link::link!("mapi32" "system" fn ScCopyProps(cvalues : i32, lpproparray : *mut SPropValue, lpvdst : *mut core::ffi::c_void, lpcb : *mut u32) -> i32);
1529    unsafe { ScCopyProps(cvalues, lpproparray as _, lpvdst as _, lpcb as _) }
1530}
1531#[inline]
1532pub unsafe fn ScCountNotifications(
1533    cnotifications: i32,
1534    lpnotifications: *mut NOTIFICATION,
1535    lpcb: *mut u32,
1536) -> i32 {
1537    windows_link::link!("mapi32" "system" fn ScCountNotifications(cnotifications : i32, lpnotifications : *mut NOTIFICATION, lpcb : *mut u32) -> i32);
1538    unsafe { ScCountNotifications(cnotifications, lpnotifications as _, lpcb as _) }
1539}
1540#[inline]
1541pub unsafe fn ScCountProps(cvalues: i32, lpproparray: *mut SPropValue, lpcb: *mut u32) -> i32 {
1542    windows_link::link!("mapi32" "system" fn ScCountProps(cvalues : i32, lpproparray : *mut SPropValue, lpcb : *mut u32) -> i32);
1543    unsafe { ScCountProps(cvalues, lpproparray as _, lpcb as _) }
1544}
1545#[inline]
1546pub unsafe fn ScCreateConversationIndex(
1547    cbparent: u32,
1548    lpbparent: *mut u8,
1549    lpcbconvindex: *mut u32,
1550    lppbconvindex: *mut *mut u8,
1551) -> i32 {
1552    windows_link::link!("mapi32" "system" fn ScCreateConversationIndex(cbparent : u32, lpbparent : *mut u8, lpcbconvindex : *mut u32, lppbconvindex : *mut *mut u8) -> i32);
1553    unsafe {
1554        ScCreateConversationIndex(
1555            cbparent,
1556            lpbparent as _,
1557            lpcbconvindex as _,
1558            lppbconvindex as _,
1559        )
1560    }
1561}
1562#[inline]
1563pub unsafe fn ScDupPropset(
1564    cvalues: i32,
1565    lpproparray: *mut SPropValue,
1566    lpallocatebuffer: LPALLOCATEBUFFER,
1567    lppproparray: *mut *mut SPropValue,
1568) -> i32 {
1569    windows_link::link!("mapi32" "system" fn ScDupPropset(cvalues : i32, lpproparray : *mut SPropValue, lpallocatebuffer : LPALLOCATEBUFFER, lppproparray : *mut *mut SPropValue) -> i32);
1570    unsafe {
1571        ScDupPropset(
1572            cvalues,
1573            lpproparray as _,
1574            lpallocatebuffer,
1575            lppproparray as _,
1576        )
1577    }
1578}
1579#[inline]
1580pub unsafe fn ScInitMapiUtil(ulflags: u32) -> i32 {
1581    windows_link::link!("mapi32" "system" fn ScInitMapiUtil(ulflags : u32) -> i32);
1582    unsafe { ScInitMapiUtil(ulflags) }
1583}
1584#[inline]
1585pub unsafe fn ScLocalPathFromUNC<P0, P1>(lpszunc: P0, lpszlocal: P1, cchlocal: u32) -> i32
1586where
1587    P0: windows_core::Param<windows_core::PCSTR>,
1588    P1: windows_core::Param<windows_core::PCSTR>,
1589{
1590    windows_link::link!("mapi32" "system" fn ScLocalPathFromUNC(lpszunc : windows_core::PCSTR, lpszlocal : windows_core::PCSTR, cchlocal : u32) -> i32);
1591    unsafe { ScLocalPathFromUNC(lpszunc.param().abi(), lpszlocal.param().abi(), cchlocal) }
1592}
1593#[inline]
1594pub unsafe fn ScMAPIXFromSMAPI(
1595    lhsimplesession: usize,
1596    ulflags: u32,
1597    lpinterface: *mut windows_core::GUID,
1598    lppmapisession: *mut Option<IMAPISession>,
1599) -> i32 {
1600    windows_link::link!("mapi32" "system" fn ScMAPIXFromSMAPI(lhsimplesession : usize, ulflags : u32, lpinterface : *mut windows_core::GUID, lppmapisession : *mut * mut core::ffi::c_void) -> i32);
1601    unsafe {
1602        ScMAPIXFromSMAPI(
1603            lhsimplesession,
1604            ulflags,
1605            lpinterface as _,
1606            core::mem::transmute(lppmapisession),
1607        )
1608    }
1609}
1610#[inline]
1611pub unsafe fn ScRelocNotifications(
1612    cnotification: i32,
1613    lpnotifications: *mut NOTIFICATION,
1614    lpvbaseold: *mut core::ffi::c_void,
1615    lpvbasenew: *mut core::ffi::c_void,
1616    lpcb: *mut u32,
1617) -> i32 {
1618    windows_link::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);
1619    unsafe {
1620        ScRelocNotifications(
1621            cnotification,
1622            lpnotifications as _,
1623            lpvbaseold as _,
1624            lpvbasenew as _,
1625            lpcb as _,
1626        )
1627    }
1628}
1629#[inline]
1630pub unsafe fn ScRelocProps(
1631    cvalues: i32,
1632    lpproparray: *mut SPropValue,
1633    lpvbaseold: *mut core::ffi::c_void,
1634    lpvbasenew: *mut core::ffi::c_void,
1635    lpcb: *mut u32,
1636) -> i32 {
1637    windows_link::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);
1638    unsafe {
1639        ScRelocProps(
1640            cvalues,
1641            lpproparray as _,
1642            lpvbaseold as _,
1643            lpvbasenew as _,
1644            lpcb as _,
1645        )
1646    }
1647}
1648#[inline]
1649pub unsafe fn ScUNCFromLocalPath<P0, P1>(lpszlocal: P0, lpszunc: P1, cchunc: u32) -> i32
1650where
1651    P0: windows_core::Param<windows_core::PCSTR>,
1652    P1: windows_core::Param<windows_core::PCSTR>,
1653{
1654    windows_link::link!("mapi32" "system" fn ScUNCFromLocalPath(lpszlocal : windows_core::PCSTR, lpszunc : windows_core::PCSTR, cchunc : u32) -> i32);
1655    unsafe { ScUNCFromLocalPath(lpszlocal.param().abi(), lpszunc.param().abi(), cchunc) }
1656}
1657#[inline]
1658pub unsafe fn SetAttribIMsgOnIStg(
1659    lpobject: *mut core::ffi::c_void,
1660    lpproptags: *mut SPropTagArray,
1661    lppropattrs: *mut SPropAttrArray,
1662    lpppropproblems: *mut *mut SPropProblemArray,
1663) -> windows_core::Result<()> {
1664    windows_link::link!("mapi32" "system" fn SetAttribIMsgOnIStg(lpobject : *mut core::ffi::c_void, lpproptags : *mut SPropTagArray, lppropattrs : *mut SPropAttrArray, lpppropproblems : *mut *mut SPropProblemArray) -> windows_core::HRESULT);
1665    unsafe {
1666        SetAttribIMsgOnIStg(
1667            lpobject as _,
1668            lpproptags as _,
1669            lppropattrs as _,
1670            lpppropproblems as _,
1671        )
1672        .ok()
1673    }
1674}
1675#[inline]
1676pub unsafe fn SzFindCh(lpsz: *mut i8, ch: u16) -> *mut i8 {
1677    windows_link::link!("mapi32" "system" fn SzFindCh(lpsz : *mut i8, ch : u16) -> *mut i8);
1678    unsafe { SzFindCh(lpsz as _, ch) }
1679}
1680#[inline]
1681pub unsafe fn SzFindLastCh(lpsz: *mut i8, ch: u16) -> *mut i8 {
1682    windows_link::link!("mapi32" "system" fn SzFindLastCh(lpsz : *mut i8, ch : u16) -> *mut i8);
1683    unsafe { SzFindLastCh(lpsz as _, ch) }
1684}
1685#[inline]
1686pub unsafe fn SzFindSz(lpsz: *mut i8, lpszkey: *mut i8) -> *mut i8 {
1687    windows_link::link!("mapi32" "system" fn SzFindSz(lpsz : *mut i8, lpszkey : *mut i8) -> *mut i8);
1688    unsafe { SzFindSz(lpsz as _, lpszkey as _) }
1689}
1690#[inline]
1691pub unsafe fn UFromSz(lpsz: *mut i8) -> u32 {
1692    windows_link::link!("mapi32" "system" fn UFromSz(lpsz : *mut i8) -> u32);
1693    unsafe { UFromSz(lpsz as _) }
1694}
1695#[inline]
1696pub unsafe fn UlAddRef(lpunk: *mut core::ffi::c_void) -> u32 {
1697    windows_link::link!("mapi32" "system" fn UlAddRef(lpunk : *mut core::ffi::c_void) -> u32);
1698    unsafe { UlAddRef(lpunk as _) }
1699}
1700#[inline]
1701pub unsafe fn UlFromSzHex(lpsz: *mut i8) -> u32 {
1702    windows_link::link!("mapi32" "system" fn UlFromSzHex(lpsz : *mut i8) -> u32);
1703    unsafe { UlFromSzHex(lpsz as _) }
1704}
1705#[inline]
1706pub unsafe fn UlPropSize(lpspropvalue: *mut SPropValue) -> u32 {
1707    windows_link::link!("mapi32" "system" fn UlPropSize(lpspropvalue : *mut SPropValue) -> u32);
1708    unsafe { UlPropSize(lpspropvalue as _) }
1709}
1710#[inline]
1711pub unsafe fn UlRelease(lpunk: *mut core::ffi::c_void) -> u32 {
1712    windows_link::link!("mapi32" "system" fn UlRelease(lpunk : *mut core::ffi::c_void) -> u32);
1713    unsafe { UlRelease(lpunk as _) }
1714}
1715#[inline]
1716pub unsafe fn WrapCompressedRTFStream<P0>(
1717    lpcompressedrtfstream: P0,
1718    ulflags: u32,
1719) -> windows_core::Result<windows::Win32::System::Com::IStream>
1720where
1721    P0: windows_core::Param<windows::Win32::System::Com::IStream>,
1722{
1723    windows_link::link!("mapi32" "system" fn WrapCompressedRTFStream(lpcompressedrtfstream : * mut core::ffi::c_void, ulflags : u32, lpuncompressedrtfstream : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1724    unsafe {
1725        let mut result__ = core::mem::zeroed();
1726        WrapCompressedRTFStream(lpcompressedrtfstream.param().abi(), ulflags, &mut result__)
1727            .and_then(|| windows_core::Type::from_abi(result__))
1728    }
1729}
1730#[inline]
1731pub unsafe fn WrapStoreEntryID(
1732    ulflags: u32,
1733    lpszdllname: *const i8,
1734    cborigentry: u32,
1735    lporigentry: *mut ENTRYID,
1736    lpcbwrappedentry: *mut u32,
1737    lppwrappedentry: *mut *mut ENTRYID,
1738) -> windows_core::Result<()> {
1739    windows_link::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);
1740    unsafe {
1741        WrapStoreEntryID(
1742            ulflags,
1743            lpszdllname,
1744            cborigentry,
1745            lporigentry as _,
1746            lpcbwrappedentry as _,
1747            lppwrappedentry as _,
1748        )
1749        .ok()
1750    }
1751}
1752#[inline]
1753pub unsafe fn __CPPValidateParameters(
1754    emethod: METHODS,
1755    ppfirst: *const core::ffi::c_void,
1756) -> windows_core::Result<()> {
1757    windows_link::link!("mapi32" "system" fn __CPPValidateParameters(emethod : METHODS, ppfirst : *const core::ffi::c_void) -> windows_core::HRESULT);
1758    unsafe { __CPPValidateParameters(emethod, ppfirst).ok() }
1759}
1760#[inline]
1761pub unsafe fn __ValidateParameters(
1762    emethod: METHODS,
1763    ppthis: *mut core::ffi::c_void,
1764) -> windows_core::Result<()> {
1765    windows_link::link!("mapi32" "system" fn __ValidateParameters(emethod : METHODS, ppthis : *mut core::ffi::c_void) -> windows_core::HRESULT);
1766    unsafe { __ValidateParameters(emethod, ppthis as _).ok() }
1767}
1768pub const ABORT_XP_HEADER_OPERATION: u32 = 2097152u32;
1769pub type ABPROVIDERINIT = Option<
1770    unsafe extern "system" fn(
1771        hinstance: windows::Win32::Foundation::HINSTANCE,
1772        lpmalloc: windows_core::Ref<'_, windows::Win32::System::Com::IMalloc>,
1773        lpallocatebuffer: LPALLOCATEBUFFER,
1774        lpallocatemore: LPALLOCATEMORE,
1775        lpfreebuffer: LPFREEBUFFER,
1776        ulflags: u32,
1777        ulmapiver: u32,
1778        lpulproviderver: *mut u32,
1779        lppabprovider: windows_core::OutRef<'_, IABProvider>,
1780    ) -> windows_core::HRESULT,
1781>;
1782pub const AB_FIND_ON_OPEN: u32 = 16u32;
1783pub const AB_MODIFIABLE: u32 = 4u32;
1784pub const AB_NOT_DEFAULT: u32 = 32u32;
1785pub const AB_NO_DIALOG: u32 = 1u32;
1786pub const AB_RECIPIENTS: u32 = 1u32;
1787pub const AB_RESOLVE: u32 = 32u32;
1788pub const AB_SELECTONLY: u32 = 16u32;
1789pub const AB_SHOW_OTHERS: u32 = 4u32;
1790pub const AB_SHOW_PHANTOMS: u32 = 2u32;
1791pub const AB_SUBCONTAINERS: u32 = 2u32;
1792pub const AB_UNICODEUI: u32 = 64u32;
1793pub const AB_UNMODIFIABLE: u32 = 8u32;
1794pub const ACCTUI_NO_WARNING: u32 = 256u32;
1795pub const ACCTUI_SHOW_ACCTWIZARD: u32 = 1024u32;
1796pub const ACCTUI_SHOW_DATA_TAB: u32 = 512u32;
1797#[repr(C)]
1798#[derive(Clone, Copy, Debug, PartialEq)]
1799pub struct ACCT_BIN {
1800    pub cb: u32,
1801    pub pb: *mut u8,
1802}
1803impl Default for ACCT_BIN {
1804    fn default() -> Self {
1805        unsafe { core::mem::zeroed() }
1806    }
1807}
1808pub const ACCT_INIT_NOSYNCH_MAPI_ACCTS: u32 = 1u32;
1809#[repr(C)]
1810#[derive(Clone, Copy)]
1811pub struct ACCT_VARIANT {
1812    pub dwType: u32,
1813    pub Val: ACCT_VARIANT_0,
1814}
1815impl Default for ACCT_VARIANT {
1816    fn default() -> Self {
1817        unsafe { core::mem::zeroed() }
1818    }
1819}
1820#[repr(C)]
1821#[derive(Clone, Copy)]
1822pub union ACCT_VARIANT_0 {
1823    pub dw: u32,
1824    pub pwsz: windows_core::PWSTR,
1825    pub bin: ACCT_BIN,
1826}
1827impl Default for ACCT_VARIANT_0 {
1828    fn default() -> Self {
1829        unsafe { core::mem::zeroed() }
1830    }
1831}
1832pub const ACLTABLE_FREEBUSY: u32 = 2u32;
1833#[repr(C)]
1834#[derive(Clone, Copy)]
1835pub struct ACTION {
1836    pub acttype: ACTTYPE,
1837    pub ulActionFlavor: u32,
1838    pub lpRes: *mut SRestriction,
1839    pub lpPropTagArray: *mut SPropTagArray,
1840    pub ulFlags: u32,
1841    pub dwAlignPad: u32,
1842    pub Anonymous: ACTION_0,
1843}
1844impl Default for ACTION {
1845    fn default() -> Self {
1846        unsafe { core::mem::zeroed() }
1847    }
1848}
1849#[repr(C)]
1850#[derive(Clone, Copy)]
1851pub union ACTION_0 {
1852    pub actMoveCopy: ACTION_0_0,
1853    pub actReply: ACTION_0_1,
1854    pub actDeferAction: ACTION_0_2,
1855    pub scBounceCode: i32,
1856    pub lpadrlist: *mut ADRLIST,
1857    pub propTag: SPropValue,
1858}
1859impl Default for ACTION_0 {
1860    fn default() -> Self {
1861        unsafe { core::mem::zeroed() }
1862    }
1863}
1864#[repr(C)]
1865#[derive(Clone, Copy, Debug, PartialEq)]
1866pub struct ACTION_0_2 {
1867    pub cbData: u32,
1868    pub pbData: *mut u8,
1869}
1870impl Default for ACTION_0_2 {
1871    fn default() -> Self {
1872        unsafe { core::mem::zeroed() }
1873    }
1874}
1875#[repr(C)]
1876#[derive(Clone, Copy, Debug, PartialEq)]
1877pub struct ACTION_0_0 {
1878    pub cbStoreEntryId: u32,
1879    pub lpStoreEntryId: *mut ENTRYID,
1880    pub cbFldEntryId: u32,
1881    pub lpFldEntryId: *mut ENTRYID,
1882}
1883impl Default for ACTION_0_0 {
1884    fn default() -> Self {
1885        unsafe { core::mem::zeroed() }
1886    }
1887}
1888#[repr(C)]
1889#[derive(Clone, Copy, Debug, PartialEq)]
1890pub struct ACTION_0_1 {
1891    pub cbEntryId: u32,
1892    pub lpEntryId: *mut ENTRYID,
1893    pub guidReplyTemplate: windows_core::GUID,
1894}
1895impl Default for ACTION_0_1 {
1896    fn default() -> Self {
1897        unsafe { core::mem::zeroed() }
1898    }
1899}
1900#[repr(C)]
1901#[derive(Clone, Copy, Debug, PartialEq)]
1902pub struct ACTIONS {
1903    pub ulVersion: u32,
1904    pub cActions: u32,
1905    pub lpAction: *mut ACTION,
1906}
1907impl Default for ACTIONS {
1908    fn default() -> Self {
1909        unsafe { core::mem::zeroed() }
1910    }
1911}
1912#[repr(transparent)]
1913#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
1914pub struct ACTTYPE(pub i32);
1915#[repr(transparent)]
1916#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
1917pub struct ADDRESSFORMAT(pub i32);
1918#[repr(C)]
1919#[derive(Clone, Copy, Debug, PartialEq)]
1920pub struct ADDRESSLIST {
1921    pub cAdrs: u32,
1922    pub prgAdr: *mut ADDRESSPROPS,
1923}
1924impl Default for ADDRESSLIST {
1925    fn default() -> Self {
1926        unsafe { core::mem::zeroed() }
1927    }
1928}
1929#[repr(C)]
1930#[derive(Clone, Copy, Debug, PartialEq)]
1931pub struct ADDRESSPROPS {
1932    pub dwProps: u32,
1933    pub hAddress: *mut HADDRESS__,
1934    pub ietFriendly: ENCODINGTYPE,
1935    pub hCharset: *mut HCHARSET__,
1936    pub dwAdrType: u32,
1937    pub pszFriendly: windows_core::PSTR,
1938    pub pwszReserved: windows_core::PWSTR,
1939    pub pszEmail: windows_core::PSTR,
1940    pub certstate: CERTSTATE,
1941    pub tbSigning: windows::Win32::System::Com::BLOB,
1942    pub tbEncryption: windows::Win32::System::Com::BLOB,
1943    pub dwCookie: u32,
1944    pub dwReserved1: u32,
1945    pub dwReserved2: u32,
1946}
1947impl Default for ADDRESSPROPS {
1948    fn default() -> Self {
1949        unsafe { core::mem::zeroed() }
1950    }
1951}
1952pub const ADDRESS_ONE: u32 = 8u32;
1953pub const ADMN_PAD: u32 = 3u32;
1954#[repr(C)]
1955#[derive(Clone, Copy, Debug, PartialEq)]
1956pub struct ADRENTRY {
1957    pub ulReserved1: u32,
1958    pub cValues: u32,
1959    pub rgPropVals: *mut SPropValue,
1960}
1961impl Default for ADRENTRY {
1962    fn default() -> Self {
1963        unsafe { core::mem::zeroed() }
1964    }
1965}
1966#[repr(C)]
1967#[derive(Clone, Copy, Debug, PartialEq)]
1968pub struct ADRLIST {
1969    pub cEntries: u32,
1970    pub aEntries: [ADRENTRY; 1],
1971}
1972impl Default for ADRLIST {
1973    fn default() -> Self {
1974        unsafe { core::mem::zeroed() }
1975    }
1976}
1977#[repr(C)]
1978#[derive(Clone, Copy, Debug, PartialEq)]
1979pub struct ADRPARM {
1980    pub cbABContEntryID: u32,
1981    pub lpABContEntryID: *mut ENTRYID,
1982    pub ulFlags: u32,
1983    pub lpReserved: *mut core::ffi::c_void,
1984    pub ulHelpContext: u32,
1985    pub lpszHelpFileName: *mut i8,
1986    pub lpfnABSDI: LPFNABSDI,
1987    pub lpfnDismiss: LPFNDISMISS,
1988    pub lpvDismissContext: *mut core::ffi::c_void,
1989    pub lpszCaption: *mut i8,
1990    pub lpszNewEntryTitle: *mut i8,
1991    pub lpszDestWellsTitle: *mut i8,
1992    pub cDestFields: u32,
1993    pub nDestFieldFocus: u32,
1994    pub lppszDestTitles: *mut *mut i8,
1995    pub lpulDestComps: *mut u32,
1996    pub lpContRestriction: *mut SRestriction,
1997    pub lpHierRestriction: *mut SRestriction,
1998}
1999impl Default for ADRPARM {
2000    fn default() -> Self {
2001        unsafe { core::mem::zeroed() }
2002    }
2003}
2004pub const ADRPARM_HELP_CTX: u32 = 0u32;
2005pub const AFT_DISPLAY_BOTH: ADDRESSFORMAT = ADDRESSFORMAT(2i32);
2006pub const AFT_DISPLAY_EMAIL: ADDRESSFORMAT = ADDRESSFORMAT(1i32);
2007pub const AFT_DISPLAY_FRIENDLY: ADDRESSFORMAT = ADDRESSFORMAT(0i32);
2008pub const AFT_RFC822_DECODED: ADDRESSFORMAT = ADDRESSFORMAT(3i32);
2009pub const AFT_RFC822_ENCODED: ADDRESSFORMAT = ADDRESSFORMAT(4i32);
2010pub const AFT_RFC822_TRANSMIT: ADDRESSFORMAT = ADDRESSFORMAT(5i32);
2011pub const AG_DAYS: u32 = 2u32;
2012pub const AG_MONTHS: u32 = 0u32;
2013pub const AG_WEEKS: u32 = 1u32;
2014pub const ANTIVIRUS_SCAN_NO_VIRUS: u32 = 0u32;
2015pub const ANTIVIRUS_SCAN_VIRUS_CLEANED: u32 = 2u32;
2016pub const ANTIVIRUS_SCAN_VIRUS_DELETED: u32 = 3u32;
2017pub const ANTIVIRUS_SCAN_VIRUS_PRESENT: u32 = 1u32;
2018pub const ATTACH_BY_REFERENCE: u32 = 2u32;
2019pub const ATTACH_BY_REF_ONLY: u32 = 4u32;
2020pub const ATTACH_BY_REF_RESOLVE: u32 = 3u32;
2021pub const ATTACH_BY_VALUE: u32 = 1u32;
2022pub const ATTACH_BY_WEBREFERENCE: u32 = 7u32;
2023pub const ATTACH_DIALOG: u32 = 1u32;
2024pub const ATTACH_EMBEDDED_MSG: u32 = 5u32;
2025pub const ATTACH_OLE: u32 = 6u32;
2026pub const AUTO_RESPONSE_SUPPRESS_AUTO_REPLY: u32 = 32u32;
2027pub const AUTO_RESPONSE_SUPPRESS_DR: u32 = 1u32;
2028pub const AUTO_RESPONSE_SUPPRESS_NDR: u32 = 2u32;
2029pub const AUTO_RESPONSE_SUPPRESS_NORFC821FROM: u32 = 64u32;
2030pub const AUTO_RESPONSE_SUPPRESS_NRN: u32 = 8u32;
2031pub const AUTO_RESPONSE_SUPPRESS_OOF: u32 = 16u32;
2032pub const AUTO_RESPONSE_SUPPRESS_RN: u32 = 4u32;
2033pub const BACKGROUND_SEARCH: u32 = 32u32;
2034pub const BEGIN_DEFERRED: u32 = 1u32;
2035pub const BMR_EQZ: u32 = 0u32;
2036pub const BMR_NEZ: u32 = 1u32;
2037#[repr(transparent)]
2038#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2039pub struct BODYLOCATION(pub i32);
2040#[repr(C)]
2041#[derive(Clone, Copy, Debug, PartialEq)]
2042pub struct BODYOFFSETS {
2043    pub cbBoundaryStart: u32,
2044    pub cbHeaderStart: u32,
2045    pub cbBodyStart: u32,
2046    pub cbBodyEnd: u32,
2047}
2048impl Default for BODYOFFSETS {
2049    fn default() -> Self {
2050        unsafe { core::mem::zeroed() }
2051    }
2052}
2053pub const BOOKMARK_BEGINNING: u32 = 0u32;
2054pub const BOOKMARK_CURRENT: u32 = 1u32;
2055pub const BOOKMARK_END: u32 = 2u32;
2056pub const CALLBACK_DISCONTINUE: u32 = 2147483648u32;
2057pub type CALLERRELEASE = Option<
2058    unsafe extern "system" fn(
2059        ulcallerdata: usize,
2060        lptbldata: windows_core::Ref<'_, ITableData>,
2061        lpvue: windows_core::Ref<'_, IMAPITable>,
2062    ),
2063>;
2064pub const CB_OID_1: u32 = 9u32;
2065pub const CB_OID_2: u32 = 10u32;
2066pub const CB_OID_3: u32 = 11u32;
2067pub const CB_OID_4: u32 = 12u32;
2068pub const CB_OID_MAC_BINARY: u32 = 9u32;
2069pub const CB_OID_MIMETAG: u32 = 9u32;
2070pub const CB_OID_OLE: u32 = 9u32;
2071pub const CB_OID_OLE1: u32 = 10u32;
2072pub const CB_OID_OLE1_STORAGE: u32 = 11u32;
2073pub const CB_OID_OLE2: u32 = 10u32;
2074pub const CB_OID_OLE2_STORAGE: u32 = 11u32;
2075pub const CB_OID_TNEF: u32 = 9u32;
2076pub const CCHMAX_CID: u32 = 255u32;
2077pub const CCHMAX_CSET_NAME: u32 = 128u32;
2078pub const CCHMAX_FACE_NAME: u32 = 128u32;
2079pub const CCHMAX_HEADER_LINE: u32 = 1000u32;
2080pub const CCHMAX_INTERNET_DATE: u32 = 50u32;
2081pub const CCHMAX_LANG_NAME: u32 = 128u32;
2082pub const CCHMAX_MID: u32 = 255u32;
2083pub const CDID_EMAIL: CERTDATAID = CERTDATAID(0i32);
2084pub const CDID_MAX: CERTDATAID = CERTDATAID(1i32);
2085#[repr(transparent)]
2086#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2087pub struct CERTDATAID(pub i32);
2088pub const CERTIFICATE_CHAIN_TOO_LONG: CERTSTATE = CERTSTATE(3i32);
2089pub const CERTIFICATE_CRL_LISTED: CERTSTATE = CERTSTATE(5i32);
2090pub const CERTIFICATE_ERROR: CERTSTATE = CERTSTATE(8i32);
2091pub const CERTIFICATE_EXPIRED: CERTSTATE = CERTSTATE(2i32);
2092pub const CERTIFICATE_INVALID: CERTSTATE = CERTSTATE(7i32);
2093pub const CERTIFICATE_MISSING_ISSUER: CERTSTATE = CERTSTATE(4i32);
2094pub const CERTIFICATE_NOPRINT: CERTSTATE = CERTSTATE(9i32);
2095pub const CERTIFICATE_NOT_PRESENT: CERTSTATE = CERTSTATE(1i32);
2096pub const CERTIFICATE_NOT_TRUSTED: CERTSTATE = CERTSTATE(6i32);
2097pub const CERTIFICATE_OK: CERTSTATE = CERTSTATE(0i32);
2098pub const CERTIFICATE_UNKNOWN: CERTSTATE = CERTSTATE(10i32);
2099#[repr(transparent)]
2100#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2101pub struct CERTNAMETYPE(pub i32);
2102#[repr(transparent)]
2103#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2104pub struct CERTSTATE(pub i32);
2105#[repr(transparent)]
2106#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2107pub struct CHARSETTYPE(pub i32);
2108pub const CHARSET_BODY: CHARSETTYPE = CHARSETTYPE(0i32);
2109pub const CHARSET_HEADER: CHARSETTYPE = CHARSETTYPE(1i32);
2110pub const CHARSET_WEB: CHARSETTYPE = CHARSETTYPE(2i32);
2111pub const CHECK_SENDER: u32 = 1u32;
2112pub const CLEAR_NRN_PENDING: u32 = 64u32;
2113pub const CLEAR_READ_FLAG: u32 = 4u32;
2114pub const CLEAR_RN_PENDING: u32 = 32u32;
2115pub const CLSID_IMimeHtmlProtocol: windows_core::GUID =
2116    windows_core::GUID::from_u128(0x05300401_bcbc_11d0_85e3_00c04fd85ab4);
2117pub const CLSID_IVirtualStream: windows_core::GUID =
2118    windows_core::GUID::from_u128(0xfd853cdf_7f86_11d0_8252_00c04fd85ab4);
2119pub const CLSID_MimeEdit: windows_core::GUID =
2120    windows_core::GUID::from_u128(0x1c82ead9_508e_11d1_8dcf_00c04fb951f9);
2121pub const CLSID_OlkAccountManager: windows_core::GUID =
2122    windows_core::GUID::from_u128(0xed475410_b0d6_11d2_8c3b_00104b2a6676);
2123pub const CLSID_OlkAddressBook: windows_core::GUID =
2124    windows_core::GUID::from_u128(0xed475419_b0d6_11d2_8c3b_00104b2a6676);
2125pub const CLSID_OlkHotmailAccount: windows_core::GUID =
2126    windows_core::GUID::from_u128(0x4db5cbf0_3b77_4852_bc8e_bb81908861f3);
2127pub const CLSID_OlkIMAP4Account: windows_core::GUID =
2128    windows_core::GUID::from_u128(0xed475412_b0d6_11d2_8c3b_00104b2a6676);
2129pub const CLSID_OlkLDAPAccount: windows_core::GUID =
2130    windows_core::GUID::from_u128(0x4db5cbf2_3b77_4852_bc8e_bb81908861f3);
2131pub const CLSID_OlkMAPIAccount: windows_core::GUID =
2132    windows_core::GUID::from_u128(0xed475414_b0d6_11d2_8c3b_00104b2a6676);
2133pub const CLSID_OlkMail: windows_core::GUID =
2134    windows_core::GUID::from_u128(0xed475418_b0d6_11d2_8c3b_00104b2a6676);
2135pub const CLSID_OlkPOP3Account: windows_core::GUID =
2136    windows_core::GUID::from_u128(0xed475411_b0d6_11d2_8c3b_00104b2a6676);
2137pub const CLSID_OlkStore: windows_core::GUID =
2138    windows_core::GUID::from_u128(0xed475420_b0d6_11d2_8c3b_00104b2a6676);
2139pub const CMDSETID_MimeEdit: windows_core::GUID =
2140    windows_core::GUID::from_u128(0x1c82eada_508e_11d1_8dcf_00c04fb951f9);
2141pub const CMDSETID_MimeEditHost: windows_core::GUID =
2142    windows_core::GUID::from_u128(0x1c82eadb_508e_11d1_8dcf_00c04fb951f9);
2143#[repr(C)]
2144#[derive(Clone, Copy, Debug, PartialEq)]
2145pub struct CODEPAGEINFO {
2146    pub dwMask: u32,
2147    pub cpiCodePage: u32,
2148    pub fIsValidCodePage: windows_core::BOOL,
2149    pub ulMaxCharSize: u32,
2150    pub fInternetCP: windows_core::BOOL,
2151    pub cpiFamily: u32,
2152    pub szName: [i8; 128],
2153    pub szBodyCset: [i8; 128],
2154    pub szHeaderCset: [i8; 128],
2155    pub szWebCset: [i8; 128],
2156    pub szFixedFont: [i8; 128],
2157    pub szVariableFont: [i8; 128],
2158    pub ietNewsDefault: ENCODINGTYPE,
2159    pub ietMailDefault: ENCODINGTYPE,
2160    pub dwReserved1: u32,
2161}
2162impl Default for CODEPAGEINFO {
2163    fn default() -> Self {
2164        unsafe { core::mem::zeroed() }
2165    }
2166}
2167pub const COMMIT_ONLYIFDIRTY: u32 = 1u32;
2168pub const COMMIT_REUSESTORAGE: u32 = 2u32;
2169pub const COMMIT_SMIMETRANSFERENCODE: u32 = 4u32;
2170pub const CONFIG_CHANGED: u32 = 1048576u32;
2171pub const CONFIG_NO_AUTO_DETECT: u32 = 16u32;
2172pub const CONFIG_OST_CACHE_ONLY: u32 = 32u32;
2173pub const CONFIG_PROMPT_FOR_CREDENTIALS: u32 = 8u32;
2174pub const CONFIG_SERVICE: u32 = 1u32;
2175pub const CONFIG_SHOW_CONNECT_UI: u32 = 4u32;
2176pub const CONFIG_SHOW_STARTUP_UI: u32 = 2u32;
2177pub const CONNECT_ANONYMOUS_ACCESS: u32 = 16u32;
2178pub const CONNECT_NO_ADDRESS_RESOLUTION: u32 = 64u32;
2179pub const CONNECT_NO_NOTIFICATIONS: u32 = 32u32;
2180pub const CONNECT_NO_RPC_ENCRYPTION: u32 = 2u32;
2181pub const CONNECT_NO_TABLE_NOTIFICATIONS: u32 = 32u32;
2182pub const CONNECT_NO_UNDER_COVER_CONNECTION: u32 = 8u32;
2183pub const CONNECT_RESTORE_DATABASE: u32 = 128u32;
2184pub const CONNECT_USE_ADMIN_PRIVILEGE: u32 = 1u32;
2185pub const CONNECT_USE_SEPARATE_CONNECTION: u32 = 4u32;
2186pub const CONVENIENT_DEPTH: u32 = 1u32;
2187pub const COPY_SUBFOLDERS: u32 = 16u32;
2188pub const COUNTRY_PAD: u32 = 0u32;
2189pub const CP_ACP: u32 = 0u32;
2190pub const CP_ISO2022JPESC: u32 = 50221u32;
2191pub const CP_ISO2022JPSIO: u32 = 50222u32;
2192pub const CP_JAUTODETECT: u32 = 50932u32;
2193pub const CP_KAUTODETECT: u32 = 50949u32;
2194pub const CP_OEMCP: u32 = 1u32;
2195pub const CP_UNICODE: u32 = 1200u32;
2196pub const CP_USASCII: u32 = 1252u32;
2197pub const CREATE_ALWAYS: u32 = 2u32;
2198pub const CREATE_CHECK_DUP_LOOSE: u32 = 2u32;
2199pub const CREATE_CHECK_DUP_STRICT: u32 = 1u32;
2200pub const CREATE_NEW: u32 = 1u32;
2201pub const CREATE_REPLACE: u32 = 4u32;
2202#[repr(transparent)]
2203#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2204pub struct CSETAPPLYTYPE(pub i32);
2205pub const CSET_APPLY_ALL: CSETAPPLYTYPE = CSETAPPLYTYPE(1i32);
2206pub const CSET_APPLY_TAG_ALL: CSETAPPLYTYPE = CSETAPPLYTYPE(2i32);
2207pub const CSET_APPLY_UNTAGGED: CSETAPPLYTYPE = CSETAPPLYTYPE(0i32);
2208pub const CURRENT_SPI_VERSION: i32 = 65552i32;
2209pub const DEF_ALLOW_8BIT_HEADER: u32 = 0u32;
2210pub const DEF_BODY_REMOVE_NBSP: u32 = 1u32;
2211pub const DEF_CAN_INLINE_TEXT_BODIES: u32 = 0u32;
2212pub const DEF_CBMAX_BODY_LINE: u32 = 74u32;
2213pub const DEF_CBMAX_HEADER_LINE: u32 = 1000u32;
2214pub const DEF_CLEANUP_TREE_ON_SAVE: u32 = 1u32;
2215pub const DEF_DBCS_ESCAPE_IS_8BIT: u32 = 0u32;
2216pub const DEF_DECODE_RFC1154: u32 = 0u32;
2217pub const DEF_ENCRYPTION_ALG_ID: u32 = 26114u32;
2218pub const DEF_GENERATE_MESSAGE_ID: u32 = 0u32;
2219pub const DEF_HANDSOFF_ONSAVE: u32 = 0u32;
2220pub const DEF_HASH_ALG_ID: u32 = 32772u32;
2221pub const DEF_HIDE_TNEF_ATTACHMENTS: u32 = 1u32;
2222pub const DEF_INCLUDE_SENDER_CERT: u32 = 0u32;
2223pub const DEF_LOAD_USE_BIND_FILE: u32 = 0u32;
2224pub const DEF_NO_DEFAULT_CNTTYPE: u32 = 0u32;
2225pub const DEF_SAVEBODY_KEEPBOUNDARY: u32 = 0u32;
2226pub const DEF_SECURITY_IGNOREMASK: u32 = 0u32;
2227pub const DEF_SHOW_MACBINARY: u32 = 0u32;
2228pub const DEF_SUPPORT_EXTERNAL_BODY: u32 = 0u32;
2229pub const DEF_WRAP_BODY_TEXT: u32 = 1u32;
2230pub const DEINIT_HURRY: u32 = 2147483648u32;
2231pub const DEINIT_NORMAL: u32 = 1u32;
2232pub const DELETE_CHILDREN_ONLY: u32 = 2u32;
2233pub const DELETE_HARD_DELETE: u32 = 16u32;
2234pub const DELETE_PROMOTE_CHILDREN: u32 = 1u32;
2235pub const DEL_ASSOCIATED: u32 = 8u32;
2236pub const DEL_FOLDERS: u32 = 4u32;
2237pub const DEL_MESSAGES: u32 = 1u32;
2238pub const DIALOG_ALLOW_CANCEL: u32 = 128u32;
2239pub const DIALOG_ATTACH: u32 = 8u32;
2240pub const DIALOG_CONFIRM_CANCEL: u32 = 256u32;
2241pub const DIALOG_COPY: u32 = 32u32;
2242pub const DIALOG_DELETE: u32 = 64u32;
2243pub const DIALOG_FOLDER: u32 = 1u32;
2244pub const DIALOG_MESSAGE: u32 = 2u32;
2245pub const DIALOG_MODAL: u32 = 1u32;
2246pub const DIALOG_MOVE: u32 = 16u32;
2247pub const DIALOG_OPTIONS: u32 = 4u32;
2248pub const DIALOG_PROP: u32 = 4u32;
2249pub const DIALOG_SDI: u32 = 2u32;
2250pub const DIR_BACKWARD: u32 = 1u32;
2251pub const DO_NOT_SEND_TO_ORIGINATOR: u32 = 1u32;
2252#[repr(C)]
2253#[derive(Clone, Copy, Debug, PartialEq)]
2254pub struct DTBLBUTTON {
2255    pub ulbLpszLabel: u32,
2256    pub ulFlags: u32,
2257    pub ulPRControl: u32,
2258}
2259impl Default for DTBLBUTTON {
2260    fn default() -> Self {
2261        unsafe { core::mem::zeroed() }
2262    }
2263}
2264#[repr(C)]
2265#[derive(Clone, Copy, Debug, PartialEq)]
2266pub struct DTBLCHECKBOX {
2267    pub ulbLpszLabel: u32,
2268    pub ulFlags: u32,
2269    pub ulPRPropertyName: u32,
2270}
2271impl Default for DTBLCHECKBOX {
2272    fn default() -> Self {
2273        unsafe { core::mem::zeroed() }
2274    }
2275}
2276#[repr(C)]
2277#[derive(Clone, Copy, Debug, PartialEq)]
2278pub struct DTBLCOMBOBOX {
2279    pub ulbLpszCharsAllowed: u32,
2280    pub ulFlags: u32,
2281    pub ulNumCharsAllowed: u32,
2282    pub ulPRPropertyName: u32,
2283    pub ulPRTableName: u32,
2284}
2285impl Default for DTBLCOMBOBOX {
2286    fn default() -> Self {
2287        unsafe { core::mem::zeroed() }
2288    }
2289}
2290#[repr(C)]
2291#[derive(Clone, Copy, Debug, PartialEq)]
2292pub struct DTBLDDLBX {
2293    pub ulFlags: u32,
2294    pub ulPRDisplayProperty: u32,
2295    pub ulPRSetProperty: u32,
2296    pub ulPRTableName: u32,
2297}
2298impl Default for DTBLDDLBX {
2299    fn default() -> Self {
2300        unsafe { core::mem::zeroed() }
2301    }
2302}
2303#[repr(C)]
2304#[derive(Clone, Copy, Debug, PartialEq)]
2305pub struct DTBLEDIT {
2306    pub ulbLpszCharsAllowed: u32,
2307    pub ulFlags: u32,
2308    pub ulNumCharsAllowed: u32,
2309    pub ulPropTag: u32,
2310}
2311impl Default for DTBLEDIT {
2312    fn default() -> Self {
2313        unsafe { core::mem::zeroed() }
2314    }
2315}
2316#[repr(C)]
2317#[derive(Clone, Copy, Debug, PartialEq)]
2318pub struct DTBLGROUPBOX {
2319    pub ulbLpszLabel: u32,
2320    pub ulFlags: u32,
2321}
2322impl Default for DTBLGROUPBOX {
2323    fn default() -> Self {
2324        unsafe { core::mem::zeroed() }
2325    }
2326}
2327#[repr(C)]
2328#[derive(Clone, Copy, Debug, PartialEq)]
2329pub struct DTBLLABEL {
2330    pub ulbLpszLabelName: u32,
2331    pub ulFlags: u32,
2332}
2333impl Default for DTBLLABEL {
2334    fn default() -> Self {
2335        unsafe { core::mem::zeroed() }
2336    }
2337}
2338#[repr(C)]
2339#[derive(Clone, Copy, Debug, PartialEq)]
2340pub struct DTBLLBX {
2341    pub ulFlags: u32,
2342    pub ulPRSetProperty: u32,
2343    pub ulPRTableName: u32,
2344}
2345impl Default for DTBLLBX {
2346    fn default() -> Self {
2347        unsafe { core::mem::zeroed() }
2348    }
2349}
2350#[repr(C)]
2351#[derive(Clone, Copy, Debug, PartialEq)]
2352pub struct DTBLMVDDLBX {
2353    pub ulFlags: u32,
2354    pub ulMVPropTag: u32,
2355}
2356impl Default for DTBLMVDDLBX {
2357    fn default() -> Self {
2358        unsafe { core::mem::zeroed() }
2359    }
2360}
2361#[repr(C)]
2362#[derive(Clone, Copy, Debug, PartialEq)]
2363pub struct DTBLMVLISTBOX {
2364    pub ulFlags: u32,
2365    pub ulMVPropTag: u32,
2366}
2367impl Default for DTBLMVLISTBOX {
2368    fn default() -> Self {
2369        unsafe { core::mem::zeroed() }
2370    }
2371}
2372#[repr(C)]
2373#[derive(Clone, Copy, Debug, PartialEq)]
2374pub struct DTBLPAGE {
2375    pub ulbLpszLabel: u32,
2376    pub ulFlags: u32,
2377    pub ulbLpszComponent: u32,
2378    pub ulContext: u32,
2379}
2380impl Default for DTBLPAGE {
2381    fn default() -> Self {
2382        unsafe { core::mem::zeroed() }
2383    }
2384}
2385#[repr(C)]
2386#[derive(Clone, Copy, Debug, PartialEq)]
2387pub struct DTBLRADIOBUTTON {
2388    pub ulbLpszLabel: u32,
2389    pub ulFlags: u32,
2390    pub ulcButtons: u32,
2391    pub ulPropTag: u32,
2392    pub lReturnValue: i32,
2393}
2394impl Default for DTBLRADIOBUTTON {
2395    fn default() -> Self {
2396        unsafe { core::mem::zeroed() }
2397    }
2398}
2399#[repr(C)]
2400#[derive(Clone, Copy)]
2401pub struct DTCTL {
2402    pub ulCtlType: u32,
2403    pub ulCtlFlags: u32,
2404    pub lpbNotif: *mut u8,
2405    pub cbNotif: u32,
2406    pub lpszFilter: *mut i8,
2407    pub ulItemID: u32,
2408    pub ctl: DTCTL_0,
2409}
2410impl Default for DTCTL {
2411    fn default() -> Self {
2412        unsafe { core::mem::zeroed() }
2413    }
2414}
2415#[repr(C)]
2416#[derive(Clone, Copy)]
2417pub union DTCTL_0 {
2418    pub lpv: *mut core::ffi::c_void,
2419    pub lplabel: *mut DTBLLABEL,
2420    pub lpedit: *mut DTBLEDIT,
2421    pub lplbx: *mut DTBLLBX,
2422    pub lpcombobox: *mut DTBLCOMBOBOX,
2423    pub lpddlbx: *mut DTBLDDLBX,
2424    pub lpcheckbox: *mut DTBLCHECKBOX,
2425    pub lpgroupbox: *mut DTBLGROUPBOX,
2426    pub lpbutton: *mut DTBLBUTTON,
2427    pub lpradiobutton: *mut DTBLRADIOBUTTON,
2428    pub lpmvlbx: *mut DTBLMVLISTBOX,
2429    pub lpmvddlbx: *mut DTBLMVDDLBX,
2430    pub lppage: *mut DTBLPAGE,
2431}
2432impl Default for DTCTL_0 {
2433    fn default() -> Self {
2434        unsafe { core::mem::zeroed() }
2435    }
2436}
2437pub const DTCT_BUTTON: u32 = 7u32;
2438pub const DTCT_CHECKBOX: u32 = 5u32;
2439pub const DTCT_COMBOBOX: u32 = 3u32;
2440pub const DTCT_DDLBX: u32 = 4u32;
2441pub const DTCT_EDIT: u32 = 1u32;
2442pub const DTCT_GROUPBOX: u32 = 6u32;
2443pub const DTCT_LABEL: u32 = 0u32;
2444pub const DTCT_LBX: u32 = 2u32;
2445pub const DTCT_MVDDLBX: u32 = 12u32;
2446pub const DTCT_MVLISTBOX: u32 = 11u32;
2447pub const DTCT_PAGE: u32 = 8u32;
2448pub const DTCT_RADIOBUTTON: u32 = 9u32;
2449pub const DTE_FLAG_ACL_CAPABLE: u32 = 1073741824u32;
2450pub const DTE_FLAG_REMOTE_VALID: u32 = 2147483648u32;
2451pub const DTE_MASK_LOCAL: u32 = 255u32;
2452pub const DTE_MASK_REMOTE: u32 = 65280u32;
2453#[repr(C)]
2454#[derive(Clone, Copy)]
2455pub struct DTPAGE {
2456    pub cctl: u32,
2457    pub lpszResourceName: *mut i8,
2458    pub Anonymous: DTPAGE_0,
2459    pub lpctl: *mut DTCTL,
2460}
2461impl Default for DTPAGE {
2462    fn default() -> Self {
2463        unsafe { core::mem::zeroed() }
2464    }
2465}
2466#[repr(C)]
2467#[derive(Clone, Copy)]
2468pub union DTPAGE_0 {
2469    pub lpszComponent: *mut i8,
2470    pub ulItemID: u32,
2471}
2472impl Default for DTPAGE_0 {
2473    fn default() -> Self {
2474        unsafe { core::mem::zeroed() }
2475    }
2476}
2477pub const DT_ACCEPT_DBCS: u32 = 32u32;
2478pub const DT_AGENT: u32 = 3u32;
2479pub const DT_DISTLIST: u32 = 1u32;
2480pub const DT_EDITABLE: u32 = 2u32;
2481pub const DT_EQUIPMENT: u32 = 8u32;
2482pub const DT_FOLDER: u32 = 16777216u32;
2483pub const DT_FOLDER_LINK: u32 = 33554432u32;
2484pub const DT_FOLDER_SPECIAL: u32 = 67108864u32;
2485pub const DT_FORUM: u32 = 2u32;
2486pub const DT_GLOBAL: u32 = 131072u32;
2487pub const DT_LOCAL: u32 = 196608u32;
2488pub const DT_MAILUSER: u32 = 0u32;
2489pub const DT_MODIFIABLE: u32 = 65536u32;
2490pub const DT_MULTILINE: u32 = 1u32;
2491pub const DT_NOT_SPECIFIC: u32 = 327680u32;
2492pub const DT_ORGANIZATION: u32 = 4u32;
2493pub const DT_PASSWORD_EDIT: u32 = 16u32;
2494pub const DT_PRIVATE_DISTLIST: u32 = 5u32;
2495pub const DT_REMOTE_MAILUSER: u32 = 6u32;
2496pub const DT_REQUIRED: u32 = 4u32;
2497pub const DT_ROOM: u32 = 7u32;
2498pub const DT_SEC_DISTLIST: u32 = 9u32;
2499pub const DT_SET_IMMEDIATE: u32 = 8u32;
2500pub const DT_SET_SELECTION: u32 = 64u32;
2501pub const DT_WAN: u32 = 262144u32;
2502pub const EBF_COMMITIFDIRTY: u32 = 131072u32;
2503pub const EBF_MASK: u32 = 4294901760u32;
2504pub const EBF_RECURSE: u32 = 65536u32;
2505pub const EDITOR_FORMAT_DONTKNOW: u32 = 0u32;
2506pub const EDITOR_FORMAT_HTML: u32 = 2u32;
2507pub const EDITOR_FORMAT_PLAINTEXT: u32 = 1u32;
2508pub const EDITOR_FORMAT_RTF: u32 = 3u32;
2509pub const EDK_RULES_VERSION: u32 = 1u32;
2510pub const EMS_AB_ADDRESS_LOOKUP: u32 = 1u32;
2511#[repr(transparent)]
2512#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2513pub struct ENCODINGTYPE(pub i32);
2514pub const END_DONT_RESEND: u32 = 262144u32;
2515pub const END_RESEND_LATER: u32 = 131072u32;
2516pub const END_RESEND_NOW: u32 = 65536u32;
2517#[repr(C)]
2518#[derive(Clone, Copy, Debug, PartialEq)]
2519pub struct ENTRYID {
2520    pub abFlags: [u8; 4],
2521    pub ab: [u8; 1],
2522}
2523impl Default for ENTRYID {
2524    fn default() -> Self {
2525        unsafe { core::mem::zeroed() }
2526    }
2527}
2528#[repr(C)]
2529#[derive(Clone, Copy, Debug, PartialEq)]
2530pub struct ENUMHEADERROW {
2531    pub hRow: *mut HHEADERROW__,
2532    pub pszHeader: windows_core::PSTR,
2533    pub pszData: windows_core::PSTR,
2534    pub cchData: u32,
2535    pub dwReserved: u32,
2536}
2537impl Default for ENUMHEADERROW {
2538    fn default() -> Self {
2539        unsafe { core::mem::zeroed() }
2540    }
2541}
2542#[repr(C)]
2543#[derive(Clone, Copy, Debug, PartialEq)]
2544pub struct ENUMPROPERTY {
2545    pub pszName: windows_core::PSTR,
2546    pub hRow: *mut HHEADERROW__,
2547    pub dwPropId: u32,
2548}
2549impl Default for ENUMPROPERTY {
2550    fn default() -> Self {
2551        unsafe { core::mem::zeroed() }
2552    }
2553}
2554pub const ENV_BLANK: u32 = 0u32;
2555pub const ENV_MSG_EXT: u32 = 2u32;
2556pub const ENV_RECIP_EXT: u32 = 4u32;
2557pub const ENV_RECIP_NUM: u32 = 1u32;
2558pub const EPF_NONAME: u32 = 1u32;
2559#[repr(C)]
2560#[derive(Clone, Copy, Debug, PartialEq)]
2561pub struct ERROR_NOTIFICATION {
2562    pub cbEntryID: u32,
2563    pub lpEntryID: *mut ENTRYID,
2564    pub scode: i32,
2565    pub ulFlags: u32,
2566    pub lpMAPIError: *mut MAPIERROR,
2567}
2568impl Default for ERROR_NOTIFICATION {
2569    fn default() -> Self {
2570        unsafe { core::mem::zeroed() }
2571    }
2572}
2573pub const EXCHANGE_RM_SET_EXPLICIT_SD: u32 = 1u32;
2574pub const EXCHIVERB_FORWARD: u32 = 104u32;
2575pub const EXCHIVERB_OPEN: u32 = 0u32;
2576pub const EXCHIVERB_PRINT: u32 = 105u32;
2577pub const EXCHIVERB_REPLYTOALL: u32 = 103u32;
2578pub const EXCHIVERB_REPLYTOFOLDER: u32 = 108u32;
2579pub const EXCHIVERB_REPLYTOSENDER: u32 = 102u32;
2580pub const EXCHIVERB_RESERVED_COMPOSE: u32 = 100u32;
2581pub const EXCHIVERB_RESERVED_DELIVERY: u32 = 107u32;
2582pub const EXCHIVERB_RESERVED_OPEN: u32 = 101u32;
2583pub const EXCHIVERB_SAVEAS: u32 = 106u32;
2584#[repr(C)]
2585#[derive(Clone, Copy, Debug, PartialEq)]
2586pub struct EXTENDED_NOTIFICATION {
2587    pub ulEvent: u32,
2588    pub cb: u32,
2589    pub pbEventParameters: *mut u8,
2590}
2591impl Default for EXTENDED_NOTIFICATION {
2592    fn default() -> Self {
2593        unsafe { core::mem::zeroed() }
2594    }
2595}
2596pub const E_ACCT_NOT_FOUND: u32 = 2148303105u32;
2597pub const E_ACCT_WRONG_SORT_ORDER: u32 = 2148303109u32;
2598pub const E_OLK_ALREADY_INITIALIZED: u32 = 2148302850u32;
2599pub const E_OLK_NOT_INITIALIZED: u32 = 2148302853u32;
2600pub const E_OLK_PARAM_NOT_SUPPORTED: u32 = 2148302851u32;
2601pub const E_OLK_PROP_READ_ONLY: u32 = 2148302861u32;
2602pub const E_OLK_REGISTRY: u32 = 2148302850u32;
2603pub const FACILITY_INTERNET: u32 = 12u32;
2604pub type FGETCOMPONENTPATH = Option<
2605    unsafe extern "system" fn(
2606        szcomponent: *mut i8,
2607        szqualifier: *mut i8,
2608        szdllpath: *mut i8,
2609        cchbuffersize: u32,
2610        finstall: windows_core::BOOL,
2611    ) -> windows_core::BOOL,
2612>;
2613pub const FILE_ATTRIBUTE_ARCHIVE: u32 = 32u32;
2614pub const FILE_ATTRIBUTE_DIRECTORY: u32 = 16u32;
2615pub const FILE_ATTRIBUTE_HIDDEN: u32 = 2u32;
2616pub const FILE_ATTRIBUTE_NORMAL: u32 = 128u32;
2617pub const FILE_ATTRIBUTE_READONLY: u32 = 1u32;
2618pub const FILE_ATTRIBUTE_SYSTEM: u32 = 4u32;
2619pub const FILE_ATTRIBUTE_TEMPORARY: u32 = 256u32;
2620pub const FILE_FLAG_RANDOM_ACCESS: u32 = 268435456u32;
2621pub const FILE_FLAG_SEQUENTIAL_SCAN: u32 = 134217728u32;
2622pub const FILE_FLAG_WRITE_THROUGH: u32 = 2147483648u32;
2623pub const FILL_ENTRY: u32 = 1u32;
2624#[repr(C)]
2625#[derive(Clone, Copy, Debug, PartialEq)]
2626pub struct FINDBODY {
2627    pub pszPriType: windows_core::PSTR,
2628    pub pszSubType: windows_core::PSTR,
2629    pub dwReserved: u32,
2630}
2631impl Default for FINDBODY {
2632    fn default() -> Self {
2633        unsafe { core::mem::zeroed() }
2634    }
2635}
2636#[repr(C)]
2637#[derive(Clone, Copy, Debug, PartialEq)]
2638pub struct FINDHEADER {
2639    pub pszHeader: windows_core::PCSTR,
2640    pub dwReserved: u32,
2641}
2642impl Default for FINDHEADER {
2643    fn default() -> Self {
2644        unsafe { core::mem::zeroed() }
2645    }
2646}
2647#[repr(C)]
2648#[derive(Clone, Copy, Debug, PartialEq)]
2649pub struct FLATENTRY {
2650    pub cb: u32,
2651    pub abEntry: [u8; 1],
2652}
2653impl Default for FLATENTRY {
2654    fn default() -> Self {
2655        unsafe { core::mem::zeroed() }
2656    }
2657}
2658#[repr(C)]
2659#[derive(Clone, Copy, Debug, PartialEq)]
2660pub struct FLATENTRYLIST {
2661    pub cEntries: u32,
2662    pub cbEntries: u32,
2663    pub abEntries: [u8; 1],
2664}
2665impl Default for FLATENTRYLIST {
2666    fn default() -> Self {
2667        unsafe { core::mem::zeroed() }
2668    }
2669}
2670#[repr(C)]
2671#[derive(Clone, Copy, Debug, PartialEq)]
2672pub struct FLATMTSIDLIST {
2673    pub cMTSIDs: u32,
2674    pub cbMTSIDs: u32,
2675    pub abMTSIDs: [u8; 1],
2676}
2677impl Default for FLATMTSIDLIST {
2678    fn default() -> Self {
2679        unsafe { core::mem::zeroed() }
2680    }
2681}
2682pub const FLDSTATUS_DELMARKED: u32 = 8u32;
2683pub const FLDSTATUS_HIDDEN: u32 = 4u32;
2684pub const FLDSTATUS_HIGHLIGHTED: u32 = 1u32;
2685pub const FLDSTATUS_TAGGED: u32 = 2u32;
2686pub const FLUSH_ASYNC_OK: u32 = 32u32;
2687pub const FLUSH_DOWNLOAD: u32 = 4u32;
2688pub const FLUSH_FORCE: u32 = 8u32;
2689pub const FLUSH_NO_UI: u32 = 16u32;
2690pub const FLUSH_UPLOAD: u32 = 2u32;
2691pub const FL_FULLSTRING: u32 = 0u32;
2692pub const FL_IGNORECASE: u32 = 65536u32;
2693pub const FL_IGNORENONSPACE: u32 = 131072u32;
2694pub const FL_LOOSE: u32 = 262144u32;
2695pub const FL_PREFIX: u32 = 2u32;
2696pub const FL_SUBSTRING: u32 = 1u32;
2697#[repr(transparent)]
2698#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2699pub struct FNTSYSTYPE(pub i32);
2700pub const FNT_SYS_ICON: FNTSYSTYPE = FNTSYSTYPE(0i32);
2701pub const FNT_SYS_ICON_BOLD: FNTSYSTYPE = FNTSYSTYPE(1i32);
2702pub const FNT_SYS_ICON_STRIKEOUT: FNTSYSTYPE = FNTSYSTYPE(3i32);
2703pub const FNT_SYS_LAST: FNTSYSTYPE = FNTSYSTYPE(4i32);
2704pub const FNT_SYS_MENU: FNTSYSTYPE = FNTSYSTYPE(2i32);
2705pub const FOLDER_COMMON_VIEWS_VALID: u32 = 64u32;
2706pub const FOLDER_DIALOG: u32 = 2u32;
2707pub const FOLDER_FINDER_VALID: u32 = 128u32;
2708pub const FOLDER_GENERIC: u32 = 1u32;
2709pub const FOLDER_IPM_INBOX_VALID: u32 = 2u32;
2710pub const FOLDER_IPM_OUTBOX_VALID: u32 = 4u32;
2711pub const FOLDER_IPM_SENTMAIL_VALID: u32 = 16u32;
2712pub const FOLDER_IPM_SUBTREE_VALID: u32 = 1u32;
2713pub const FOLDER_IPM_WASTEBASKET_VALID: u32 = 8u32;
2714pub const FOLDER_MOVE: u32 = 1u32;
2715pub const FOLDER_ROOT: u32 = 0u32;
2716pub const FOLDER_SEARCH: u32 = 2u32;
2717pub const FOLDER_VIEWS_VALID: u32 = 32u32;
2718pub const FORCE_SAVE: u32 = 4u32;
2719pub const FORCE_SUBMIT: u32 = 1u32;
2720pub const FORCE_XP_CONNECT: u32 = 262144u32;
2721pub const FORCE_XP_DISCONNECT: u32 = 524288u32;
2722pub const FOREGROUND_SEARCH: u32 = 16u32;
2723#[repr(C)]
2724#[derive(Clone, Copy, Debug, PartialEq)]
2725pub struct FORMPRINTSETUP {
2726    pub ulFlags: u32,
2727    pub hDevMode: windows::Win32::Foundation::HGLOBAL,
2728    pub hDevNames: windows::Win32::Foundation::HGLOBAL,
2729    pub ulFirstPageNumber: u32,
2730    pub fPrintAttachments: u32,
2731}
2732impl Default for FORMPRINTSETUP {
2733    fn default() -> Self {
2734        unsafe { core::mem::zeroed() }
2735    }
2736}
2737pub const FORMPROPSET_INTERSECTION: u32 = 1u32;
2738pub const FORMPROPSET_UNION: u32 = 0u32;
2739pub const FPST_ENUM_PROP: u32 = 1u32;
2740pub const FPST_VANILLA: u32 = 0u32;
2741pub const FWD_AS_ATTACHMENT: u32 = 4u32;
2742pub const FWD_DO_NOT_MUNGE_MSG: u32 = 2u32;
2743pub const FWD_PRESERVE_SENDER: u32 = 1u32;
2744#[repr(C)]
2745#[derive(Clone, Copy, Debug, PartialEq)]
2746pub struct FlagList {
2747    pub cFlags: u32,
2748    pub ulFlag: [u32; 1],
2749}
2750impl Default for FlagList {
2751    fn default() -> Self {
2752        unsafe { core::mem::zeroed() }
2753    }
2754}
2755pub const GENERATE_RECEIPT_ONLY: u32 = 16u32;
2756#[repr(C)]
2757#[derive(Clone, Copy, Debug, PartialEq)]
2758pub struct HADDRESS__ {
2759    pub unused: u32,
2760}
2761impl Default for HADDRESS__ {
2762    fn default() -> Self {
2763        unsafe { core::mem::zeroed() }
2764    }
2765}
2766#[repr(C)]
2767#[derive(Clone, Copy, Debug, PartialEq)]
2768pub struct HBODY__ {
2769    pub unused: u32,
2770}
2771impl Default for HBODY__ {
2772    fn default() -> Self {
2773        unsafe { core::mem::zeroed() }
2774    }
2775}
2776#[repr(C)]
2777#[derive(Clone, Copy, Debug, PartialEq)]
2778pub struct HCHARSET__ {
2779    pub unused: u32,
2780}
2781impl Default for HCHARSET__ {
2782    fn default() -> Self {
2783        unsafe { core::mem::zeroed() }
2784    }
2785}
2786#[repr(C)]
2787#[derive(Clone, Copy, Debug, PartialEq)]
2788pub struct HEADERROWINFO {
2789    pub dwRowNumber: u32,
2790    pub cboffStart: u32,
2791    pub cboffColon: u32,
2792    pub cboffEnd: u32,
2793}
2794impl Default for HEADERROWINFO {
2795    fn default() -> Self {
2796        unsafe { core::mem::zeroed() }
2797    }
2798}
2799#[repr(transparent)]
2800#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2801pub struct HEADERTABLEFLAGS(pub i32);
2802pub const HFRMREG_DEFAULT: u32 = 0u32;
2803pub const HFRMREG_FOLDER: u32 = 3u32;
2804pub const HFRMREG_LOCAL: u32 = 1u32;
2805pub const HFRMREG_PERSONAL: u32 = 2u32;
2806pub const HF_NO_DUPLICATES: u32 = 1u32;
2807#[repr(C)]
2808#[derive(Clone, Copy, Debug, PartialEq)]
2809pub struct HHEADERROW__ {
2810    pub unused: u32,
2811}
2812impl Default for HHEADERROW__ {
2813    fn default() -> Self {
2814        unsafe { core::mem::zeroed() }
2815    }
2816}
2817pub const HOOK_CANCEL: u32 = 2u32;
2818pub const HOOK_DELETE: u32 = 1u32;
2819pub const HOOK_INBOUND: u32 = 512u32;
2820pub const HOOK_OUTBOUND: u32 = 1024u32;
2821pub type HPPROVIDERINIT = Option<
2822    unsafe extern "system" fn(
2823        lpsession: windows_core::Ref<'_, IMAPISession>,
2824        hinstance: windows::Win32::Foundation::HINSTANCE,
2825        lpallocatebuffer: LPALLOCATEBUFFER,
2826        lpallocatemore: LPALLOCATEMORE,
2827        lpfreebuffer: LPFREEBUFFER,
2828        lpsectionuid: *mut MAPIUID,
2829        ulflags: u32,
2830        lppspoolerhook: windows_core::OutRef<'_, ISpoolerHook>,
2831    ) -> windows_core::HRESULT,
2832>;
2833pub const HTF_ENUMHANDLESONLY: HEADERTABLEFLAGS = HEADERTABLEFLAGS(2i32);
2834pub const HTF_NAMEINDATA: HEADERTABLEFLAGS = HEADERTABLEFLAGS(1i32);
2835windows_core::imp::define_interface!(
2836    IABContainer,
2837    IABContainer_Vtbl,
2838    0x0002030d_0000_0000_c000_000000000046
2839);
2840impl core::ops::Deref for IABContainer {
2841    type Target = IMAPIContainer;
2842    fn deref(&self) -> &Self::Target {
2843        unsafe { core::mem::transmute(self) }
2844    }
2845}
2846windows_core::imp::interface_hierarchy!(
2847    IABContainer,
2848    windows_core::IUnknown,
2849    IMAPIProp,
2850    IMAPIContainer
2851);
2852impl IABContainer {
2853    pub unsafe fn CreateEntry(
2854        &self,
2855        cbentryid: u32,
2856        lpentryid: *mut ENTRYID,
2857        ulcreateflags: u32,
2858        lppmapipropentry: *mut Option<IMAPIProp>,
2859    ) -> windows_core::Result<()> {
2860        unsafe {
2861            (windows_core::Interface::vtable(self).CreateEntry)(
2862                windows_core::Interface::as_raw(self),
2863                cbentryid,
2864                lpentryid as _,
2865                ulcreateflags,
2866                core::mem::transmute(lppmapipropentry),
2867            )
2868            .ok()
2869        }
2870    }
2871    pub unsafe fn CopyEntries<P2>(
2872        &self,
2873        lpentries: *mut SBinaryArray,
2874        uluiparam: usize,
2875        lpprogress: P2,
2876        ulflags: u32,
2877    ) -> windows_core::Result<()>
2878    where
2879        P2: windows_core::Param<IMAPIProgress>,
2880    {
2881        unsafe {
2882            (windows_core::Interface::vtable(self).CopyEntries)(
2883                windows_core::Interface::as_raw(self),
2884                lpentries as _,
2885                uluiparam,
2886                lpprogress.param().abi(),
2887                ulflags,
2888            )
2889            .ok()
2890        }
2891    }
2892    pub unsafe fn DeleteEntries(
2893        &self,
2894        lpentries: *mut SBinaryArray,
2895        ulflags: u32,
2896    ) -> windows_core::Result<()> {
2897        unsafe {
2898            (windows_core::Interface::vtable(self).DeleteEntries)(
2899                windows_core::Interface::as_raw(self),
2900                lpentries as _,
2901                ulflags,
2902            )
2903            .ok()
2904        }
2905    }
2906    pub unsafe fn ResolveNames(
2907        &self,
2908        lpproptagarray: *mut SPropTagArray,
2909        ulflags: u32,
2910        lpadrlist: *mut ADRLIST,
2911        lpflaglist: *mut FlagList,
2912    ) -> windows_core::Result<()> {
2913        unsafe {
2914            (windows_core::Interface::vtable(self).ResolveNames)(
2915                windows_core::Interface::as_raw(self),
2916                lpproptagarray as _,
2917                ulflags,
2918                lpadrlist as _,
2919                lpflaglist as _,
2920            )
2921            .ok()
2922        }
2923    }
2924}
2925#[repr(C)]
2926pub struct IABContainer_Vtbl {
2927    pub base__: IMAPIContainer_Vtbl,
2928    pub CreateEntry: unsafe extern "system" fn(
2929        *mut core::ffi::c_void,
2930        u32,
2931        *mut ENTRYID,
2932        u32,
2933        *mut *mut core::ffi::c_void,
2934    ) -> windows_core::HRESULT,
2935    pub CopyEntries: unsafe extern "system" fn(
2936        *mut core::ffi::c_void,
2937        *mut SBinaryArray,
2938        usize,
2939        *mut core::ffi::c_void,
2940        u32,
2941    ) -> windows_core::HRESULT,
2942    pub DeleteEntries: unsafe extern "system" fn(
2943        *mut core::ffi::c_void,
2944        *mut SBinaryArray,
2945        u32,
2946    ) -> windows_core::HRESULT,
2947    pub ResolveNames: unsafe extern "system" fn(
2948        *mut core::ffi::c_void,
2949        *mut SPropTagArray,
2950        u32,
2951        *mut ADRLIST,
2952        *mut FlagList,
2953    ) -> windows_core::HRESULT,
2954}
2955pub trait IABContainer_Impl: IMAPIContainer_Impl {
2956    fn CreateEntry(
2957        &self,
2958        cbentryid: u32,
2959        lpentryid: *mut ENTRYID,
2960        ulcreateflags: u32,
2961        lppmapipropentry: windows_core::OutRef<'_, IMAPIProp>,
2962    ) -> windows_core::Result<()>;
2963    fn CopyEntries(
2964        &self,
2965        lpentries: *mut SBinaryArray,
2966        uluiparam: usize,
2967        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
2968        ulflags: u32,
2969    ) -> windows_core::Result<()>;
2970    fn DeleteEntries(&self, lpentries: *mut SBinaryArray, ulflags: u32)
2971        -> windows_core::Result<()>;
2972    fn ResolveNames(
2973        &self,
2974        lpproptagarray: *mut SPropTagArray,
2975        ulflags: u32,
2976        lpadrlist: *mut ADRLIST,
2977        lpflaglist: *mut FlagList,
2978    ) -> windows_core::Result<()>;
2979}
2980impl IABContainer_Vtbl {
2981    pub const fn new<Identity: IABContainer_Impl, const OFFSET: isize>() -> Self {
2982        unsafe extern "system" fn CreateEntry<Identity: IABContainer_Impl, const OFFSET: isize>(
2983            this: *mut core::ffi::c_void,
2984            cbentryid: u32,
2985            lpentryid: *mut ENTRYID,
2986            ulcreateflags: u32,
2987            lppmapipropentry: *mut *mut core::ffi::c_void,
2988        ) -> windows_core::HRESULT {
2989            unsafe {
2990                let this: &Identity =
2991                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2992                IABContainer_Impl::CreateEntry(
2993                    this,
2994                    core::mem::transmute_copy(&cbentryid),
2995                    core::mem::transmute_copy(&lpentryid),
2996                    core::mem::transmute_copy(&ulcreateflags),
2997                    core::mem::transmute_copy(&lppmapipropentry),
2998                )
2999                .into()
3000            }
3001        }
3002        unsafe extern "system" fn CopyEntries<Identity: IABContainer_Impl, const OFFSET: isize>(
3003            this: *mut core::ffi::c_void,
3004            lpentries: *mut SBinaryArray,
3005            uluiparam: usize,
3006            lpprogress: *mut core::ffi::c_void,
3007            ulflags: u32,
3008        ) -> windows_core::HRESULT {
3009            unsafe {
3010                let this: &Identity =
3011                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3012                IABContainer_Impl::CopyEntries(
3013                    this,
3014                    core::mem::transmute_copy(&lpentries),
3015                    core::mem::transmute_copy(&uluiparam),
3016                    core::mem::transmute_copy(&lpprogress),
3017                    core::mem::transmute_copy(&ulflags),
3018                )
3019                .into()
3020            }
3021        }
3022        unsafe extern "system" fn DeleteEntries<
3023            Identity: IABContainer_Impl,
3024            const OFFSET: isize,
3025        >(
3026            this: *mut core::ffi::c_void,
3027            lpentries: *mut SBinaryArray,
3028            ulflags: u32,
3029        ) -> windows_core::HRESULT {
3030            unsafe {
3031                let this: &Identity =
3032                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3033                IABContainer_Impl::DeleteEntries(
3034                    this,
3035                    core::mem::transmute_copy(&lpentries),
3036                    core::mem::transmute_copy(&ulflags),
3037                )
3038                .into()
3039            }
3040        }
3041        unsafe extern "system" fn ResolveNames<Identity: IABContainer_Impl, const OFFSET: isize>(
3042            this: *mut core::ffi::c_void,
3043            lpproptagarray: *mut SPropTagArray,
3044            ulflags: u32,
3045            lpadrlist: *mut ADRLIST,
3046            lpflaglist: *mut FlagList,
3047        ) -> windows_core::HRESULT {
3048            unsafe {
3049                let this: &Identity =
3050                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3051                IABContainer_Impl::ResolveNames(
3052                    this,
3053                    core::mem::transmute_copy(&lpproptagarray),
3054                    core::mem::transmute_copy(&ulflags),
3055                    core::mem::transmute_copy(&lpadrlist),
3056                    core::mem::transmute_copy(&lpflaglist),
3057                )
3058                .into()
3059            }
3060        }
3061        Self {
3062            base__: IMAPIContainer_Vtbl::new::<Identity, OFFSET>(),
3063            CreateEntry: CreateEntry::<Identity, OFFSET>,
3064            CopyEntries: CopyEntries::<Identity, OFFSET>,
3065            DeleteEntries: DeleteEntries::<Identity, OFFSET>,
3066            ResolveNames: ResolveNames::<Identity, OFFSET>,
3067        }
3068    }
3069    pub fn matches(iid: &windows_core::GUID) -> bool {
3070        iid == &<IABContainer as windows_core::Interface>::IID
3071            || iid == &<IMAPIProp as windows_core::Interface>::IID
3072            || iid == &<IMAPIContainer as windows_core::Interface>::IID
3073    }
3074}
3075impl windows_core::RuntimeName for IABContainer {}
3076pub const IABContainer_CopyEntries: METHODS = METHODS(43i32);
3077pub const IABContainer_CreateEntry: METHODS = METHODS(42i32);
3078pub const IABContainer_DeleteEntries: METHODS = METHODS(44i32);
3079pub const IABContainer_ResolveNames: METHODS = METHODS(45i32);
3080windows_core::imp::define_interface!(
3081    IABLogon,
3082    IABLogon_Vtbl,
3083    0x00020314_0000_0000_c000_000000000046
3084);
3085windows_core::imp::interface_hierarchy!(IABLogon, windows_core::IUnknown);
3086impl IABLogon {
3087    pub unsafe fn GetLastError(
3088        &self,
3089        hresult: windows_core::HRESULT,
3090        ulflags: u32,
3091        lppmapierror: *mut *mut MAPIERROR,
3092    ) -> windows_core::Result<()> {
3093        unsafe {
3094            (windows_core::Interface::vtable(self).GetLastError)(
3095                windows_core::Interface::as_raw(self),
3096                hresult,
3097                ulflags,
3098                lppmapierror as _,
3099            )
3100            .ok()
3101        }
3102    }
3103    pub unsafe fn Logoff(&self, ulflags: u32) -> windows_core::Result<()> {
3104        unsafe {
3105            (windows_core::Interface::vtable(self).Logoff)(
3106                windows_core::Interface::as_raw(self),
3107                ulflags,
3108            )
3109            .ok()
3110        }
3111    }
3112    pub unsafe fn OpenEntry(
3113        &self,
3114        cbentryid: u32,
3115        lpentryid: *mut ENTRYID,
3116        lpinterface: *mut windows_core::GUID,
3117        ulflags: u32,
3118        lpulobjtype: *mut u32,
3119        lppunk: *mut Option<windows_core::IUnknown>,
3120    ) -> windows_core::Result<()> {
3121        unsafe {
3122            (windows_core::Interface::vtable(self).OpenEntry)(
3123                windows_core::Interface::as_raw(self),
3124                cbentryid,
3125                lpentryid as _,
3126                lpinterface as _,
3127                ulflags,
3128                lpulobjtype as _,
3129                core::mem::transmute(lppunk),
3130            )
3131            .ok()
3132        }
3133    }
3134    pub unsafe fn CompareEntryIDs(
3135        &self,
3136        cbentryid1: u32,
3137        lpentryid1: *mut ENTRYID,
3138        cbentryid2: u32,
3139        lpentryid2: *mut ENTRYID,
3140        ulflags: u32,
3141        lpulresult: *mut u32,
3142    ) -> windows_core::Result<()> {
3143        unsafe {
3144            (windows_core::Interface::vtable(self).CompareEntryIDs)(
3145                windows_core::Interface::as_raw(self),
3146                cbentryid1,
3147                lpentryid1 as _,
3148                cbentryid2,
3149                lpentryid2 as _,
3150                ulflags,
3151                lpulresult as _,
3152            )
3153            .ok()
3154        }
3155    }
3156    pub unsafe fn Advise<P3>(
3157        &self,
3158        cbentryid: u32,
3159        lpentryid: *mut ENTRYID,
3160        uleventmask: u32,
3161        lpadvisesink: P3,
3162        lpulconnection: *mut usize,
3163    ) -> windows_core::Result<()>
3164    where
3165        P3: windows_core::Param<IMAPIAdviseSink>,
3166    {
3167        unsafe {
3168            (windows_core::Interface::vtable(self).Advise)(
3169                windows_core::Interface::as_raw(self),
3170                cbentryid,
3171                lpentryid as _,
3172                uleventmask,
3173                lpadvisesink.param().abi(),
3174                lpulconnection as _,
3175            )
3176            .ok()
3177        }
3178    }
3179    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
3180        unsafe {
3181            (windows_core::Interface::vtable(self).Unadvise)(
3182                windows_core::Interface::as_raw(self),
3183                ulconnection,
3184            )
3185            .ok()
3186        }
3187    }
3188    pub unsafe fn OpenStatusEntry(
3189        &self,
3190        lpinterface: *mut windows_core::GUID,
3191        ulflags: u32,
3192        lpulobjtype: *mut u32,
3193        lppentry: *mut Option<IMAPIStatus>,
3194    ) -> windows_core::Result<()> {
3195        unsafe {
3196            (windows_core::Interface::vtable(self).OpenStatusEntry)(
3197                windows_core::Interface::as_raw(self),
3198                lpinterface as _,
3199                ulflags,
3200                lpulobjtype as _,
3201                core::mem::transmute(lppentry),
3202            )
3203            .ok()
3204        }
3205    }
3206    pub unsafe fn OpenTemplateID<P3, P6>(
3207        &self,
3208        cbtemplateid: u32,
3209        lptemplateid: *mut ENTRYID,
3210        ultemplateflags: u32,
3211        lpmapipropdata: P3,
3212        lpinterface: *mut windows_core::GUID,
3213        lppmapipropnew: *mut Option<IMAPIProp>,
3214        lpmapipropsibling: P6,
3215    ) -> windows_core::Result<()>
3216    where
3217        P3: windows_core::Param<IMAPIProp>,
3218        P6: windows_core::Param<IMAPIProp>,
3219    {
3220        unsafe {
3221            (windows_core::Interface::vtable(self).OpenTemplateID)(
3222                windows_core::Interface::as_raw(self),
3223                cbtemplateid,
3224                lptemplateid as _,
3225                ultemplateflags,
3226                lpmapipropdata.param().abi(),
3227                lpinterface as _,
3228                core::mem::transmute(lppmapipropnew),
3229                lpmapipropsibling.param().abi(),
3230            )
3231            .ok()
3232        }
3233    }
3234    pub unsafe fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
3235        unsafe {
3236            let mut result__ = core::mem::zeroed();
3237            (windows_core::Interface::vtable(self).GetOneOffTable)(
3238                windows_core::Interface::as_raw(self),
3239                ulflags,
3240                &mut result__,
3241            )
3242            .and_then(|| windows_core::Type::from_abi(result__))
3243        }
3244    }
3245    pub unsafe fn PrepareRecips(
3246        &self,
3247        ulflags: u32,
3248        lpproptagarray: *mut SPropTagArray,
3249        lpreciplist: *mut ADRLIST,
3250    ) -> windows_core::Result<()> {
3251        unsafe {
3252            (windows_core::Interface::vtable(self).PrepareRecips)(
3253                windows_core::Interface::as_raw(self),
3254                ulflags,
3255                lpproptagarray as _,
3256                lpreciplist as _,
3257            )
3258            .ok()
3259        }
3260    }
3261}
3262#[repr(C)]
3263pub struct IABLogon_Vtbl {
3264    pub base__: windows_core::IUnknown_Vtbl,
3265    pub GetLastError: unsafe extern "system" fn(
3266        *mut core::ffi::c_void,
3267        windows_core::HRESULT,
3268        u32,
3269        *mut *mut MAPIERROR,
3270    ) -> windows_core::HRESULT,
3271    pub Logoff: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
3272    pub OpenEntry: unsafe extern "system" fn(
3273        *mut core::ffi::c_void,
3274        u32,
3275        *mut ENTRYID,
3276        *mut windows_core::GUID,
3277        u32,
3278        *mut u32,
3279        *mut *mut core::ffi::c_void,
3280    ) -> windows_core::HRESULT,
3281    pub CompareEntryIDs: unsafe extern "system" fn(
3282        *mut core::ffi::c_void,
3283        u32,
3284        *mut ENTRYID,
3285        u32,
3286        *mut ENTRYID,
3287        u32,
3288        *mut u32,
3289    ) -> windows_core::HRESULT,
3290    pub Advise: unsafe extern "system" fn(
3291        *mut core::ffi::c_void,
3292        u32,
3293        *mut ENTRYID,
3294        u32,
3295        *mut core::ffi::c_void,
3296        *mut usize,
3297    ) -> windows_core::HRESULT,
3298    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
3299    pub OpenStatusEntry: unsafe extern "system" fn(
3300        *mut core::ffi::c_void,
3301        *mut windows_core::GUID,
3302        u32,
3303        *mut u32,
3304        *mut *mut core::ffi::c_void,
3305    ) -> windows_core::HRESULT,
3306    pub OpenTemplateID: unsafe extern "system" fn(
3307        *mut core::ffi::c_void,
3308        u32,
3309        *mut ENTRYID,
3310        u32,
3311        *mut core::ffi::c_void,
3312        *mut windows_core::GUID,
3313        *mut *mut core::ffi::c_void,
3314        *mut core::ffi::c_void,
3315    ) -> windows_core::HRESULT,
3316    pub GetOneOffTable: unsafe extern "system" fn(
3317        *mut core::ffi::c_void,
3318        u32,
3319        *mut *mut core::ffi::c_void,
3320    ) -> windows_core::HRESULT,
3321    pub PrepareRecips: unsafe extern "system" fn(
3322        *mut core::ffi::c_void,
3323        u32,
3324        *mut SPropTagArray,
3325        *mut ADRLIST,
3326    ) -> windows_core::HRESULT,
3327}
3328pub trait IABLogon_Impl: windows_core::IUnknownImpl {
3329    fn GetLastError(
3330        &self,
3331        hresult: windows_core::HRESULT,
3332        ulflags: u32,
3333        lppmapierror: *mut *mut MAPIERROR,
3334    ) -> windows_core::Result<()>;
3335    fn Logoff(&self, ulflags: u32) -> windows_core::Result<()>;
3336    fn OpenEntry(
3337        &self,
3338        cbentryid: u32,
3339        lpentryid: *mut ENTRYID,
3340        lpinterface: *mut windows_core::GUID,
3341        ulflags: u32,
3342        lpulobjtype: *mut u32,
3343        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
3344    ) -> windows_core::Result<()>;
3345    fn CompareEntryIDs(
3346        &self,
3347        cbentryid1: u32,
3348        lpentryid1: *mut ENTRYID,
3349        cbentryid2: u32,
3350        lpentryid2: *mut ENTRYID,
3351        ulflags: u32,
3352        lpulresult: *mut u32,
3353    ) -> windows_core::Result<()>;
3354    fn Advise(
3355        &self,
3356        cbentryid: u32,
3357        lpentryid: *mut ENTRYID,
3358        uleventmask: u32,
3359        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
3360        lpulconnection: *mut usize,
3361    ) -> windows_core::Result<()>;
3362    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
3363    fn OpenStatusEntry(
3364        &self,
3365        lpinterface: *mut windows_core::GUID,
3366        ulflags: u32,
3367        lpulobjtype: *mut u32,
3368        lppentry: windows_core::OutRef<'_, IMAPIStatus>,
3369    ) -> windows_core::Result<()>;
3370    fn OpenTemplateID(
3371        &self,
3372        cbtemplateid: u32,
3373        lptemplateid: *mut ENTRYID,
3374        ultemplateflags: u32,
3375        lpmapipropdata: windows_core::Ref<'_, IMAPIProp>,
3376        lpinterface: *mut windows_core::GUID,
3377        lppmapipropnew: windows_core::OutRef<'_, IMAPIProp>,
3378        lpmapipropsibling: windows_core::Ref<'_, IMAPIProp>,
3379    ) -> windows_core::Result<()>;
3380    fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
3381    fn PrepareRecips(
3382        &self,
3383        ulflags: u32,
3384        lpproptagarray: *mut SPropTagArray,
3385        lpreciplist: *mut ADRLIST,
3386    ) -> windows_core::Result<()>;
3387}
3388impl IABLogon_Vtbl {
3389    pub const fn new<Identity: IABLogon_Impl, const OFFSET: isize>() -> Self {
3390        unsafe extern "system" fn GetLastError<Identity: IABLogon_Impl, const OFFSET: isize>(
3391            this: *mut core::ffi::c_void,
3392            hresult: windows_core::HRESULT,
3393            ulflags: u32,
3394            lppmapierror: *mut *mut MAPIERROR,
3395        ) -> windows_core::HRESULT {
3396            unsafe {
3397                let this: &Identity =
3398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3399                IABLogon_Impl::GetLastError(
3400                    this,
3401                    core::mem::transmute_copy(&hresult),
3402                    core::mem::transmute_copy(&ulflags),
3403                    core::mem::transmute_copy(&lppmapierror),
3404                )
3405                .into()
3406            }
3407        }
3408        unsafe extern "system" fn Logoff<Identity: IABLogon_Impl, const OFFSET: isize>(
3409            this: *mut core::ffi::c_void,
3410            ulflags: u32,
3411        ) -> windows_core::HRESULT {
3412            unsafe {
3413                let this: &Identity =
3414                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3415                IABLogon_Impl::Logoff(this, core::mem::transmute_copy(&ulflags)).into()
3416            }
3417        }
3418        unsafe extern "system" fn OpenEntry<Identity: IABLogon_Impl, const OFFSET: isize>(
3419            this: *mut core::ffi::c_void,
3420            cbentryid: u32,
3421            lpentryid: *mut ENTRYID,
3422            lpinterface: *mut windows_core::GUID,
3423            ulflags: u32,
3424            lpulobjtype: *mut u32,
3425            lppunk: *mut *mut core::ffi::c_void,
3426        ) -> windows_core::HRESULT {
3427            unsafe {
3428                let this: &Identity =
3429                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3430                IABLogon_Impl::OpenEntry(
3431                    this,
3432                    core::mem::transmute_copy(&cbentryid),
3433                    core::mem::transmute_copy(&lpentryid),
3434                    core::mem::transmute_copy(&lpinterface),
3435                    core::mem::transmute_copy(&ulflags),
3436                    core::mem::transmute_copy(&lpulobjtype),
3437                    core::mem::transmute_copy(&lppunk),
3438                )
3439                .into()
3440            }
3441        }
3442        unsafe extern "system" fn CompareEntryIDs<Identity: IABLogon_Impl, const OFFSET: isize>(
3443            this: *mut core::ffi::c_void,
3444            cbentryid1: u32,
3445            lpentryid1: *mut ENTRYID,
3446            cbentryid2: u32,
3447            lpentryid2: *mut ENTRYID,
3448            ulflags: u32,
3449            lpulresult: *mut u32,
3450        ) -> windows_core::HRESULT {
3451            unsafe {
3452                let this: &Identity =
3453                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3454                IABLogon_Impl::CompareEntryIDs(
3455                    this,
3456                    core::mem::transmute_copy(&cbentryid1),
3457                    core::mem::transmute_copy(&lpentryid1),
3458                    core::mem::transmute_copy(&cbentryid2),
3459                    core::mem::transmute_copy(&lpentryid2),
3460                    core::mem::transmute_copy(&ulflags),
3461                    core::mem::transmute_copy(&lpulresult),
3462                )
3463                .into()
3464            }
3465        }
3466        unsafe extern "system" fn Advise<Identity: IABLogon_Impl, const OFFSET: isize>(
3467            this: *mut core::ffi::c_void,
3468            cbentryid: u32,
3469            lpentryid: *mut ENTRYID,
3470            uleventmask: u32,
3471            lpadvisesink: *mut core::ffi::c_void,
3472            lpulconnection: *mut usize,
3473        ) -> windows_core::HRESULT {
3474            unsafe {
3475                let this: &Identity =
3476                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3477                IABLogon_Impl::Advise(
3478                    this,
3479                    core::mem::transmute_copy(&cbentryid),
3480                    core::mem::transmute_copy(&lpentryid),
3481                    core::mem::transmute_copy(&uleventmask),
3482                    core::mem::transmute_copy(&lpadvisesink),
3483                    core::mem::transmute_copy(&lpulconnection),
3484                )
3485                .into()
3486            }
3487        }
3488        unsafe extern "system" fn Unadvise<Identity: IABLogon_Impl, const OFFSET: isize>(
3489            this: *mut core::ffi::c_void,
3490            ulconnection: usize,
3491        ) -> windows_core::HRESULT {
3492            unsafe {
3493                let this: &Identity =
3494                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3495                IABLogon_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
3496            }
3497        }
3498        unsafe extern "system" fn OpenStatusEntry<Identity: IABLogon_Impl, const OFFSET: isize>(
3499            this: *mut core::ffi::c_void,
3500            lpinterface: *mut windows_core::GUID,
3501            ulflags: u32,
3502            lpulobjtype: *mut u32,
3503            lppentry: *mut *mut core::ffi::c_void,
3504        ) -> windows_core::HRESULT {
3505            unsafe {
3506                let this: &Identity =
3507                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3508                IABLogon_Impl::OpenStatusEntry(
3509                    this,
3510                    core::mem::transmute_copy(&lpinterface),
3511                    core::mem::transmute_copy(&ulflags),
3512                    core::mem::transmute_copy(&lpulobjtype),
3513                    core::mem::transmute_copy(&lppentry),
3514                )
3515                .into()
3516            }
3517        }
3518        unsafe extern "system" fn OpenTemplateID<Identity: IABLogon_Impl, const OFFSET: isize>(
3519            this: *mut core::ffi::c_void,
3520            cbtemplateid: u32,
3521            lptemplateid: *mut ENTRYID,
3522            ultemplateflags: u32,
3523            lpmapipropdata: *mut core::ffi::c_void,
3524            lpinterface: *mut windows_core::GUID,
3525            lppmapipropnew: *mut *mut core::ffi::c_void,
3526            lpmapipropsibling: *mut core::ffi::c_void,
3527        ) -> windows_core::HRESULT {
3528            unsafe {
3529                let this: &Identity =
3530                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3531                IABLogon_Impl::OpenTemplateID(
3532                    this,
3533                    core::mem::transmute_copy(&cbtemplateid),
3534                    core::mem::transmute_copy(&lptemplateid),
3535                    core::mem::transmute_copy(&ultemplateflags),
3536                    core::mem::transmute_copy(&lpmapipropdata),
3537                    core::mem::transmute_copy(&lpinterface),
3538                    core::mem::transmute_copy(&lppmapipropnew),
3539                    core::mem::transmute_copy(&lpmapipropsibling),
3540                )
3541                .into()
3542            }
3543        }
3544        unsafe extern "system" fn GetOneOffTable<Identity: IABLogon_Impl, const OFFSET: isize>(
3545            this: *mut core::ffi::c_void,
3546            ulflags: u32,
3547            lpptable: *mut *mut core::ffi::c_void,
3548        ) -> windows_core::HRESULT {
3549            unsafe {
3550                let this: &Identity =
3551                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3552                match IABLogon_Impl::GetOneOffTable(this, core::mem::transmute_copy(&ulflags)) {
3553                    Ok(ok__) => {
3554                        lpptable.write(core::mem::transmute(ok__));
3555                        windows_core::HRESULT(0)
3556                    }
3557                    Err(err) => err.into(),
3558                }
3559            }
3560        }
3561        unsafe extern "system" fn PrepareRecips<Identity: IABLogon_Impl, const OFFSET: isize>(
3562            this: *mut core::ffi::c_void,
3563            ulflags: u32,
3564            lpproptagarray: *mut SPropTagArray,
3565            lpreciplist: *mut ADRLIST,
3566        ) -> windows_core::HRESULT {
3567            unsafe {
3568                let this: &Identity =
3569                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3570                IABLogon_Impl::PrepareRecips(
3571                    this,
3572                    core::mem::transmute_copy(&ulflags),
3573                    core::mem::transmute_copy(&lpproptagarray),
3574                    core::mem::transmute_copy(&lpreciplist),
3575                )
3576                .into()
3577            }
3578        }
3579        Self {
3580            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3581            GetLastError: GetLastError::<Identity, OFFSET>,
3582            Logoff: Logoff::<Identity, OFFSET>,
3583            OpenEntry: OpenEntry::<Identity, OFFSET>,
3584            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
3585            Advise: Advise::<Identity, OFFSET>,
3586            Unadvise: Unadvise::<Identity, OFFSET>,
3587            OpenStatusEntry: OpenStatusEntry::<Identity, OFFSET>,
3588            OpenTemplateID: OpenTemplateID::<Identity, OFFSET>,
3589            GetOneOffTable: GetOneOffTable::<Identity, OFFSET>,
3590            PrepareRecips: PrepareRecips::<Identity, OFFSET>,
3591        }
3592    }
3593    pub fn matches(iid: &windows_core::GUID) -> bool {
3594        iid == &<IABLogon as windows_core::Interface>::IID
3595    }
3596}
3597impl windows_core::RuntimeName for IABLogon {}
3598pub const IABLogon_Advise: METHODS = METHODS(88i32);
3599pub const IABLogon_CompareEntryIDs: METHODS = METHODS(87i32);
3600pub const IABLogon_GetLastError: METHODS = METHODS(84i32);
3601pub const IABLogon_GetOneOffTable: METHODS = METHODS(92i32);
3602pub const IABLogon_Logoff: METHODS = METHODS(85i32);
3603pub const IABLogon_OpenEntry: METHODS = METHODS(86i32);
3604pub const IABLogon_OpenStatusEntry: METHODS = METHODS(90i32);
3605pub const IABLogon_OpenTemplateID: METHODS = METHODS(91i32);
3606pub const IABLogon_PrepareRecips: METHODS = METHODS(93i32);
3607pub const IABLogon_Unadvise: METHODS = METHODS(89i32);
3608windows_core::imp::define_interface!(
3609    IABProvider,
3610    IABProvider_Vtbl,
3611    0x00020311_0000_0000_c000_000000000046
3612);
3613windows_core::imp::interface_hierarchy!(IABProvider, windows_core::IUnknown);
3614impl IABProvider {
3615    pub unsafe fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
3616        unsafe {
3617            (windows_core::Interface::vtable(self).Shutdown)(
3618                windows_core::Interface::as_raw(self),
3619                lpulflags as _,
3620            )
3621            .ok()
3622        }
3623    }
3624    pub unsafe fn Logon<P0>(
3625        &self,
3626        lpmapisup: P0,
3627        uluiparam: usize,
3628        lpszprofilename: *mut i8,
3629        ulflags: u32,
3630        lpulpcbsecurity: *mut u32,
3631        lppbsecurity: *mut *mut u8,
3632        lppmapierror: *mut *mut MAPIERROR,
3633        lppablogon: *mut Option<IABLogon>,
3634    ) -> windows_core::Result<()>
3635    where
3636        P0: windows_core::Param<IMAPISupport>,
3637    {
3638        unsafe {
3639            (windows_core::Interface::vtable(self).Logon)(
3640                windows_core::Interface::as_raw(self),
3641                lpmapisup.param().abi(),
3642                uluiparam,
3643                lpszprofilename as _,
3644                ulflags,
3645                lpulpcbsecurity as _,
3646                lppbsecurity as _,
3647                lppmapierror as _,
3648                core::mem::transmute(lppablogon),
3649            )
3650            .ok()
3651        }
3652    }
3653}
3654#[repr(C)]
3655pub struct IABProvider_Vtbl {
3656    pub base__: windows_core::IUnknown_Vtbl,
3657    pub Shutdown:
3658        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
3659    pub Logon: unsafe extern "system" fn(
3660        *mut core::ffi::c_void,
3661        *mut core::ffi::c_void,
3662        usize,
3663        *mut i8,
3664        u32,
3665        *mut u32,
3666        *mut *mut u8,
3667        *mut *mut MAPIERROR,
3668        *mut *mut core::ffi::c_void,
3669    ) -> windows_core::HRESULT,
3670}
3671pub trait IABProvider_Impl: windows_core::IUnknownImpl {
3672    fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
3673    fn Logon(
3674        &self,
3675        lpmapisup: windows_core::Ref<'_, IMAPISupport>,
3676        uluiparam: usize,
3677        lpszprofilename: *mut i8,
3678        ulflags: u32,
3679        lpulpcbsecurity: *mut u32,
3680        lppbsecurity: *mut *mut u8,
3681        lppmapierror: *mut *mut MAPIERROR,
3682        lppablogon: windows_core::OutRef<'_, IABLogon>,
3683    ) -> windows_core::Result<()>;
3684}
3685impl IABProvider_Vtbl {
3686    pub const fn new<Identity: IABProvider_Impl, const OFFSET: isize>() -> Self {
3687        unsafe extern "system" fn Shutdown<Identity: IABProvider_Impl, const OFFSET: isize>(
3688            this: *mut core::ffi::c_void,
3689            lpulflags: *mut u32,
3690        ) -> windows_core::HRESULT {
3691            unsafe {
3692                let this: &Identity =
3693                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3694                IABProvider_Impl::Shutdown(this, core::mem::transmute_copy(&lpulflags)).into()
3695            }
3696        }
3697        unsafe extern "system" fn Logon<Identity: IABProvider_Impl, const OFFSET: isize>(
3698            this: *mut core::ffi::c_void,
3699            lpmapisup: *mut core::ffi::c_void,
3700            uluiparam: usize,
3701            lpszprofilename: *mut i8,
3702            ulflags: u32,
3703            lpulpcbsecurity: *mut u32,
3704            lppbsecurity: *mut *mut u8,
3705            lppmapierror: *mut *mut MAPIERROR,
3706            lppablogon: *mut *mut core::ffi::c_void,
3707        ) -> windows_core::HRESULT {
3708            unsafe {
3709                let this: &Identity =
3710                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3711                IABProvider_Impl::Logon(
3712                    this,
3713                    core::mem::transmute_copy(&lpmapisup),
3714                    core::mem::transmute_copy(&uluiparam),
3715                    core::mem::transmute_copy(&lpszprofilename),
3716                    core::mem::transmute_copy(&ulflags),
3717                    core::mem::transmute_copy(&lpulpcbsecurity),
3718                    core::mem::transmute_copy(&lppbsecurity),
3719                    core::mem::transmute_copy(&lppmapierror),
3720                    core::mem::transmute_copy(&lppablogon),
3721                )
3722                .into()
3723            }
3724        }
3725        Self {
3726            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3727            Shutdown: Shutdown::<Identity, OFFSET>,
3728            Logon: Logon::<Identity, OFFSET>,
3729        }
3730    }
3731    pub fn matches(iid: &windows_core::GUID) -> bool {
3732        iid == &<IABProvider as windows_core::Interface>::IID
3733    }
3734}
3735impl windows_core::RuntimeName for IABProvider {}
3736pub const IABProvider_Logon: METHODS = METHODS(83i32);
3737pub const IABProvider_Shutdown: METHODS = METHODS(82i32);
3738pub const IAP_ADRTYPE: u32 = 4u32;
3739pub const IAP_ALL: u32 = 4294967295u32;
3740pub const IAP_CERTSTATE: u32 = 256u32;
3741pub const IAP_CHARSET: u32 = 1u32;
3742pub const IAP_COOKIE: u32 = 4096u32;
3743pub const IAP_EMAIL: u32 = 32u32;
3744pub const IAP_ENCODING: u32 = 2048u32;
3745pub const IAP_ENCRYPTION_PRINT: u32 = 1024u32;
3746pub const IAP_FRIENDLY: u32 = 8u32;
3747pub const IAP_HANDLE: u32 = 2u32;
3748pub const IAP_SIGNING_PRINT: u32 = 512u32;
3749pub const IAT_ALL: u32 = 4294967295u32;
3750pub const IAT_APPARTO: u32 = 512u32;
3751pub const IAT_BCC: u32 = 16u32;
3752pub const IAT_CC: u32 = 8u32;
3753pub const IAT_FROM: u32 = 1u32;
3754pub const IAT_REPLYTO: u32 = 32u32;
3755pub const IAT_RETRCPTTO: u32 = 128u32;
3756pub const IAT_RETURNPATH: u32 = 64u32;
3757pub const IAT_RR: u32 = 256u32;
3758pub const IAT_SENDER: u32 = 2u32;
3759pub const IAT_TO: u32 = 4u32;
3760pub const IAT_UNKNOWN: u32 = 0u32;
3761windows_core::imp::define_interface!(
3762    IAddrBook,
3763    IAddrBook_Vtbl,
3764    0x00020309_0000_0000_c000_000000000046
3765);
3766impl core::ops::Deref for IAddrBook {
3767    type Target = IMAPIProp;
3768    fn deref(&self) -> &Self::Target {
3769        unsafe { core::mem::transmute(self) }
3770    }
3771}
3772windows_core::imp::interface_hierarchy!(IAddrBook, windows_core::IUnknown, IMAPIProp);
3773impl IAddrBook {
3774    pub unsafe fn OpenEntry(
3775        &self,
3776        cbentryid: u32,
3777        lpentryid: *mut ENTRYID,
3778        lpinterface: *mut windows_core::GUID,
3779        ulflags: u32,
3780        lpulobjtype: *mut u32,
3781        lppunk: *mut Option<windows_core::IUnknown>,
3782    ) -> windows_core::Result<()> {
3783        unsafe {
3784            (windows_core::Interface::vtable(self).OpenEntry)(
3785                windows_core::Interface::as_raw(self),
3786                cbentryid,
3787                lpentryid as _,
3788                lpinterface as _,
3789                ulflags,
3790                lpulobjtype as _,
3791                core::mem::transmute(lppunk),
3792            )
3793            .ok()
3794        }
3795    }
3796    pub unsafe fn CompareEntryIDs(
3797        &self,
3798        cbentryid1: u32,
3799        lpentryid1: *mut ENTRYID,
3800        cbentryid2: u32,
3801        lpentryid2: *mut ENTRYID,
3802        ulflags: u32,
3803        lpulresult: *mut u32,
3804    ) -> windows_core::Result<()> {
3805        unsafe {
3806            (windows_core::Interface::vtable(self).CompareEntryIDs)(
3807                windows_core::Interface::as_raw(self),
3808                cbentryid1,
3809                lpentryid1 as _,
3810                cbentryid2,
3811                lpentryid2 as _,
3812                ulflags,
3813                lpulresult as _,
3814            )
3815            .ok()
3816        }
3817    }
3818    pub unsafe fn Advise<P3>(
3819        &self,
3820        cbentryid: u32,
3821        lpentryid: *mut ENTRYID,
3822        uleventmask: u32,
3823        lpadvisesink: P3,
3824        lpulconnection: *mut usize,
3825    ) -> windows_core::Result<()>
3826    where
3827        P3: windows_core::Param<IMAPIAdviseSink>,
3828    {
3829        unsafe {
3830            (windows_core::Interface::vtable(self).Advise)(
3831                windows_core::Interface::as_raw(self),
3832                cbentryid,
3833                lpentryid as _,
3834                uleventmask,
3835                lpadvisesink.param().abi(),
3836                lpulconnection as _,
3837            )
3838            .ok()
3839        }
3840    }
3841    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
3842        unsafe {
3843            (windows_core::Interface::vtable(self).Unadvise)(
3844                windows_core::Interface::as_raw(self),
3845                ulconnection,
3846            )
3847            .ok()
3848        }
3849    }
3850    pub unsafe fn CreateOneOff(
3851        &self,
3852        lpszname: *mut i8,
3853        lpszadrtype: *mut i8,
3854        lpszaddress: *mut i8,
3855        ulflags: u32,
3856        lpcbentryid: *mut u32,
3857        lppentryid: *mut *mut ENTRYID,
3858    ) -> windows_core::Result<()> {
3859        unsafe {
3860            (windows_core::Interface::vtable(self).CreateOneOff)(
3861                windows_core::Interface::as_raw(self),
3862                lpszname as _,
3863                lpszadrtype as _,
3864                lpszaddress as _,
3865                ulflags,
3866                lpcbentryid as _,
3867                lppentryid as _,
3868            )
3869            .ok()
3870        }
3871    }
3872    pub unsafe fn NewEntry(
3873        &self,
3874        uluiparam: usize,
3875        ulflags: u32,
3876        cbeidcontainer: u32,
3877        lpeidcontainer: *mut ENTRYID,
3878        cbeidnewentrytpl: u32,
3879        lpeidnewentrytpl: *mut ENTRYID,
3880        lpcbeidnewentry: *mut u32,
3881        lppeidnewentry: *mut *mut ENTRYID,
3882    ) -> windows_core::Result<()> {
3883        unsafe {
3884            (windows_core::Interface::vtable(self).NewEntry)(
3885                windows_core::Interface::as_raw(self),
3886                uluiparam,
3887                ulflags,
3888                cbeidcontainer,
3889                lpeidcontainer as _,
3890                cbeidnewentrytpl,
3891                lpeidnewentrytpl as _,
3892                lpcbeidnewentry as _,
3893                lppeidnewentry as _,
3894            )
3895            .ok()
3896        }
3897    }
3898    pub unsafe fn ResolveName(
3899        &self,
3900        uluiparam: usize,
3901        ulflags: u32,
3902        lpsznewentrytitle: *mut i8,
3903        lpadrlist: *mut ADRLIST,
3904    ) -> windows_core::Result<()> {
3905        unsafe {
3906            (windows_core::Interface::vtable(self).ResolveName)(
3907                windows_core::Interface::as_raw(self),
3908                uluiparam,
3909                ulflags,
3910                lpsznewentrytitle as _,
3911                lpadrlist as _,
3912            )
3913            .ok()
3914        }
3915    }
3916    pub unsafe fn Address(
3917        &self,
3918        lpuluiparam: *mut usize,
3919        lpadrparms: *mut ADRPARM,
3920        lppadrlist: *mut *mut ADRLIST,
3921    ) -> windows_core::Result<()> {
3922        unsafe {
3923            (windows_core::Interface::vtable(self).Address)(
3924                windows_core::Interface::as_raw(self),
3925                lpuluiparam as _,
3926                lpadrparms as _,
3927                lppadrlist as _,
3928            )
3929            .ok()
3930        }
3931    }
3932    pub unsafe fn Details(
3933        &self,
3934        lpuluiparam: *mut usize,
3935        lpfndismiss: LPFNDISMISS,
3936        lpvdismisscontext: *mut core::ffi::c_void,
3937        cbentryid: u32,
3938        lpentryid: *mut ENTRYID,
3939        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
3940        lpvbuttoncontext: *mut core::ffi::c_void,
3941        lpszbuttontext: *mut i8,
3942        ulflags: u32,
3943    ) -> windows_core::Result<()> {
3944        unsafe {
3945            (windows_core::Interface::vtable(self).Details)(
3946                windows_core::Interface::as_raw(self),
3947                lpuluiparam as _,
3948                lpfndismiss,
3949                lpvdismisscontext as _,
3950                cbentryid,
3951                lpentryid as _,
3952                lpfbuttoncallback,
3953                lpvbuttoncontext as _,
3954                lpszbuttontext as _,
3955                ulflags,
3956            )
3957            .ok()
3958        }
3959    }
3960    pub unsafe fn RecipOptions(
3961        &self,
3962        uluiparam: usize,
3963        ulflags: u32,
3964        lprecip: *mut ADRENTRY,
3965    ) -> windows_core::Result<()> {
3966        unsafe {
3967            (windows_core::Interface::vtable(self).RecipOptions)(
3968                windows_core::Interface::as_raw(self),
3969                uluiparam,
3970                ulflags,
3971                lprecip as _,
3972            )
3973            .ok()
3974        }
3975    }
3976    pub unsafe fn QueryDefaultRecipOpt(
3977        &self,
3978        lpszadrtype: *mut i8,
3979        ulflags: u32,
3980        lpcvalues: *mut u32,
3981        lppoptions: *mut *mut SPropValue,
3982    ) -> windows_core::Result<()> {
3983        unsafe {
3984            (windows_core::Interface::vtable(self).QueryDefaultRecipOpt)(
3985                windows_core::Interface::as_raw(self),
3986                lpszadrtype as _,
3987                ulflags,
3988                lpcvalues as _,
3989                lppoptions as _,
3990            )
3991            .ok()
3992        }
3993    }
3994    pub unsafe fn GetPAB(
3995        &self,
3996        lpcbentryid: *mut u32,
3997        lppentryid: *mut *mut ENTRYID,
3998    ) -> windows_core::Result<()> {
3999        unsafe {
4000            (windows_core::Interface::vtable(self).GetPAB)(
4001                windows_core::Interface::as_raw(self),
4002                lpcbentryid as _,
4003                lppentryid as _,
4004            )
4005            .ok()
4006        }
4007    }
4008    pub unsafe fn SetPAB(
4009        &self,
4010        cbentryid: u32,
4011        lpentryid: *mut ENTRYID,
4012    ) -> windows_core::Result<()> {
4013        unsafe {
4014            (windows_core::Interface::vtable(self).SetPAB)(
4015                windows_core::Interface::as_raw(self),
4016                cbentryid,
4017                lpentryid as _,
4018            )
4019            .ok()
4020        }
4021    }
4022    pub unsafe fn GetDefaultDir(
4023        &self,
4024        lpcbentryid: *mut u32,
4025        lppentryid: *mut *mut ENTRYID,
4026    ) -> windows_core::Result<()> {
4027        unsafe {
4028            (windows_core::Interface::vtable(self).GetDefaultDir)(
4029                windows_core::Interface::as_raw(self),
4030                lpcbentryid as _,
4031                lppentryid as _,
4032            )
4033            .ok()
4034        }
4035    }
4036    pub unsafe fn SetDefaultDir(
4037        &self,
4038        cbentryid: u32,
4039        lpentryid: *mut ENTRYID,
4040    ) -> windows_core::Result<()> {
4041        unsafe {
4042            (windows_core::Interface::vtable(self).SetDefaultDir)(
4043                windows_core::Interface::as_raw(self),
4044                cbentryid,
4045                lpentryid as _,
4046            )
4047            .ok()
4048        }
4049    }
4050    pub unsafe fn GetSearchPath(
4051        &self,
4052        ulflags: u32,
4053        lppsearchpath: *mut *mut SRowSet,
4054    ) -> windows_core::Result<()> {
4055        unsafe {
4056            (windows_core::Interface::vtable(self).GetSearchPath)(
4057                windows_core::Interface::as_raw(self),
4058                ulflags,
4059                lppsearchpath as _,
4060            )
4061            .ok()
4062        }
4063    }
4064    pub unsafe fn SetSearchPath(
4065        &self,
4066        ulflags: u32,
4067        lpsearchpath: *mut SRowSet,
4068    ) -> windows_core::Result<()> {
4069        unsafe {
4070            (windows_core::Interface::vtable(self).SetSearchPath)(
4071                windows_core::Interface::as_raw(self),
4072                ulflags,
4073                lpsearchpath as _,
4074            )
4075            .ok()
4076        }
4077    }
4078    pub unsafe fn PrepareRecips(
4079        &self,
4080        ulflags: u32,
4081        lpproptagarray: *mut SPropTagArray,
4082        lpreciplist: *mut ADRLIST,
4083    ) -> windows_core::Result<()> {
4084        unsafe {
4085            (windows_core::Interface::vtable(self).PrepareRecips)(
4086                windows_core::Interface::as_raw(self),
4087                ulflags,
4088                lpproptagarray as _,
4089                lpreciplist as _,
4090            )
4091            .ok()
4092        }
4093    }
4094}
4095#[repr(C)]
4096pub struct IAddrBook_Vtbl {
4097    pub base__: IMAPIProp_Vtbl,
4098    pub OpenEntry: unsafe extern "system" fn(
4099        *mut core::ffi::c_void,
4100        u32,
4101        *mut ENTRYID,
4102        *mut windows_core::GUID,
4103        u32,
4104        *mut u32,
4105        *mut *mut core::ffi::c_void,
4106    ) -> windows_core::HRESULT,
4107    pub CompareEntryIDs: unsafe extern "system" fn(
4108        *mut core::ffi::c_void,
4109        u32,
4110        *mut ENTRYID,
4111        u32,
4112        *mut ENTRYID,
4113        u32,
4114        *mut u32,
4115    ) -> windows_core::HRESULT,
4116    pub Advise: unsafe extern "system" fn(
4117        *mut core::ffi::c_void,
4118        u32,
4119        *mut ENTRYID,
4120        u32,
4121        *mut core::ffi::c_void,
4122        *mut usize,
4123    ) -> windows_core::HRESULT,
4124    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
4125    pub CreateOneOff: unsafe extern "system" fn(
4126        *mut core::ffi::c_void,
4127        *mut i8,
4128        *mut i8,
4129        *mut i8,
4130        u32,
4131        *mut u32,
4132        *mut *mut ENTRYID,
4133    ) -> windows_core::HRESULT,
4134    pub NewEntry: unsafe extern "system" fn(
4135        *mut core::ffi::c_void,
4136        usize,
4137        u32,
4138        u32,
4139        *mut ENTRYID,
4140        u32,
4141        *mut ENTRYID,
4142        *mut u32,
4143        *mut *mut ENTRYID,
4144    ) -> windows_core::HRESULT,
4145    pub ResolveName: unsafe extern "system" fn(
4146        *mut core::ffi::c_void,
4147        usize,
4148        u32,
4149        *mut i8,
4150        *mut ADRLIST,
4151    ) -> windows_core::HRESULT,
4152    pub Address: unsafe extern "system" fn(
4153        *mut core::ffi::c_void,
4154        *mut usize,
4155        *mut ADRPARM,
4156        *mut *mut ADRLIST,
4157    ) -> windows_core::HRESULT,
4158    pub Details: unsafe extern "system" fn(
4159        *mut core::ffi::c_void,
4160        *mut usize,
4161        LPFNDISMISS,
4162        *mut core::ffi::c_void,
4163        u32,
4164        *mut ENTRYID,
4165        windows::Win32::System::AddressBook::LPFNBUTTON,
4166        *mut core::ffi::c_void,
4167        *mut i8,
4168        u32,
4169    ) -> windows_core::HRESULT,
4170    pub RecipOptions: unsafe extern "system" fn(
4171        *mut core::ffi::c_void,
4172        usize,
4173        u32,
4174        *mut ADRENTRY,
4175    ) -> windows_core::HRESULT,
4176    pub QueryDefaultRecipOpt: unsafe extern "system" fn(
4177        *mut core::ffi::c_void,
4178        *mut i8,
4179        u32,
4180        *mut u32,
4181        *mut *mut SPropValue,
4182    ) -> windows_core::HRESULT,
4183    pub GetPAB: unsafe extern "system" fn(
4184        *mut core::ffi::c_void,
4185        *mut u32,
4186        *mut *mut ENTRYID,
4187    ) -> windows_core::HRESULT,
4188    pub SetPAB: unsafe extern "system" fn(
4189        *mut core::ffi::c_void,
4190        u32,
4191        *mut ENTRYID,
4192    ) -> windows_core::HRESULT,
4193    pub GetDefaultDir: unsafe extern "system" fn(
4194        *mut core::ffi::c_void,
4195        *mut u32,
4196        *mut *mut ENTRYID,
4197    ) -> windows_core::HRESULT,
4198    pub SetDefaultDir: unsafe extern "system" fn(
4199        *mut core::ffi::c_void,
4200        u32,
4201        *mut ENTRYID,
4202    ) -> windows_core::HRESULT,
4203    pub GetSearchPath: unsafe extern "system" fn(
4204        *mut core::ffi::c_void,
4205        u32,
4206        *mut *mut SRowSet,
4207    ) -> windows_core::HRESULT,
4208    pub SetSearchPath: unsafe extern "system" fn(
4209        *mut core::ffi::c_void,
4210        u32,
4211        *mut SRowSet,
4212    ) -> windows_core::HRESULT,
4213    pub PrepareRecips: unsafe extern "system" fn(
4214        *mut core::ffi::c_void,
4215        u32,
4216        *mut SPropTagArray,
4217        *mut ADRLIST,
4218    ) -> windows_core::HRESULT,
4219}
4220pub trait IAddrBook_Impl: IMAPIProp_Impl {
4221    fn OpenEntry(
4222        &self,
4223        cbentryid: u32,
4224        lpentryid: *mut ENTRYID,
4225        lpinterface: *mut windows_core::GUID,
4226        ulflags: u32,
4227        lpulobjtype: *mut u32,
4228        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
4229    ) -> windows_core::Result<()>;
4230    fn CompareEntryIDs(
4231        &self,
4232        cbentryid1: u32,
4233        lpentryid1: *mut ENTRYID,
4234        cbentryid2: u32,
4235        lpentryid2: *mut ENTRYID,
4236        ulflags: u32,
4237        lpulresult: *mut u32,
4238    ) -> windows_core::Result<()>;
4239    fn Advise(
4240        &self,
4241        cbentryid: u32,
4242        lpentryid: *mut ENTRYID,
4243        uleventmask: u32,
4244        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
4245        lpulconnection: *mut usize,
4246    ) -> windows_core::Result<()>;
4247    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
4248    fn CreateOneOff(
4249        &self,
4250        lpszname: *mut i8,
4251        lpszadrtype: *mut i8,
4252        lpszaddress: *mut i8,
4253        ulflags: u32,
4254        lpcbentryid: *mut u32,
4255        lppentryid: *mut *mut ENTRYID,
4256    ) -> windows_core::Result<()>;
4257    fn NewEntry(
4258        &self,
4259        uluiparam: usize,
4260        ulflags: u32,
4261        cbeidcontainer: u32,
4262        lpeidcontainer: *mut ENTRYID,
4263        cbeidnewentrytpl: u32,
4264        lpeidnewentrytpl: *mut ENTRYID,
4265        lpcbeidnewentry: *mut u32,
4266        lppeidnewentry: *mut *mut ENTRYID,
4267    ) -> windows_core::Result<()>;
4268    fn ResolveName(
4269        &self,
4270        uluiparam: usize,
4271        ulflags: u32,
4272        lpsznewentrytitle: *mut i8,
4273        lpadrlist: *mut ADRLIST,
4274    ) -> windows_core::Result<()>;
4275    fn Address(
4276        &self,
4277        lpuluiparam: *mut usize,
4278        lpadrparms: *mut ADRPARM,
4279        lppadrlist: *mut *mut ADRLIST,
4280    ) -> windows_core::Result<()>;
4281    fn Details(
4282        &self,
4283        lpuluiparam: *mut usize,
4284        lpfndismiss: LPFNDISMISS,
4285        lpvdismisscontext: *mut core::ffi::c_void,
4286        cbentryid: u32,
4287        lpentryid: *mut ENTRYID,
4288        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
4289        lpvbuttoncontext: *mut core::ffi::c_void,
4290        lpszbuttontext: *mut i8,
4291        ulflags: u32,
4292    ) -> windows_core::Result<()>;
4293    fn RecipOptions(
4294        &self,
4295        uluiparam: usize,
4296        ulflags: u32,
4297        lprecip: *mut ADRENTRY,
4298    ) -> windows_core::Result<()>;
4299    fn QueryDefaultRecipOpt(
4300        &self,
4301        lpszadrtype: *mut i8,
4302        ulflags: u32,
4303        lpcvalues: *mut u32,
4304        lppoptions: *mut *mut SPropValue,
4305    ) -> windows_core::Result<()>;
4306    fn GetPAB(
4307        &self,
4308        lpcbentryid: *mut u32,
4309        lppentryid: *mut *mut ENTRYID,
4310    ) -> windows_core::Result<()>;
4311    fn SetPAB(&self, cbentryid: u32, lpentryid: *mut ENTRYID) -> windows_core::Result<()>;
4312    fn GetDefaultDir(
4313        &self,
4314        lpcbentryid: *mut u32,
4315        lppentryid: *mut *mut ENTRYID,
4316    ) -> windows_core::Result<()>;
4317    fn SetDefaultDir(&self, cbentryid: u32, lpentryid: *mut ENTRYID) -> windows_core::Result<()>;
4318    fn GetSearchPath(
4319        &self,
4320        ulflags: u32,
4321        lppsearchpath: *mut *mut SRowSet,
4322    ) -> windows_core::Result<()>;
4323    fn SetSearchPath(&self, ulflags: u32, lpsearchpath: *mut SRowSet) -> windows_core::Result<()>;
4324    fn PrepareRecips(
4325        &self,
4326        ulflags: u32,
4327        lpproptagarray: *mut SPropTagArray,
4328        lpreciplist: *mut ADRLIST,
4329    ) -> windows_core::Result<()>;
4330}
4331impl IAddrBook_Vtbl {
4332    pub const fn new<Identity: IAddrBook_Impl, const OFFSET: isize>() -> Self {
4333        unsafe extern "system" fn OpenEntry<Identity: IAddrBook_Impl, const OFFSET: isize>(
4334            this: *mut core::ffi::c_void,
4335            cbentryid: u32,
4336            lpentryid: *mut ENTRYID,
4337            lpinterface: *mut windows_core::GUID,
4338            ulflags: u32,
4339            lpulobjtype: *mut u32,
4340            lppunk: *mut *mut core::ffi::c_void,
4341        ) -> windows_core::HRESULT {
4342            unsafe {
4343                let this: &Identity =
4344                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4345                IAddrBook_Impl::OpenEntry(
4346                    this,
4347                    core::mem::transmute_copy(&cbentryid),
4348                    core::mem::transmute_copy(&lpentryid),
4349                    core::mem::transmute_copy(&lpinterface),
4350                    core::mem::transmute_copy(&ulflags),
4351                    core::mem::transmute_copy(&lpulobjtype),
4352                    core::mem::transmute_copy(&lppunk),
4353                )
4354                .into()
4355            }
4356        }
4357        unsafe extern "system" fn CompareEntryIDs<Identity: IAddrBook_Impl, const OFFSET: isize>(
4358            this: *mut core::ffi::c_void,
4359            cbentryid1: u32,
4360            lpentryid1: *mut ENTRYID,
4361            cbentryid2: u32,
4362            lpentryid2: *mut ENTRYID,
4363            ulflags: u32,
4364            lpulresult: *mut u32,
4365        ) -> windows_core::HRESULT {
4366            unsafe {
4367                let this: &Identity =
4368                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4369                IAddrBook_Impl::CompareEntryIDs(
4370                    this,
4371                    core::mem::transmute_copy(&cbentryid1),
4372                    core::mem::transmute_copy(&lpentryid1),
4373                    core::mem::transmute_copy(&cbentryid2),
4374                    core::mem::transmute_copy(&lpentryid2),
4375                    core::mem::transmute_copy(&ulflags),
4376                    core::mem::transmute_copy(&lpulresult),
4377                )
4378                .into()
4379            }
4380        }
4381        unsafe extern "system" fn Advise<Identity: IAddrBook_Impl, const OFFSET: isize>(
4382            this: *mut core::ffi::c_void,
4383            cbentryid: u32,
4384            lpentryid: *mut ENTRYID,
4385            uleventmask: u32,
4386            lpadvisesink: *mut core::ffi::c_void,
4387            lpulconnection: *mut usize,
4388        ) -> windows_core::HRESULT {
4389            unsafe {
4390                let this: &Identity =
4391                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4392                IAddrBook_Impl::Advise(
4393                    this,
4394                    core::mem::transmute_copy(&cbentryid),
4395                    core::mem::transmute_copy(&lpentryid),
4396                    core::mem::transmute_copy(&uleventmask),
4397                    core::mem::transmute_copy(&lpadvisesink),
4398                    core::mem::transmute_copy(&lpulconnection),
4399                )
4400                .into()
4401            }
4402        }
4403        unsafe extern "system" fn Unadvise<Identity: IAddrBook_Impl, const OFFSET: isize>(
4404            this: *mut core::ffi::c_void,
4405            ulconnection: usize,
4406        ) -> windows_core::HRESULT {
4407            unsafe {
4408                let this: &Identity =
4409                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4410                IAddrBook_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
4411            }
4412        }
4413        unsafe extern "system" fn CreateOneOff<Identity: IAddrBook_Impl, const OFFSET: isize>(
4414            this: *mut core::ffi::c_void,
4415            lpszname: *mut i8,
4416            lpszadrtype: *mut i8,
4417            lpszaddress: *mut i8,
4418            ulflags: u32,
4419            lpcbentryid: *mut u32,
4420            lppentryid: *mut *mut ENTRYID,
4421        ) -> windows_core::HRESULT {
4422            unsafe {
4423                let this: &Identity =
4424                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4425                IAddrBook_Impl::CreateOneOff(
4426                    this,
4427                    core::mem::transmute_copy(&lpszname),
4428                    core::mem::transmute_copy(&lpszadrtype),
4429                    core::mem::transmute_copy(&lpszaddress),
4430                    core::mem::transmute_copy(&ulflags),
4431                    core::mem::transmute_copy(&lpcbentryid),
4432                    core::mem::transmute_copy(&lppentryid),
4433                )
4434                .into()
4435            }
4436        }
4437        unsafe extern "system" fn NewEntry<Identity: IAddrBook_Impl, const OFFSET: isize>(
4438            this: *mut core::ffi::c_void,
4439            uluiparam: usize,
4440            ulflags: u32,
4441            cbeidcontainer: u32,
4442            lpeidcontainer: *mut ENTRYID,
4443            cbeidnewentrytpl: u32,
4444            lpeidnewentrytpl: *mut ENTRYID,
4445            lpcbeidnewentry: *mut u32,
4446            lppeidnewentry: *mut *mut ENTRYID,
4447        ) -> windows_core::HRESULT {
4448            unsafe {
4449                let this: &Identity =
4450                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4451                IAddrBook_Impl::NewEntry(
4452                    this,
4453                    core::mem::transmute_copy(&uluiparam),
4454                    core::mem::transmute_copy(&ulflags),
4455                    core::mem::transmute_copy(&cbeidcontainer),
4456                    core::mem::transmute_copy(&lpeidcontainer),
4457                    core::mem::transmute_copy(&cbeidnewentrytpl),
4458                    core::mem::transmute_copy(&lpeidnewentrytpl),
4459                    core::mem::transmute_copy(&lpcbeidnewentry),
4460                    core::mem::transmute_copy(&lppeidnewentry),
4461                )
4462                .into()
4463            }
4464        }
4465        unsafe extern "system" fn ResolveName<Identity: IAddrBook_Impl, const OFFSET: isize>(
4466            this: *mut core::ffi::c_void,
4467            uluiparam: usize,
4468            ulflags: u32,
4469            lpsznewentrytitle: *mut i8,
4470            lpadrlist: *mut ADRLIST,
4471        ) -> windows_core::HRESULT {
4472            unsafe {
4473                let this: &Identity =
4474                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4475                IAddrBook_Impl::ResolveName(
4476                    this,
4477                    core::mem::transmute_copy(&uluiparam),
4478                    core::mem::transmute_copy(&ulflags),
4479                    core::mem::transmute_copy(&lpsznewentrytitle),
4480                    core::mem::transmute_copy(&lpadrlist),
4481                )
4482                .into()
4483            }
4484        }
4485        unsafe extern "system" fn Address<Identity: IAddrBook_Impl, const OFFSET: isize>(
4486            this: *mut core::ffi::c_void,
4487            lpuluiparam: *mut usize,
4488            lpadrparms: *mut ADRPARM,
4489            lppadrlist: *mut *mut ADRLIST,
4490        ) -> windows_core::HRESULT {
4491            unsafe {
4492                let this: &Identity =
4493                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4494                IAddrBook_Impl::Address(
4495                    this,
4496                    core::mem::transmute_copy(&lpuluiparam),
4497                    core::mem::transmute_copy(&lpadrparms),
4498                    core::mem::transmute_copy(&lppadrlist),
4499                )
4500                .into()
4501            }
4502        }
4503        unsafe extern "system" fn Details<Identity: IAddrBook_Impl, const OFFSET: isize>(
4504            this: *mut core::ffi::c_void,
4505            lpuluiparam: *mut usize,
4506            lpfndismiss: LPFNDISMISS,
4507            lpvdismisscontext: *mut core::ffi::c_void,
4508            cbentryid: u32,
4509            lpentryid: *mut ENTRYID,
4510            lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
4511            lpvbuttoncontext: *mut core::ffi::c_void,
4512            lpszbuttontext: *mut i8,
4513            ulflags: u32,
4514        ) -> windows_core::HRESULT {
4515            unsafe {
4516                let this: &Identity =
4517                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4518                IAddrBook_Impl::Details(
4519                    this,
4520                    core::mem::transmute_copy(&lpuluiparam),
4521                    core::mem::transmute_copy(&lpfndismiss),
4522                    core::mem::transmute_copy(&lpvdismisscontext),
4523                    core::mem::transmute_copy(&cbentryid),
4524                    core::mem::transmute_copy(&lpentryid),
4525                    core::mem::transmute_copy(&lpfbuttoncallback),
4526                    core::mem::transmute_copy(&lpvbuttoncontext),
4527                    core::mem::transmute_copy(&lpszbuttontext),
4528                    core::mem::transmute_copy(&ulflags),
4529                )
4530                .into()
4531            }
4532        }
4533        unsafe extern "system" fn RecipOptions<Identity: IAddrBook_Impl, const OFFSET: isize>(
4534            this: *mut core::ffi::c_void,
4535            uluiparam: usize,
4536            ulflags: u32,
4537            lprecip: *mut ADRENTRY,
4538        ) -> windows_core::HRESULT {
4539            unsafe {
4540                let this: &Identity =
4541                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4542                IAddrBook_Impl::RecipOptions(
4543                    this,
4544                    core::mem::transmute_copy(&uluiparam),
4545                    core::mem::transmute_copy(&ulflags),
4546                    core::mem::transmute_copy(&lprecip),
4547                )
4548                .into()
4549            }
4550        }
4551        unsafe extern "system" fn QueryDefaultRecipOpt<
4552            Identity: IAddrBook_Impl,
4553            const OFFSET: isize,
4554        >(
4555            this: *mut core::ffi::c_void,
4556            lpszadrtype: *mut i8,
4557            ulflags: u32,
4558            lpcvalues: *mut u32,
4559            lppoptions: *mut *mut SPropValue,
4560        ) -> windows_core::HRESULT {
4561            unsafe {
4562                let this: &Identity =
4563                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4564                IAddrBook_Impl::QueryDefaultRecipOpt(
4565                    this,
4566                    core::mem::transmute_copy(&lpszadrtype),
4567                    core::mem::transmute_copy(&ulflags),
4568                    core::mem::transmute_copy(&lpcvalues),
4569                    core::mem::transmute_copy(&lppoptions),
4570                )
4571                .into()
4572            }
4573        }
4574        unsafe extern "system" fn GetPAB<Identity: IAddrBook_Impl, const OFFSET: isize>(
4575            this: *mut core::ffi::c_void,
4576            lpcbentryid: *mut u32,
4577            lppentryid: *mut *mut ENTRYID,
4578        ) -> windows_core::HRESULT {
4579            unsafe {
4580                let this: &Identity =
4581                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4582                IAddrBook_Impl::GetPAB(
4583                    this,
4584                    core::mem::transmute_copy(&lpcbentryid),
4585                    core::mem::transmute_copy(&lppentryid),
4586                )
4587                .into()
4588            }
4589        }
4590        unsafe extern "system" fn SetPAB<Identity: IAddrBook_Impl, const OFFSET: isize>(
4591            this: *mut core::ffi::c_void,
4592            cbentryid: u32,
4593            lpentryid: *mut ENTRYID,
4594        ) -> windows_core::HRESULT {
4595            unsafe {
4596                let this: &Identity =
4597                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4598                IAddrBook_Impl::SetPAB(
4599                    this,
4600                    core::mem::transmute_copy(&cbentryid),
4601                    core::mem::transmute_copy(&lpentryid),
4602                )
4603                .into()
4604            }
4605        }
4606        unsafe extern "system" fn GetDefaultDir<Identity: IAddrBook_Impl, const OFFSET: isize>(
4607            this: *mut core::ffi::c_void,
4608            lpcbentryid: *mut u32,
4609            lppentryid: *mut *mut ENTRYID,
4610        ) -> windows_core::HRESULT {
4611            unsafe {
4612                let this: &Identity =
4613                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4614                IAddrBook_Impl::GetDefaultDir(
4615                    this,
4616                    core::mem::transmute_copy(&lpcbentryid),
4617                    core::mem::transmute_copy(&lppentryid),
4618                )
4619                .into()
4620            }
4621        }
4622        unsafe extern "system" fn SetDefaultDir<Identity: IAddrBook_Impl, const OFFSET: isize>(
4623            this: *mut core::ffi::c_void,
4624            cbentryid: u32,
4625            lpentryid: *mut ENTRYID,
4626        ) -> windows_core::HRESULT {
4627            unsafe {
4628                let this: &Identity =
4629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4630                IAddrBook_Impl::SetDefaultDir(
4631                    this,
4632                    core::mem::transmute_copy(&cbentryid),
4633                    core::mem::transmute_copy(&lpentryid),
4634                )
4635                .into()
4636            }
4637        }
4638        unsafe extern "system" fn GetSearchPath<Identity: IAddrBook_Impl, const OFFSET: isize>(
4639            this: *mut core::ffi::c_void,
4640            ulflags: u32,
4641            lppsearchpath: *mut *mut SRowSet,
4642        ) -> windows_core::HRESULT {
4643            unsafe {
4644                let this: &Identity =
4645                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4646                IAddrBook_Impl::GetSearchPath(
4647                    this,
4648                    core::mem::transmute_copy(&ulflags),
4649                    core::mem::transmute_copy(&lppsearchpath),
4650                )
4651                .into()
4652            }
4653        }
4654        unsafe extern "system" fn SetSearchPath<Identity: IAddrBook_Impl, const OFFSET: isize>(
4655            this: *mut core::ffi::c_void,
4656            ulflags: u32,
4657            lpsearchpath: *mut SRowSet,
4658        ) -> windows_core::HRESULT {
4659            unsafe {
4660                let this: &Identity =
4661                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4662                IAddrBook_Impl::SetSearchPath(
4663                    this,
4664                    core::mem::transmute_copy(&ulflags),
4665                    core::mem::transmute_copy(&lpsearchpath),
4666                )
4667                .into()
4668            }
4669        }
4670        unsafe extern "system" fn PrepareRecips<Identity: IAddrBook_Impl, const OFFSET: isize>(
4671            this: *mut core::ffi::c_void,
4672            ulflags: u32,
4673            lpproptagarray: *mut SPropTagArray,
4674            lpreciplist: *mut ADRLIST,
4675        ) -> windows_core::HRESULT {
4676            unsafe {
4677                let this: &Identity =
4678                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4679                IAddrBook_Impl::PrepareRecips(
4680                    this,
4681                    core::mem::transmute_copy(&ulflags),
4682                    core::mem::transmute_copy(&lpproptagarray),
4683                    core::mem::transmute_copy(&lpreciplist),
4684                )
4685                .into()
4686            }
4687        }
4688        Self {
4689            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
4690            OpenEntry: OpenEntry::<Identity, OFFSET>,
4691            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
4692            Advise: Advise::<Identity, OFFSET>,
4693            Unadvise: Unadvise::<Identity, OFFSET>,
4694            CreateOneOff: CreateOneOff::<Identity, OFFSET>,
4695            NewEntry: NewEntry::<Identity, OFFSET>,
4696            ResolveName: ResolveName::<Identity, OFFSET>,
4697            Address: Address::<Identity, OFFSET>,
4698            Details: Details::<Identity, OFFSET>,
4699            RecipOptions: RecipOptions::<Identity, OFFSET>,
4700            QueryDefaultRecipOpt: QueryDefaultRecipOpt::<Identity, OFFSET>,
4701            GetPAB: GetPAB::<Identity, OFFSET>,
4702            SetPAB: SetPAB::<Identity, OFFSET>,
4703            GetDefaultDir: GetDefaultDir::<Identity, OFFSET>,
4704            SetDefaultDir: SetDefaultDir::<Identity, OFFSET>,
4705            GetSearchPath: GetSearchPath::<Identity, OFFSET>,
4706            SetSearchPath: SetSearchPath::<Identity, OFFSET>,
4707            PrepareRecips: PrepareRecips::<Identity, OFFSET>,
4708        }
4709    }
4710    pub fn matches(iid: &windows_core::GUID) -> bool {
4711        iid == &<IAddrBook as windows_core::Interface>::IID
4712            || iid == &<IMAPIProp as windows_core::Interface>::IID
4713    }
4714}
4715impl windows_core::RuntimeName for IAddrBook {}
4716windows_core::imp::define_interface!(IAttach, IAttach_Vtbl, 0);
4717impl core::ops::Deref for IAttach {
4718    type Target = IMAPIProp;
4719    fn deref(&self) -> &Self::Target {
4720        unsafe { core::mem::transmute(self) }
4721    }
4722}
4723windows_core::imp::interface_hierarchy!(IAttach, windows_core::IUnknown, IMAPIProp);
4724#[repr(C)]
4725pub struct IAttach_Vtbl {
4726    pub base__: IMAPIProp_Vtbl,
4727}
4728pub trait IAttach_Impl: IMAPIProp_Impl {}
4729impl IAttach_Vtbl {
4730    pub const fn new<Identity: IAttach_Impl, const OFFSET: isize>() -> Self {
4731        Self {
4732            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
4733        }
4734    }
4735    pub fn matches(iid: &windows_core::GUID) -> bool {
4736        iid == &<IAttach as windows_core::Interface>::IID
4737            || iid == &<IMAPIProp as windows_core::Interface>::IID
4738    }
4739}
4740impl windows_core::RuntimeName for IAttach {}
4741pub const IBL_FIRST: BODYLOCATION = BODYLOCATION(2i32);
4742pub const IBL_LAST: BODYLOCATION = BODYLOCATION(3i32);
4743pub const IBL_NEXT: BODYLOCATION = BODYLOCATION(4i32);
4744pub const IBL_PARENT: BODYLOCATION = BODYLOCATION(1i32);
4745pub const IBL_PREVIOUS: BODYLOCATION = BODYLOCATION(5i32);
4746pub const IBL_ROOT: BODYLOCATION = BODYLOCATION(0i32);
4747pub const IBT_ATTACHMENT: IMSGBODYTYPE = IMSGBODYTYPE(1i32);
4748pub const IBT_AUTOATTACH: IMSGBODYTYPE = IMSGBODYTYPE(4i32);
4749pub const IBT_CSETTAGGED: IMSGBODYTYPE = IMSGBODYTYPE(3i32);
4750pub const IBT_EMPTY: IMSGBODYTYPE = IMSGBODYTYPE(2i32);
4751pub const IBT_SECURE: IMSGBODYTYPE = IMSGBODYTYPE(0i32);
4752pub const ICON_INDEX_ACCEPT: u32 = 1029u32;
4753pub const ICON_INDEX_ASSIGNEE_TASK: u32 = 1282u32;
4754pub const ICON_INDEX_ASSIGNER_TASK: u32 = 1283u32;
4755pub const ICON_INDEX_CANCELATION: u32 = 1032u32;
4756pub const ICON_INDEX_CONTACT: u32 = 512u32;
4757pub const ICON_INDEX_DECLINE: u32 = 1030u32;
4758pub const ICON_INDEX_DELIVERY_MAIL: u32 = 264u32;
4759pub const ICON_INDEX_DISTRIBUTION_LIST: u32 = 514u32;
4760pub const ICON_INDEX_FORWARDED_MAIL: u32 = 262u32;
4761pub const ICON_INDEX_INFORMATIONAL_UPDATE: u32 = 1033u32;
4762pub const ICON_INDEX_IRM_COMPOSE_MAIL: u32 = 309u32;
4763pub const ICON_INDEX_IRM_FORWARDED_MAIL: u32 = 307u32;
4764pub const ICON_INDEX_IRM_READ_MAIL: u32 = 305u32;
4765pub const ICON_INDEX_IRM_REPLIED_MAIL: u32 = 308u32;
4766pub const ICON_INDEX_IRM_UNREAD_MAIL: u32 = 306u32;
4767pub const ICON_INDEX_JOURNAL_CONVERSATION: u32 = 1537u32;
4768pub const ICON_INDEX_JOURNAL_DOCUMENT: u32 = 1554u32;
4769pub const ICON_INDEX_JOURNAL_EMAIL_MESSAGE: u32 = 1538u32;
4770pub const ICON_INDEX_JOURNAL_FAX: u32 = 1545u32;
4771pub const ICON_INDEX_JOURNAL_LETTER: u32 = 1548u32;
4772pub const ICON_INDEX_JOURNAL_MEETING: u32 = 1555u32;
4773pub const ICON_INDEX_JOURNAL_MEETING_CANCELLATION: u32 = 1556u32;
4774pub const ICON_INDEX_JOURNAL_MEETING_REQUEST: u32 = 1539u32;
4775pub const ICON_INDEX_JOURNAL_MEETING_RESPONSE: u32 = 1540u32;
4776pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_ACCESS: u32 = 1552u32;
4777pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_EXCEL: u32 = 1550u32;
4778pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_POWER_POINT: u32 = 1551u32;
4779pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_WORD: u32 = 1549u32;
4780pub const ICON_INDEX_JOURNAL_NOTE: u32 = 1544u32;
4781pub const ICON_INDEX_JOURNAL_PHONE_CALL: u32 = 1546u32;
4782pub const ICON_INDEX_JOURNAL_REMOTE_SESSION: u32 = 1557u32;
4783pub const ICON_INDEX_JOURNAL_TASK_REQUEST: u32 = 1542u32;
4784pub const ICON_INDEX_JOURNAL_TASK_RESPONSE: u32 = 1543u32;
4785pub const ICON_INDEX_MAIL_ENCRYPTED: u32 = 272u32;
4786pub const ICON_INDEX_MAIL_ENCRYPTED_FORWARDED: u32 = 277u32;
4787pub const ICON_INDEX_MAIL_ENCRYPTED_READ: u32 = 279u32;
4788pub const ICON_INDEX_MAIL_ENCRYPTED_REPLIED: u32 = 275u32;
4789pub const ICON_INDEX_MAIL_SIGNED: u32 = 271u32;
4790pub const ICON_INDEX_MAIL_SMIME_RECEIPT: u32 = 274u32;
4791pub const ICON_INDEX_MAIL_SMIME_SIGNED: u32 = 273u32;
4792pub const ICON_INDEX_MAIL_SMIME_SIGNED_FORWARDED: u32 = 278u32;
4793pub const ICON_INDEX_MAIL_SMIME_SIGNED_READ: u32 = 280u32;
4794pub const ICON_INDEX_MAIL_SMIME_SIGNED_REPLIED: u32 = 276u32;
4795pub const ICON_INDEX_MEETING_REQUEST: u32 = 1028u32;
4796pub const ICON_INDEX_NEW_MAIL: u32 = 4294967295u32;
4797pub const ICON_INDEX_NONDELIVERY_MAIL: u32 = 266u32;
4798pub const ICON_INDEX_NONREAD_MAIL: u32 = 267u32;
4799pub const ICON_INDEX_OTHER: u32 = 3u32;
4800pub const ICON_INDEX_OUT_OF_OFFICE_MAIL: u32 = 283u32;
4801pub const ICON_INDEX_POST: u32 = 1u32;
4802pub const ICON_INDEX_READ_MAIL: u32 = 256u32;
4803pub const ICON_INDEX_READ_RECEIPT_MAIL: u32 = 265u32;
4804pub const ICON_INDEX_RECALL_F_MAIL: u32 = 269u32;
4805pub const ICON_INDEX_RECALL_MAIL: u32 = 284u32;
4806pub const ICON_INDEX_RECALL_S_MAIL: u32 = 268u32;
4807pub const ICON_INDEX_RECEIPT_MAIL: u32 = 260u32;
4808pub const ICON_INDEX_RECURRING_APPOINTMENT: u32 = 1025u32;
4809pub const ICON_INDEX_RECURRING_MEETING: u32 = 1027u32;
4810pub const ICON_INDEX_REMOTE_MAIL: u32 = 263u32;
4811pub const ICON_INDEX_REPLIED_MAIL: u32 = 261u32;
4812pub const ICON_INDEX_SINGLE_INSTANCE_APPOINTMENT: u32 = 1024u32;
4813pub const ICON_INDEX_SINGLE_INSTANCE_MEETING: u32 = 1026u32;
4814pub const ICON_INDEX_STICKY_NOTE_BLUE: u32 = 768u32;
4815pub const ICON_INDEX_STICKY_NOTE_GREEN: u32 = 769u32;
4816pub const ICON_INDEX_STICKY_NOTE_PINK: u32 = 770u32;
4817pub const ICON_INDEX_STICKY_NOTE_WHITE: u32 = 772u32;
4818pub const ICON_INDEX_STICKY_NOTE_YELLOW: u32 = 771u32;
4819pub const ICON_INDEX_SUBMITTED_MAIL: u32 = 258u32;
4820pub const ICON_INDEX_TASK: u32 = 1280u32;
4821pub const ICON_INDEX_TASK_ACCEPTANCE: u32 = 1285u32;
4822pub const ICON_INDEX_TASK_REJECTION: u32 = 1286u32;
4823pub const ICON_INDEX_TASK_REQUEST: u32 = 1284u32;
4824pub const ICON_INDEX_TENTATIVE: u32 = 1031u32;
4825pub const ICON_INDEX_TRACKED_MAIL: u32 = 304u32;
4826pub const ICON_INDEX_TRACKING_MAIL: u32 = 270u32;
4827pub const ICON_INDEX_UNASSIGNED_RECURRING_TASK: u32 = 1281u32;
4828pub const ICON_INDEX_UNREAD_MAIL: u32 = 257u32;
4829pub const ICON_INDEX_UNSENT_MAIL: u32 = 259u32;
4830windows_core::imp::define_interface!(
4831    IDistList,
4832    IDistList_Vtbl,
4833    0x0002030e_0000_0000_c000_000000000046
4834);
4835impl core::ops::Deref for IDistList {
4836    type Target = IMAPIContainer;
4837    fn deref(&self) -> &Self::Target {
4838        unsafe { core::mem::transmute(self) }
4839    }
4840}
4841windows_core::imp::interface_hierarchy!(
4842    IDistList,
4843    windows_core::IUnknown,
4844    IMAPIProp,
4845    IMAPIContainer
4846);
4847impl IDistList {
4848    pub unsafe fn CreateEntry(
4849        &self,
4850        cbentryid: u32,
4851        lpentryid: *mut ENTRYID,
4852        ulcreateflags: u32,
4853        lppmapipropentry: *mut Option<IMAPIProp>,
4854    ) -> windows_core::Result<()> {
4855        unsafe {
4856            (windows_core::Interface::vtable(self).CreateEntry)(
4857                windows_core::Interface::as_raw(self),
4858                cbentryid,
4859                lpentryid as _,
4860                ulcreateflags,
4861                core::mem::transmute(lppmapipropentry),
4862            )
4863            .ok()
4864        }
4865    }
4866    pub unsafe fn CopyEntries<P2>(
4867        &self,
4868        lpentries: *mut SBinaryArray,
4869        uluiparam: usize,
4870        lpprogress: P2,
4871        ulflags: u32,
4872    ) -> windows_core::Result<()>
4873    where
4874        P2: windows_core::Param<IMAPIProgress>,
4875    {
4876        unsafe {
4877            (windows_core::Interface::vtable(self).CopyEntries)(
4878                windows_core::Interface::as_raw(self),
4879                lpentries as _,
4880                uluiparam,
4881                lpprogress.param().abi(),
4882                ulflags,
4883            )
4884            .ok()
4885        }
4886    }
4887    pub unsafe fn DeleteEntries(
4888        &self,
4889        lpentries: *mut SBinaryArray,
4890        ulflags: u32,
4891    ) -> windows_core::Result<()> {
4892        unsafe {
4893            (windows_core::Interface::vtable(self).DeleteEntries)(
4894                windows_core::Interface::as_raw(self),
4895                lpentries as _,
4896                ulflags,
4897            )
4898            .ok()
4899        }
4900    }
4901    pub unsafe fn ResolveNames(
4902        &self,
4903        lpproptagarray: *mut SPropTagArray,
4904        ulflags: u32,
4905        lpadrlist: *mut ADRLIST,
4906        lpflaglist: *mut FlagList,
4907    ) -> windows_core::Result<()> {
4908        unsafe {
4909            (windows_core::Interface::vtable(self).ResolveNames)(
4910                windows_core::Interface::as_raw(self),
4911                lpproptagarray as _,
4912                ulflags,
4913                lpadrlist as _,
4914                lpflaglist as _,
4915            )
4916            .ok()
4917        }
4918    }
4919}
4920#[repr(C)]
4921pub struct IDistList_Vtbl {
4922    pub base__: IMAPIContainer_Vtbl,
4923    pub CreateEntry: unsafe extern "system" fn(
4924        *mut core::ffi::c_void,
4925        u32,
4926        *mut ENTRYID,
4927        u32,
4928        *mut *mut core::ffi::c_void,
4929    ) -> windows_core::HRESULT,
4930    pub CopyEntries: unsafe extern "system" fn(
4931        *mut core::ffi::c_void,
4932        *mut SBinaryArray,
4933        usize,
4934        *mut core::ffi::c_void,
4935        u32,
4936    ) -> windows_core::HRESULT,
4937    pub DeleteEntries: unsafe extern "system" fn(
4938        *mut core::ffi::c_void,
4939        *mut SBinaryArray,
4940        u32,
4941    ) -> windows_core::HRESULT,
4942    pub ResolveNames: unsafe extern "system" fn(
4943        *mut core::ffi::c_void,
4944        *mut SPropTagArray,
4945        u32,
4946        *mut ADRLIST,
4947        *mut FlagList,
4948    ) -> windows_core::HRESULT,
4949}
4950pub trait IDistList_Impl: IMAPIContainer_Impl {
4951    fn CreateEntry(
4952        &self,
4953        cbentryid: u32,
4954        lpentryid: *mut ENTRYID,
4955        ulcreateflags: u32,
4956        lppmapipropentry: windows_core::OutRef<'_, IMAPIProp>,
4957    ) -> windows_core::Result<()>;
4958    fn CopyEntries(
4959        &self,
4960        lpentries: *mut SBinaryArray,
4961        uluiparam: usize,
4962        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
4963        ulflags: u32,
4964    ) -> windows_core::Result<()>;
4965    fn DeleteEntries(&self, lpentries: *mut SBinaryArray, ulflags: u32)
4966        -> windows_core::Result<()>;
4967    fn ResolveNames(
4968        &self,
4969        lpproptagarray: *mut SPropTagArray,
4970        ulflags: u32,
4971        lpadrlist: *mut ADRLIST,
4972        lpflaglist: *mut FlagList,
4973    ) -> windows_core::Result<()>;
4974}
4975impl IDistList_Vtbl {
4976    pub const fn new<Identity: IDistList_Impl, const OFFSET: isize>() -> Self {
4977        unsafe extern "system" fn CreateEntry<Identity: IDistList_Impl, const OFFSET: isize>(
4978            this: *mut core::ffi::c_void,
4979            cbentryid: u32,
4980            lpentryid: *mut ENTRYID,
4981            ulcreateflags: u32,
4982            lppmapipropentry: *mut *mut core::ffi::c_void,
4983        ) -> windows_core::HRESULT {
4984            unsafe {
4985                let this: &Identity =
4986                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4987                IDistList_Impl::CreateEntry(
4988                    this,
4989                    core::mem::transmute_copy(&cbentryid),
4990                    core::mem::transmute_copy(&lpentryid),
4991                    core::mem::transmute_copy(&ulcreateflags),
4992                    core::mem::transmute_copy(&lppmapipropentry),
4993                )
4994                .into()
4995            }
4996        }
4997        unsafe extern "system" fn CopyEntries<Identity: IDistList_Impl, const OFFSET: isize>(
4998            this: *mut core::ffi::c_void,
4999            lpentries: *mut SBinaryArray,
5000            uluiparam: usize,
5001            lpprogress: *mut core::ffi::c_void,
5002            ulflags: u32,
5003        ) -> windows_core::HRESULT {
5004            unsafe {
5005                let this: &Identity =
5006                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5007                IDistList_Impl::CopyEntries(
5008                    this,
5009                    core::mem::transmute_copy(&lpentries),
5010                    core::mem::transmute_copy(&uluiparam),
5011                    core::mem::transmute_copy(&lpprogress),
5012                    core::mem::transmute_copy(&ulflags),
5013                )
5014                .into()
5015            }
5016        }
5017        unsafe extern "system" fn DeleteEntries<Identity: IDistList_Impl, const OFFSET: isize>(
5018            this: *mut core::ffi::c_void,
5019            lpentries: *mut SBinaryArray,
5020            ulflags: u32,
5021        ) -> windows_core::HRESULT {
5022            unsafe {
5023                let this: &Identity =
5024                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5025                IDistList_Impl::DeleteEntries(
5026                    this,
5027                    core::mem::transmute_copy(&lpentries),
5028                    core::mem::transmute_copy(&ulflags),
5029                )
5030                .into()
5031            }
5032        }
5033        unsafe extern "system" fn ResolveNames<Identity: IDistList_Impl, const OFFSET: isize>(
5034            this: *mut core::ffi::c_void,
5035            lpproptagarray: *mut SPropTagArray,
5036            ulflags: u32,
5037            lpadrlist: *mut ADRLIST,
5038            lpflaglist: *mut FlagList,
5039        ) -> windows_core::HRESULT {
5040            unsafe {
5041                let this: &Identity =
5042                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5043                IDistList_Impl::ResolveNames(
5044                    this,
5045                    core::mem::transmute_copy(&lpproptagarray),
5046                    core::mem::transmute_copy(&ulflags),
5047                    core::mem::transmute_copy(&lpadrlist),
5048                    core::mem::transmute_copy(&lpflaglist),
5049                )
5050                .into()
5051            }
5052        }
5053        Self {
5054            base__: IMAPIContainer_Vtbl::new::<Identity, OFFSET>(),
5055            CreateEntry: CreateEntry::<Identity, OFFSET>,
5056            CopyEntries: CopyEntries::<Identity, OFFSET>,
5057            DeleteEntries: DeleteEntries::<Identity, OFFSET>,
5058            ResolveNames: ResolveNames::<Identity, OFFSET>,
5059        }
5060    }
5061    pub fn matches(iid: &windows_core::GUID) -> bool {
5062        iid == &<IDistList as windows_core::Interface>::IID
5063            || iid == &<IMAPIProp as windows_core::Interface>::IID
5064            || iid == &<IMAPIContainer as windows_core::Interface>::IID
5065    }
5066}
5067impl windows_core::RuntimeName for IDistList {}
5068pub const IDistList_CopyEntries: METHODS = METHODS(47i32);
5069pub const IDistList_CreateEntry: METHODS = METHODS(46i32);
5070pub const IDistList_DeleteEntries: METHODS = METHODS(48i32);
5071pub const IDistList_ResolveNames: METHODS = METHODS(49i32);
5072pub const IET_7BIT: ENCODINGTYPE = ENCODINGTYPE(4i32);
5073pub const IET_8BIT: ENCODINGTYPE = ENCODINGTYPE(5i32);
5074pub const IET_BASE64: ENCODINGTYPE = ENCODINGTYPE(1i32);
5075pub const IET_BINARY: ENCODINGTYPE = ENCODINGTYPE(0i32);
5076pub const IET_BINHEX40: ENCODINGTYPE = ENCODINGTYPE(12i32);
5077pub const IET_CURRENT: ENCODINGTYPE = ENCODINGTYPE(10i32);
5078pub const IET_ENCODED: ENCODINGTYPE = ENCODINGTYPE(9i32);
5079pub const IET_INETCSET: ENCODINGTYPE = ENCODINGTYPE(6i32);
5080pub const IET_LAST: ENCODINGTYPE = ENCODINGTYPE(13i32);
5081pub const IET_QP: ENCODINGTYPE = ENCODINGTYPE(3i32);
5082pub const IET_RFC1522: ENCODINGTYPE = ENCODINGTYPE(8i32);
5083pub const IET_UNICODE: ENCODINGTYPE = ENCODINGTYPE(7i32);
5084pub const IET_UNKNOWN: ENCODINGTYPE = ENCODINGTYPE(11i32);
5085pub const IET_UUENCODE: ENCODINGTYPE = ENCODINGTYPE(2i32);
5086windows_core::imp::define_interface!(
5087    IExchangeBadItemCallback,
5088    IExchangeBadItemCallback_Vtbl,
5089    0x1df85ab7_4d20_4a57_b170_2f062136c1d6
5090);
5091windows_core::imp::interface_hierarchy!(IExchangeBadItemCallback, windows_core::IUnknown);
5092impl IExchangeBadItemCallback {
5093    pub unsafe fn BadItem<P2>(
5094        &self,
5095        hresult: windows_core::HRESULT,
5096        ulflags: u32,
5097        lpwszfoldername: P2,
5098        lpsbfoldereid: *mut SBinary,
5099        cvalues: u32,
5100        lpproparray: *mut SPropValue,
5101    ) -> windows_core::Result<()>
5102    where
5103        P2: windows_core::Param<windows_core::PCWSTR>,
5104    {
5105        unsafe {
5106            (windows_core::Interface::vtable(self).BadItem)(
5107                windows_core::Interface::as_raw(self),
5108                hresult,
5109                ulflags,
5110                lpwszfoldername.param().abi(),
5111                lpsbfoldereid as _,
5112                cvalues,
5113                lpproparray as _,
5114            )
5115            .ok()
5116        }
5117    }
5118}
5119#[repr(C)]
5120pub struct IExchangeBadItemCallback_Vtbl {
5121    pub base__: windows_core::IUnknown_Vtbl,
5122    pub BadItem: unsafe extern "system" fn(
5123        *mut core::ffi::c_void,
5124        windows_core::HRESULT,
5125        u32,
5126        windows_core::PCWSTR,
5127        *mut SBinary,
5128        u32,
5129        *mut SPropValue,
5130    ) -> windows_core::HRESULT,
5131}
5132pub trait IExchangeBadItemCallback_Impl: windows_core::IUnknownImpl {
5133    fn BadItem(
5134        &self,
5135        hresult: windows_core::HRESULT,
5136        ulflags: u32,
5137        lpwszfoldername: &windows_core::PCWSTR,
5138        lpsbfoldereid: *mut SBinary,
5139        cvalues: u32,
5140        lpproparray: *mut SPropValue,
5141    ) -> windows_core::Result<()>;
5142}
5143impl IExchangeBadItemCallback_Vtbl {
5144    pub const fn new<Identity: IExchangeBadItemCallback_Impl, const OFFSET: isize>() -> Self {
5145        unsafe extern "system" fn BadItem<
5146            Identity: IExchangeBadItemCallback_Impl,
5147            const OFFSET: isize,
5148        >(
5149            this: *mut core::ffi::c_void,
5150            hresult: windows_core::HRESULT,
5151            ulflags: u32,
5152            lpwszfoldername: windows_core::PCWSTR,
5153            lpsbfoldereid: *mut SBinary,
5154            cvalues: u32,
5155            lpproparray: *mut SPropValue,
5156        ) -> windows_core::HRESULT {
5157            unsafe {
5158                let this: &Identity =
5159                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5160                IExchangeBadItemCallback_Impl::BadItem(
5161                    this,
5162                    core::mem::transmute_copy(&hresult),
5163                    core::mem::transmute_copy(&ulflags),
5164                    core::mem::transmute(&lpwszfoldername),
5165                    core::mem::transmute_copy(&lpsbfoldereid),
5166                    core::mem::transmute_copy(&cvalues),
5167                    core::mem::transmute_copy(&lpproparray),
5168                )
5169                .into()
5170            }
5171        }
5172        Self {
5173            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5174            BadItem: BadItem::<Identity, OFFSET>,
5175        }
5176    }
5177    pub fn matches(iid: &windows_core::GUID) -> bool {
5178        iid == &<IExchangeBadItemCallback as windows_core::Interface>::IID
5179    }
5180}
5181impl windows_core::RuntimeName for IExchangeBadItemCallback {}
5182windows_core::imp::define_interface!(IExchangeChangeAdviseSink, IExchangeChangeAdviseSink_Vtbl, 0);
5183windows_core::imp::interface_hierarchy!(IExchangeChangeAdviseSink, windows_core::IUnknown);
5184impl IExchangeChangeAdviseSink {
5185    pub unsafe fn OnNotify(&self, ulflags: u32, lpentrylist: *mut SBinaryArray) -> u32 {
5186        unsafe {
5187            (windows_core::Interface::vtable(self).OnNotify)(
5188                windows_core::Interface::as_raw(self),
5189                ulflags,
5190                lpentrylist as _,
5191            )
5192        }
5193    }
5194}
5195#[repr(C)]
5196pub struct IExchangeChangeAdviseSink_Vtbl {
5197    pub base__: windows_core::IUnknown_Vtbl,
5198    pub OnNotify: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SBinaryArray) -> u32,
5199}
5200pub trait IExchangeChangeAdviseSink_Impl: windows_core::IUnknownImpl {
5201    fn OnNotify(&self, ulflags: u32, lpentrylist: *mut SBinaryArray) -> u32;
5202}
5203impl IExchangeChangeAdviseSink_Vtbl {
5204    pub const fn new<Identity: IExchangeChangeAdviseSink_Impl, const OFFSET: isize>() -> Self {
5205        unsafe extern "system" fn OnNotify<
5206            Identity: IExchangeChangeAdviseSink_Impl,
5207            const OFFSET: isize,
5208        >(
5209            this: *mut core::ffi::c_void,
5210            ulflags: u32,
5211            lpentrylist: *mut SBinaryArray,
5212        ) -> u32 {
5213            unsafe {
5214                let this: &Identity =
5215                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5216                IExchangeChangeAdviseSink_Impl::OnNotify(
5217                    this,
5218                    core::mem::transmute_copy(&ulflags),
5219                    core::mem::transmute_copy(&lpentrylist),
5220                )
5221            }
5222        }
5223        Self {
5224            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5225            OnNotify: OnNotify::<Identity, OFFSET>,
5226        }
5227    }
5228    pub fn matches(iid: &windows_core::GUID) -> bool {
5229        iid == &<IExchangeChangeAdviseSink as windows_core::Interface>::IID
5230    }
5231}
5232impl windows_core::RuntimeName for IExchangeChangeAdviseSink {}
5233windows_core::imp::define_interface!(
5234    IExchangeChangeAdvisor,
5235    IExchangeChangeAdvisor_Vtbl,
5236    0x1e300720_a839_11cf_bde0_00004c7531e3
5237);
5238windows_core::imp::interface_hierarchy!(IExchangeChangeAdvisor, windows_core::IUnknown);
5239impl IExchangeChangeAdvisor {
5240    pub unsafe fn GetLastError(
5241        &self,
5242        hresult: windows_core::HRESULT,
5243        ulflags: u32,
5244        lppmapierror: *mut *mut MAPIERROR,
5245    ) -> windows_core::Result<()> {
5246        unsafe {
5247            (windows_core::Interface::vtable(self).GetLastError)(
5248                windows_core::Interface::as_raw(self),
5249                hresult,
5250                ulflags,
5251                lppmapierror as _,
5252            )
5253            .ok()
5254        }
5255    }
5256    pub unsafe fn Config<P0, P2>(
5257        &self,
5258        lpstream: P0,
5259        lpguid: *mut windows_core::GUID,
5260        lpadvisesink: P2,
5261        ulflags: u32,
5262    ) -> windows_core::Result<()>
5263    where
5264        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5265        P2: windows_core::Param<IExchangeChangeAdviseSink>,
5266    {
5267        unsafe {
5268            (windows_core::Interface::vtable(self).Config)(
5269                windows_core::Interface::as_raw(self),
5270                lpstream.param().abi(),
5271                lpguid as _,
5272                lpadvisesink.param().abi(),
5273                ulflags,
5274            )
5275            .ok()
5276        }
5277    }
5278    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
5279    where
5280        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5281    {
5282        unsafe {
5283            (windows_core::Interface::vtable(self).UpdateState)(
5284                windows_core::Interface::as_raw(self),
5285                lpstream.param().abi(),
5286            )
5287            .ok()
5288        }
5289    }
5290    pub unsafe fn AddKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
5291        unsafe {
5292            (windows_core::Interface::vtable(self).AddKeys)(
5293                windows_core::Interface::as_raw(self),
5294                lpentrylist as _,
5295            )
5296            .ok()
5297        }
5298    }
5299    pub unsafe fn RemoveKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
5300        unsafe {
5301            (windows_core::Interface::vtable(self).RemoveKeys)(
5302                windows_core::Interface::as_raw(self),
5303                lpentrylist as _,
5304            )
5305            .ok()
5306        }
5307    }
5308}
5309#[repr(C)]
5310pub struct IExchangeChangeAdvisor_Vtbl {
5311    pub base__: windows_core::IUnknown_Vtbl,
5312    pub GetLastError: unsafe extern "system" fn(
5313        *mut core::ffi::c_void,
5314        windows_core::HRESULT,
5315        u32,
5316        *mut *mut MAPIERROR,
5317    ) -> windows_core::HRESULT,
5318    pub Config: unsafe extern "system" fn(
5319        *mut core::ffi::c_void,
5320        *mut core::ffi::c_void,
5321        *mut windows_core::GUID,
5322        *mut core::ffi::c_void,
5323        u32,
5324    ) -> windows_core::HRESULT,
5325    pub UpdateState: unsafe extern "system" fn(
5326        *mut core::ffi::c_void,
5327        *mut core::ffi::c_void,
5328    ) -> windows_core::HRESULT,
5329    pub AddKeys: unsafe extern "system" fn(
5330        *mut core::ffi::c_void,
5331        *mut SBinaryArray,
5332    ) -> windows_core::HRESULT,
5333    pub RemoveKeys: unsafe extern "system" fn(
5334        *mut core::ffi::c_void,
5335        *mut SBinaryArray,
5336    ) -> windows_core::HRESULT,
5337}
5338pub trait IExchangeChangeAdvisor_Impl: windows_core::IUnknownImpl {
5339    fn GetLastError(
5340        &self,
5341        hresult: windows_core::HRESULT,
5342        ulflags: u32,
5343        lppmapierror: *mut *mut MAPIERROR,
5344    ) -> windows_core::Result<()>;
5345    fn Config(
5346        &self,
5347        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
5348        lpguid: *mut windows_core::GUID,
5349        lpadvisesink: windows_core::Ref<'_, IExchangeChangeAdviseSink>,
5350        ulflags: u32,
5351    ) -> windows_core::Result<()>;
5352    fn UpdateState(
5353        &self,
5354        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
5355    ) -> windows_core::Result<()>;
5356    fn AddKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
5357    fn RemoveKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
5358}
5359impl IExchangeChangeAdvisor_Vtbl {
5360    pub const fn new<Identity: IExchangeChangeAdvisor_Impl, const OFFSET: isize>() -> Self {
5361        unsafe extern "system" fn GetLastError<
5362            Identity: IExchangeChangeAdvisor_Impl,
5363            const OFFSET: isize,
5364        >(
5365            this: *mut core::ffi::c_void,
5366            hresult: windows_core::HRESULT,
5367            ulflags: u32,
5368            lppmapierror: *mut *mut MAPIERROR,
5369        ) -> windows_core::HRESULT {
5370            unsafe {
5371                let this: &Identity =
5372                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5373                IExchangeChangeAdvisor_Impl::GetLastError(
5374                    this,
5375                    core::mem::transmute_copy(&hresult),
5376                    core::mem::transmute_copy(&ulflags),
5377                    core::mem::transmute_copy(&lppmapierror),
5378                )
5379                .into()
5380            }
5381        }
5382        unsafe extern "system" fn Config<
5383            Identity: IExchangeChangeAdvisor_Impl,
5384            const OFFSET: isize,
5385        >(
5386            this: *mut core::ffi::c_void,
5387            lpstream: *mut core::ffi::c_void,
5388            lpguid: *mut windows_core::GUID,
5389            lpadvisesink: *mut core::ffi::c_void,
5390            ulflags: u32,
5391        ) -> windows_core::HRESULT {
5392            unsafe {
5393                let this: &Identity =
5394                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5395                IExchangeChangeAdvisor_Impl::Config(
5396                    this,
5397                    core::mem::transmute_copy(&lpstream),
5398                    core::mem::transmute_copy(&lpguid),
5399                    core::mem::transmute_copy(&lpadvisesink),
5400                    core::mem::transmute_copy(&ulflags),
5401                )
5402                .into()
5403            }
5404        }
5405        unsafe extern "system" fn UpdateState<
5406            Identity: IExchangeChangeAdvisor_Impl,
5407            const OFFSET: isize,
5408        >(
5409            this: *mut core::ffi::c_void,
5410            lpstream: *mut core::ffi::c_void,
5411        ) -> windows_core::HRESULT {
5412            unsafe {
5413                let this: &Identity =
5414                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5415                IExchangeChangeAdvisor_Impl::UpdateState(this, core::mem::transmute_copy(&lpstream))
5416                    .into()
5417            }
5418        }
5419        unsafe extern "system" fn AddKeys<
5420            Identity: IExchangeChangeAdvisor_Impl,
5421            const OFFSET: isize,
5422        >(
5423            this: *mut core::ffi::c_void,
5424            lpentrylist: *mut SBinaryArray,
5425        ) -> windows_core::HRESULT {
5426            unsafe {
5427                let this: &Identity =
5428                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5429                IExchangeChangeAdvisor_Impl::AddKeys(this, core::mem::transmute_copy(&lpentrylist))
5430                    .into()
5431            }
5432        }
5433        unsafe extern "system" fn RemoveKeys<
5434            Identity: IExchangeChangeAdvisor_Impl,
5435            const OFFSET: isize,
5436        >(
5437            this: *mut core::ffi::c_void,
5438            lpentrylist: *mut SBinaryArray,
5439        ) -> windows_core::HRESULT {
5440            unsafe {
5441                let this: &Identity =
5442                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5443                IExchangeChangeAdvisor_Impl::RemoveKeys(
5444                    this,
5445                    core::mem::transmute_copy(&lpentrylist),
5446                )
5447                .into()
5448            }
5449        }
5450        Self {
5451            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5452            GetLastError: GetLastError::<Identity, OFFSET>,
5453            Config: Config::<Identity, OFFSET>,
5454            UpdateState: UpdateState::<Identity, OFFSET>,
5455            AddKeys: AddKeys::<Identity, OFFSET>,
5456            RemoveKeys: RemoveKeys::<Identity, OFFSET>,
5457        }
5458    }
5459    pub fn matches(iid: &windows_core::GUID) -> bool {
5460        iid == &<IExchangeChangeAdvisor as windows_core::Interface>::IID
5461    }
5462}
5463impl windows_core::RuntimeName for IExchangeChangeAdvisor {}
5464windows_core::imp::define_interface!(
5465    IExchangeExportChanges,
5466    IExchangeExportChanges_Vtbl,
5467    0xa3ea9cc0_d1b2_11cd_80fc_00aa004bba0b
5468);
5469windows_core::imp::interface_hierarchy!(IExchangeExportChanges, windows_core::IUnknown);
5470impl IExchangeExportChanges {
5471    pub unsafe fn GetLastError(
5472        &self,
5473        hresult: windows_core::HRESULT,
5474        ulflags: u32,
5475        lppmapierror: *mut *mut MAPIERROR,
5476    ) -> windows_core::Result<()> {
5477        unsafe {
5478            (windows_core::Interface::vtable(self).GetLastError)(
5479                windows_core::Interface::as_raw(self),
5480                hresult,
5481                ulflags,
5482                lppmapierror as _,
5483            )
5484            .ok()
5485        }
5486    }
5487    pub unsafe fn Config<P0, P2>(
5488        &self,
5489        lpstream: P0,
5490        ulflags: u32,
5491        lpunk: P2,
5492        lprestriction: *mut SRestriction,
5493        lpincludeprops: *mut SPropTagArray,
5494        lpexcludeprops: *mut SPropTagArray,
5495        ulbuffersize: u32,
5496    ) -> windows_core::Result<()>
5497    where
5498        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5499        P2: windows_core::Param<windows_core::IUnknown>,
5500    {
5501        unsafe {
5502            (windows_core::Interface::vtable(self).Config)(
5503                windows_core::Interface::as_raw(self),
5504                lpstream.param().abi(),
5505                ulflags,
5506                lpunk.param().abi(),
5507                lprestriction as _,
5508                lpincludeprops as _,
5509                lpexcludeprops as _,
5510                ulbuffersize,
5511            )
5512            .ok()
5513        }
5514    }
5515    pub unsafe fn Synchronize(
5516        &self,
5517        lpulsteps: *mut u32,
5518        lpulprogress: *mut u32,
5519    ) -> windows_core::Result<()> {
5520        unsafe {
5521            (windows_core::Interface::vtable(self).Synchronize)(
5522                windows_core::Interface::as_raw(self),
5523                lpulsteps as _,
5524                lpulprogress as _,
5525            )
5526            .ok()
5527        }
5528    }
5529    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
5530    where
5531        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5532    {
5533        unsafe {
5534            (windows_core::Interface::vtable(self).UpdateState)(
5535                windows_core::Interface::as_raw(self),
5536                lpstream.param().abi(),
5537            )
5538            .ok()
5539        }
5540    }
5541}
5542#[repr(C)]
5543pub struct IExchangeExportChanges_Vtbl {
5544    pub base__: windows_core::IUnknown_Vtbl,
5545    pub GetLastError: unsafe extern "system" fn(
5546        *mut core::ffi::c_void,
5547        windows_core::HRESULT,
5548        u32,
5549        *mut *mut MAPIERROR,
5550    ) -> windows_core::HRESULT,
5551    pub Config: unsafe extern "system" fn(
5552        *mut core::ffi::c_void,
5553        *mut core::ffi::c_void,
5554        u32,
5555        *mut core::ffi::c_void,
5556        *mut SRestriction,
5557        *mut SPropTagArray,
5558        *mut SPropTagArray,
5559        u32,
5560    ) -> windows_core::HRESULT,
5561    pub Synchronize: unsafe extern "system" fn(
5562        *mut core::ffi::c_void,
5563        *mut u32,
5564        *mut u32,
5565    ) -> windows_core::HRESULT,
5566    pub UpdateState: unsafe extern "system" fn(
5567        *mut core::ffi::c_void,
5568        *mut core::ffi::c_void,
5569    ) -> windows_core::HRESULT,
5570}
5571pub trait IExchangeExportChanges_Impl: windows_core::IUnknownImpl {
5572    fn GetLastError(
5573        &self,
5574        hresult: windows_core::HRESULT,
5575        ulflags: u32,
5576        lppmapierror: *mut *mut MAPIERROR,
5577    ) -> windows_core::Result<()>;
5578    fn Config(
5579        &self,
5580        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
5581        ulflags: u32,
5582        lpunk: windows_core::Ref<'_, windows_core::IUnknown>,
5583        lprestriction: *mut SRestriction,
5584        lpincludeprops: *mut SPropTagArray,
5585        lpexcludeprops: *mut SPropTagArray,
5586        ulbuffersize: u32,
5587    ) -> windows_core::Result<()>;
5588    fn Synchronize(&self, lpulsteps: *mut u32, lpulprogress: *mut u32) -> windows_core::Result<()>;
5589    fn UpdateState(
5590        &self,
5591        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
5592    ) -> windows_core::Result<()>;
5593}
5594impl IExchangeExportChanges_Vtbl {
5595    pub const fn new<Identity: IExchangeExportChanges_Impl, const OFFSET: isize>() -> Self {
5596        unsafe extern "system" fn GetLastError<
5597            Identity: IExchangeExportChanges_Impl,
5598            const OFFSET: isize,
5599        >(
5600            this: *mut core::ffi::c_void,
5601            hresult: windows_core::HRESULT,
5602            ulflags: u32,
5603            lppmapierror: *mut *mut MAPIERROR,
5604        ) -> windows_core::HRESULT {
5605            unsafe {
5606                let this: &Identity =
5607                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5608                IExchangeExportChanges_Impl::GetLastError(
5609                    this,
5610                    core::mem::transmute_copy(&hresult),
5611                    core::mem::transmute_copy(&ulflags),
5612                    core::mem::transmute_copy(&lppmapierror),
5613                )
5614                .into()
5615            }
5616        }
5617        unsafe extern "system" fn Config<
5618            Identity: IExchangeExportChanges_Impl,
5619            const OFFSET: isize,
5620        >(
5621            this: *mut core::ffi::c_void,
5622            lpstream: *mut core::ffi::c_void,
5623            ulflags: u32,
5624            lpunk: *mut core::ffi::c_void,
5625            lprestriction: *mut SRestriction,
5626            lpincludeprops: *mut SPropTagArray,
5627            lpexcludeprops: *mut SPropTagArray,
5628            ulbuffersize: u32,
5629        ) -> windows_core::HRESULT {
5630            unsafe {
5631                let this: &Identity =
5632                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5633                IExchangeExportChanges_Impl::Config(
5634                    this,
5635                    core::mem::transmute_copy(&lpstream),
5636                    core::mem::transmute_copy(&ulflags),
5637                    core::mem::transmute_copy(&lpunk),
5638                    core::mem::transmute_copy(&lprestriction),
5639                    core::mem::transmute_copy(&lpincludeprops),
5640                    core::mem::transmute_copy(&lpexcludeprops),
5641                    core::mem::transmute_copy(&ulbuffersize),
5642                )
5643                .into()
5644            }
5645        }
5646        unsafe extern "system" fn Synchronize<
5647            Identity: IExchangeExportChanges_Impl,
5648            const OFFSET: isize,
5649        >(
5650            this: *mut core::ffi::c_void,
5651            lpulsteps: *mut u32,
5652            lpulprogress: *mut u32,
5653        ) -> windows_core::HRESULT {
5654            unsafe {
5655                let this: &Identity =
5656                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5657                IExchangeExportChanges_Impl::Synchronize(
5658                    this,
5659                    core::mem::transmute_copy(&lpulsteps),
5660                    core::mem::transmute_copy(&lpulprogress),
5661                )
5662                .into()
5663            }
5664        }
5665        unsafe extern "system" fn UpdateState<
5666            Identity: IExchangeExportChanges_Impl,
5667            const OFFSET: isize,
5668        >(
5669            this: *mut core::ffi::c_void,
5670            lpstream: *mut core::ffi::c_void,
5671        ) -> windows_core::HRESULT {
5672            unsafe {
5673                let this: &Identity =
5674                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5675                IExchangeExportChanges_Impl::UpdateState(this, core::mem::transmute_copy(&lpstream))
5676                    .into()
5677            }
5678        }
5679        Self {
5680            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5681            GetLastError: GetLastError::<Identity, OFFSET>,
5682            Config: Config::<Identity, OFFSET>,
5683            Synchronize: Synchronize::<Identity, OFFSET>,
5684            UpdateState: UpdateState::<Identity, OFFSET>,
5685        }
5686    }
5687    pub fn matches(iid: &windows_core::GUID) -> bool {
5688        iid == &<IExchangeExportChanges as windows_core::Interface>::IID
5689    }
5690}
5691impl windows_core::RuntimeName for IExchangeExportChanges {}
5692windows_core::imp::define_interface!(
5693    IExchangeExportChanges2,
5694    IExchangeExportChanges2_Vtbl,
5695    0x387cebe0_f53f_11cf_a48f_00c04fd65595
5696);
5697impl core::ops::Deref for IExchangeExportChanges2 {
5698    type Target = IExchangeExportChanges;
5699    fn deref(&self) -> &Self::Target {
5700        unsafe { core::mem::transmute(self) }
5701    }
5702}
5703windows_core::imp::interface_hierarchy!(
5704    IExchangeExportChanges2,
5705    windows_core::IUnknown,
5706    IExchangeExportChanges
5707);
5708impl IExchangeExportChanges2 {
5709    pub unsafe fn ConfigForConversionStream<P0, P2>(
5710        &self,
5711        lpstream: P0,
5712        ulflags: u32,
5713        lpunk: P2,
5714        lprestriction: *mut SRestriction,
5715        cvaluesconversion: u32,
5716        lpproparrayconversion: *mut SPropValue,
5717        ulbuffersize: u32,
5718    ) -> windows_core::Result<()>
5719    where
5720        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5721        P2: windows_core::Param<windows_core::IUnknown>,
5722    {
5723        unsafe {
5724            (windows_core::Interface::vtable(self).ConfigForConversionStream)(
5725                windows_core::Interface::as_raw(self),
5726                lpstream.param().abi(),
5727                ulflags,
5728                lpunk.param().abi(),
5729                lprestriction as _,
5730                cvaluesconversion,
5731                lpproparrayconversion as _,
5732                ulbuffersize,
5733            )
5734            .ok()
5735        }
5736    }
5737}
5738#[repr(C)]
5739pub struct IExchangeExportChanges2_Vtbl {
5740    pub base__: IExchangeExportChanges_Vtbl,
5741    pub ConfigForConversionStream: unsafe extern "system" fn(
5742        *mut core::ffi::c_void,
5743        *mut core::ffi::c_void,
5744        u32,
5745        *mut core::ffi::c_void,
5746        *mut SRestriction,
5747        u32,
5748        *mut SPropValue,
5749        u32,
5750    ) -> windows_core::HRESULT,
5751}
5752pub trait IExchangeExportChanges2_Impl: IExchangeExportChanges_Impl {
5753    fn ConfigForConversionStream(
5754        &self,
5755        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
5756        ulflags: u32,
5757        lpunk: windows_core::Ref<'_, windows_core::IUnknown>,
5758        lprestriction: *mut SRestriction,
5759        cvaluesconversion: u32,
5760        lpproparrayconversion: *mut SPropValue,
5761        ulbuffersize: u32,
5762    ) -> windows_core::Result<()>;
5763}
5764impl IExchangeExportChanges2_Vtbl {
5765    pub const fn new<Identity: IExchangeExportChanges2_Impl, const OFFSET: isize>() -> Self {
5766        unsafe extern "system" fn ConfigForConversionStream<
5767            Identity: IExchangeExportChanges2_Impl,
5768            const OFFSET: isize,
5769        >(
5770            this: *mut core::ffi::c_void,
5771            lpstream: *mut core::ffi::c_void,
5772            ulflags: u32,
5773            lpunk: *mut core::ffi::c_void,
5774            lprestriction: *mut SRestriction,
5775            cvaluesconversion: u32,
5776            lpproparrayconversion: *mut SPropValue,
5777            ulbuffersize: u32,
5778        ) -> windows_core::HRESULT {
5779            unsafe {
5780                let this: &Identity =
5781                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5782                IExchangeExportChanges2_Impl::ConfigForConversionStream(
5783                    this,
5784                    core::mem::transmute_copy(&lpstream),
5785                    core::mem::transmute_copy(&ulflags),
5786                    core::mem::transmute_copy(&lpunk),
5787                    core::mem::transmute_copy(&lprestriction),
5788                    core::mem::transmute_copy(&cvaluesconversion),
5789                    core::mem::transmute_copy(&lpproparrayconversion),
5790                    core::mem::transmute_copy(&ulbuffersize),
5791                )
5792                .into()
5793            }
5794        }
5795        Self {
5796            base__: IExchangeExportChanges_Vtbl::new::<Identity, OFFSET>(),
5797            ConfigForConversionStream: ConfigForConversionStream::<Identity, OFFSET>,
5798        }
5799    }
5800    pub fn matches(iid: &windows_core::GUID) -> bool {
5801        iid == &<IExchangeExportChanges2 as windows_core::Interface>::IID
5802            || iid == &<IExchangeExportChanges as windows_core::Interface>::IID
5803    }
5804}
5805impl windows_core::RuntimeName for IExchangeExportChanges2 {}
5806windows_core::imp::define_interface!(
5807    IExchangeExportChanges3,
5808    IExchangeExportChanges3_Vtbl,
5809    0x702e7f86_50a6_11d1_abd6_00a0c905660a
5810);
5811impl core::ops::Deref for IExchangeExportChanges3 {
5812    type Target = IExchangeExportChanges2;
5813    fn deref(&self) -> &Self::Target {
5814        unsafe { core::mem::transmute(self) }
5815    }
5816}
5817windows_core::imp::interface_hierarchy!(
5818    IExchangeExportChanges3,
5819    windows_core::IUnknown,
5820    IExchangeExportChanges,
5821    IExchangeExportChanges2
5822);
5823impl IExchangeExportChanges3 {
5824    pub unsafe fn ConfigForSelectiveSync<P0, P2>(
5825        &self,
5826        lpstream: P0,
5827        ulflags: u32,
5828        lpunk: P2,
5829        lpmsglist: *mut SBinaryArray,
5830        lprestriction: *mut SRestriction,
5831        lpincludeprops: *mut SPropTagArray,
5832        lpexcludeprops: *mut SPropTagArray,
5833        ulbuffersize: u32,
5834    ) -> windows_core::Result<()>
5835    where
5836        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5837        P2: windows_core::Param<windows_core::IUnknown>,
5838    {
5839        unsafe {
5840            (windows_core::Interface::vtable(self).ConfigForSelectiveSync)(
5841                windows_core::Interface::as_raw(self),
5842                lpstream.param().abi(),
5843                ulflags,
5844                lpunk.param().abi(),
5845                lpmsglist as _,
5846                lprestriction as _,
5847                lpincludeprops as _,
5848                lpexcludeprops as _,
5849                ulbuffersize,
5850            )
5851            .ok()
5852        }
5853    }
5854}
5855#[repr(C)]
5856pub struct IExchangeExportChanges3_Vtbl {
5857    pub base__: IExchangeExportChanges2_Vtbl,
5858    pub ConfigForSelectiveSync: unsafe extern "system" fn(
5859        *mut core::ffi::c_void,
5860        *mut core::ffi::c_void,
5861        u32,
5862        *mut core::ffi::c_void,
5863        *mut SBinaryArray,
5864        *mut SRestriction,
5865        *mut SPropTagArray,
5866        *mut SPropTagArray,
5867        u32,
5868    ) -> windows_core::HRESULT,
5869}
5870pub trait IExchangeExportChanges3_Impl: IExchangeExportChanges2_Impl {
5871    fn ConfigForSelectiveSync(
5872        &self,
5873        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
5874        ulflags: u32,
5875        lpunk: windows_core::Ref<'_, windows_core::IUnknown>,
5876        lpmsglist: *mut SBinaryArray,
5877        lprestriction: *mut SRestriction,
5878        lpincludeprops: *mut SPropTagArray,
5879        lpexcludeprops: *mut SPropTagArray,
5880        ulbuffersize: u32,
5881    ) -> windows_core::Result<()>;
5882}
5883impl IExchangeExportChanges3_Vtbl {
5884    pub const fn new<Identity: IExchangeExportChanges3_Impl, const OFFSET: isize>() -> Self {
5885        unsafe extern "system" fn ConfigForSelectiveSync<
5886            Identity: IExchangeExportChanges3_Impl,
5887            const OFFSET: isize,
5888        >(
5889            this: *mut core::ffi::c_void,
5890            lpstream: *mut core::ffi::c_void,
5891            ulflags: u32,
5892            lpunk: *mut core::ffi::c_void,
5893            lpmsglist: *mut SBinaryArray,
5894            lprestriction: *mut SRestriction,
5895            lpincludeprops: *mut SPropTagArray,
5896            lpexcludeprops: *mut SPropTagArray,
5897            ulbuffersize: u32,
5898        ) -> windows_core::HRESULT {
5899            unsafe {
5900                let this: &Identity =
5901                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5902                IExchangeExportChanges3_Impl::ConfigForSelectiveSync(
5903                    this,
5904                    core::mem::transmute_copy(&lpstream),
5905                    core::mem::transmute_copy(&ulflags),
5906                    core::mem::transmute_copy(&lpunk),
5907                    core::mem::transmute_copy(&lpmsglist),
5908                    core::mem::transmute_copy(&lprestriction),
5909                    core::mem::transmute_copy(&lpincludeprops),
5910                    core::mem::transmute_copy(&lpexcludeprops),
5911                    core::mem::transmute_copy(&ulbuffersize),
5912                )
5913                .into()
5914            }
5915        }
5916        Self {
5917            base__: IExchangeExportChanges2_Vtbl::new::<Identity, OFFSET>(),
5918            ConfigForSelectiveSync: ConfigForSelectiveSync::<Identity, OFFSET>,
5919        }
5920    }
5921    pub fn matches(iid: &windows_core::GUID) -> bool {
5922        iid == &<IExchangeExportChanges3 as windows_core::Interface>::IID
5923            || iid == &<IExchangeExportChanges as windows_core::Interface>::IID
5924            || iid == &<IExchangeExportChanges2 as windows_core::Interface>::IID
5925    }
5926}
5927impl windows_core::RuntimeName for IExchangeExportChanges3 {}
5928windows_core::imp::define_interface!(
5929    IExchangeFastTransfer,
5930    IExchangeFastTransfer_Vtbl,
5931    0xff7db070_a88a_11cd_9bc8_00aa002fc45a
5932);
5933windows_core::imp::interface_hierarchy!(IExchangeFastTransfer, windows_core::IUnknown);
5934impl IExchangeFastTransfer {
5935    pub unsafe fn Config(&self, ulflags: u32, ultransfermethod: u32) -> windows_core::Result<()> {
5936        unsafe {
5937            (windows_core::Interface::vtable(self).Config)(
5938                windows_core::Interface::as_raw(self),
5939                ulflags,
5940                ultransfermethod,
5941            )
5942            .ok()
5943        }
5944    }
5945    pub unsafe fn TransferBuffer(
5946        &self,
5947        cb: u32,
5948        lpb: *mut u8,
5949        lpcbprocessed: *mut u32,
5950    ) -> windows_core::Result<()> {
5951        unsafe {
5952            (windows_core::Interface::vtable(self).TransferBuffer)(
5953                windows_core::Interface::as_raw(self),
5954                cb,
5955                lpb as _,
5956                lpcbprocessed as _,
5957            )
5958            .ok()
5959        }
5960    }
5961    pub unsafe 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        unsafe {
5969            (windows_core::Interface::vtable(self).IsInterfaceOk)(
5970                windows_core::Interface::as_raw(self),
5971                ultransfermethod,
5972                refiid,
5973                lpptaglist as _,
5974                ulflags,
5975            )
5976        }
5977    }
5978}
5979#[repr(C)]
5980pub struct IExchangeFastTransfer_Vtbl {
5981    pub base__: windows_core::IUnknown_Vtbl,
5982    pub Config:
5983        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
5984    pub TransferBuffer: unsafe extern "system" fn(
5985        *mut core::ffi::c_void,
5986        u32,
5987        *mut u8,
5988        *mut u32,
5989    ) -> windows_core::HRESULT,
5990    pub IsInterfaceOk: unsafe extern "system" fn(
5991        *mut core::ffi::c_void,
5992        u32,
5993        *const windows_core::GUID,
5994        *mut SPropTagArray,
5995        u32,
5996    ) -> windows_core::BOOL,
5997}
5998pub trait IExchangeFastTransfer_Impl: windows_core::IUnknownImpl {
5999    fn Config(&self, ulflags: u32, ultransfermethod: u32) -> windows_core::Result<()>;
6000    fn TransferBuffer(
6001        &self,
6002        cb: u32,
6003        lpb: *mut u8,
6004        lpcbprocessed: *mut u32,
6005    ) -> windows_core::Result<()>;
6006    fn IsInterfaceOk(
6007        &self,
6008        ultransfermethod: u32,
6009        refiid: *const windows_core::GUID,
6010        lpptaglist: *mut SPropTagArray,
6011        ulflags: u32,
6012    ) -> windows_core::BOOL;
6013}
6014impl IExchangeFastTransfer_Vtbl {
6015    pub const fn new<Identity: IExchangeFastTransfer_Impl, const OFFSET: isize>() -> Self {
6016        unsafe extern "system" fn Config<
6017            Identity: IExchangeFastTransfer_Impl,
6018            const OFFSET: isize,
6019        >(
6020            this: *mut core::ffi::c_void,
6021            ulflags: u32,
6022            ultransfermethod: u32,
6023        ) -> windows_core::HRESULT {
6024            unsafe {
6025                let this: &Identity =
6026                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6027                IExchangeFastTransfer_Impl::Config(
6028                    this,
6029                    core::mem::transmute_copy(&ulflags),
6030                    core::mem::transmute_copy(&ultransfermethod),
6031                )
6032                .into()
6033            }
6034        }
6035        unsafe extern "system" fn TransferBuffer<
6036            Identity: IExchangeFastTransfer_Impl,
6037            const OFFSET: isize,
6038        >(
6039            this: *mut core::ffi::c_void,
6040            cb: u32,
6041            lpb: *mut u8,
6042            lpcbprocessed: *mut u32,
6043        ) -> windows_core::HRESULT {
6044            unsafe {
6045                let this: &Identity =
6046                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6047                IExchangeFastTransfer_Impl::TransferBuffer(
6048                    this,
6049                    core::mem::transmute_copy(&cb),
6050                    core::mem::transmute_copy(&lpb),
6051                    core::mem::transmute_copy(&lpcbprocessed),
6052                )
6053                .into()
6054            }
6055        }
6056        unsafe extern "system" fn IsInterfaceOk<
6057            Identity: IExchangeFastTransfer_Impl,
6058            const OFFSET: isize,
6059        >(
6060            this: *mut core::ffi::c_void,
6061            ultransfermethod: u32,
6062            refiid: *const windows_core::GUID,
6063            lpptaglist: *mut SPropTagArray,
6064            ulflags: u32,
6065        ) -> windows_core::BOOL {
6066            unsafe {
6067                let this: &Identity =
6068                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6069                IExchangeFastTransfer_Impl::IsInterfaceOk(
6070                    this,
6071                    core::mem::transmute_copy(&ultransfermethod),
6072                    core::mem::transmute_copy(&refiid),
6073                    core::mem::transmute_copy(&lpptaglist),
6074                    core::mem::transmute_copy(&ulflags),
6075                )
6076            }
6077        }
6078        Self {
6079            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6080            Config: Config::<Identity, OFFSET>,
6081            TransferBuffer: TransferBuffer::<Identity, OFFSET>,
6082            IsInterfaceOk: IsInterfaceOk::<Identity, OFFSET>,
6083        }
6084    }
6085    pub fn matches(iid: &windows_core::GUID) -> bool {
6086        iid == &<IExchangeFastTransfer as windows_core::Interface>::IID
6087    }
6088}
6089impl windows_core::RuntimeName for IExchangeFastTransfer {}
6090windows_core::imp::define_interface!(
6091    IExchangeFavorites,
6092    IExchangeFavorites_Vtbl,
6093    0xcf4f3bc0_ec66_11ce_b31c_00aa00574cc6
6094);
6095windows_core::imp::interface_hierarchy!(IExchangeFavorites, windows_core::IUnknown);
6096impl IExchangeFavorites {
6097    pub unsafe fn GetLastError(
6098        &self,
6099        hresult: windows_core::HRESULT,
6100        ulflags: u32,
6101        lppmapierror: *mut *mut MAPIERROR,
6102    ) -> windows_core::Result<()> {
6103        unsafe {
6104            (windows_core::Interface::vtable(self).GetLastError)(
6105                windows_core::Interface::as_raw(self),
6106                hresult,
6107                ulflags,
6108                lppmapierror as _,
6109            )
6110            .ok()
6111        }
6112    }
6113    pub unsafe fn AddFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
6114        unsafe {
6115            (windows_core::Interface::vtable(self).AddFavorites)(
6116                windows_core::Interface::as_raw(self),
6117                lpentrylist as _,
6118            )
6119            .ok()
6120        }
6121    }
6122    pub unsafe fn DelFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
6123        unsafe {
6124            (windows_core::Interface::vtable(self).DelFavorites)(
6125                windows_core::Interface::as_raw(self),
6126                lpentrylist as _,
6127            )
6128            .ok()
6129        }
6130    }
6131}
6132#[repr(C)]
6133pub struct IExchangeFavorites_Vtbl {
6134    pub base__: windows_core::IUnknown_Vtbl,
6135    pub GetLastError: unsafe extern "system" fn(
6136        *mut core::ffi::c_void,
6137        windows_core::HRESULT,
6138        u32,
6139        *mut *mut MAPIERROR,
6140    ) -> windows_core::HRESULT,
6141    pub AddFavorites: unsafe extern "system" fn(
6142        *mut core::ffi::c_void,
6143        *mut SBinaryArray,
6144    ) -> windows_core::HRESULT,
6145    pub DelFavorites: unsafe extern "system" fn(
6146        *mut core::ffi::c_void,
6147        *mut SBinaryArray,
6148    ) -> windows_core::HRESULT,
6149}
6150pub trait IExchangeFavorites_Impl: windows_core::IUnknownImpl {
6151    fn GetLastError(
6152        &self,
6153        hresult: windows_core::HRESULT,
6154        ulflags: u32,
6155        lppmapierror: *mut *mut MAPIERROR,
6156    ) -> windows_core::Result<()>;
6157    fn AddFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
6158    fn DelFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
6159}
6160impl IExchangeFavorites_Vtbl {
6161    pub const fn new<Identity: IExchangeFavorites_Impl, const OFFSET: isize>() -> Self {
6162        unsafe extern "system" fn GetLastError<
6163            Identity: IExchangeFavorites_Impl,
6164            const OFFSET: isize,
6165        >(
6166            this: *mut core::ffi::c_void,
6167            hresult: windows_core::HRESULT,
6168            ulflags: u32,
6169            lppmapierror: *mut *mut MAPIERROR,
6170        ) -> windows_core::HRESULT {
6171            unsafe {
6172                let this: &Identity =
6173                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6174                IExchangeFavorites_Impl::GetLastError(
6175                    this,
6176                    core::mem::transmute_copy(&hresult),
6177                    core::mem::transmute_copy(&ulflags),
6178                    core::mem::transmute_copy(&lppmapierror),
6179                )
6180                .into()
6181            }
6182        }
6183        unsafe extern "system" fn AddFavorites<
6184            Identity: IExchangeFavorites_Impl,
6185            const OFFSET: isize,
6186        >(
6187            this: *mut core::ffi::c_void,
6188            lpentrylist: *mut SBinaryArray,
6189        ) -> windows_core::HRESULT {
6190            unsafe {
6191                let this: &Identity =
6192                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6193                IExchangeFavorites_Impl::AddFavorites(this, core::mem::transmute_copy(&lpentrylist))
6194                    .into()
6195            }
6196        }
6197        unsafe extern "system" fn DelFavorites<
6198            Identity: IExchangeFavorites_Impl,
6199            const OFFSET: isize,
6200        >(
6201            this: *mut core::ffi::c_void,
6202            lpentrylist: *mut SBinaryArray,
6203        ) -> windows_core::HRESULT {
6204            unsafe {
6205                let this: &Identity =
6206                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6207                IExchangeFavorites_Impl::DelFavorites(this, core::mem::transmute_copy(&lpentrylist))
6208                    .into()
6209            }
6210        }
6211        Self {
6212            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6213            GetLastError: GetLastError::<Identity, OFFSET>,
6214            AddFavorites: AddFavorites::<Identity, OFFSET>,
6215            DelFavorites: DelFavorites::<Identity, OFFSET>,
6216        }
6217    }
6218    pub fn matches(iid: &windows_core::GUID) -> bool {
6219        iid == &<IExchangeFavorites as windows_core::Interface>::IID
6220    }
6221}
6222impl windows_core::RuntimeName for IExchangeFavorites {}
6223windows_core::imp::define_interface!(
6224    IExchangeImportContentsChanges,
6225    IExchangeImportContentsChanges_Vtbl,
6226    0xf75abfa0_d0e0_11cd_80fc_00aa004bba0b
6227);
6228windows_core::imp::interface_hierarchy!(IExchangeImportContentsChanges, windows_core::IUnknown);
6229impl IExchangeImportContentsChanges {
6230    pub unsafe fn GetLastError(
6231        &self,
6232        hresult: windows_core::HRESULT,
6233        ulflags: u32,
6234        lppmapierror: *mut *mut MAPIERROR,
6235    ) -> windows_core::Result<()> {
6236        unsafe {
6237            (windows_core::Interface::vtable(self).GetLastError)(
6238                windows_core::Interface::as_raw(self),
6239                hresult,
6240                ulflags,
6241                lppmapierror as _,
6242            )
6243            .ok()
6244        }
6245    }
6246    pub unsafe fn Config<P0>(&self, lpstream: P0, ulflags: u32) -> windows_core::Result<()>
6247    where
6248        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6249    {
6250        unsafe {
6251            (windows_core::Interface::vtable(self).Config)(
6252                windows_core::Interface::as_raw(self),
6253                lpstream.param().abi(),
6254                ulflags,
6255            )
6256            .ok()
6257        }
6258    }
6259    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
6260    where
6261        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6262    {
6263        unsafe {
6264            (windows_core::Interface::vtable(self).UpdateState)(
6265                windows_core::Interface::as_raw(self),
6266                lpstream.param().abi(),
6267            )
6268            .ok()
6269        }
6270    }
6271    pub unsafe fn ImportMessageChange(
6272        &self,
6273        cpvalchanges: u32,
6274        ppvalchanges: *mut SPropValue,
6275        ulflags: u32,
6276        lppmessage: *mut Option<IMessage>,
6277    ) -> windows_core::Result<()> {
6278        unsafe {
6279            (windows_core::Interface::vtable(self).ImportMessageChange)(
6280                windows_core::Interface::as_raw(self),
6281                cpvalchanges,
6282                ppvalchanges as _,
6283                ulflags,
6284                core::mem::transmute(lppmessage),
6285            )
6286            .ok()
6287        }
6288    }
6289    pub unsafe fn ImportMessageDeletion(
6290        &self,
6291        ulflags: u32,
6292        lpsrcentrylist: *mut SBinaryArray,
6293    ) -> windows_core::Result<()> {
6294        unsafe {
6295            (windows_core::Interface::vtable(self).ImportMessageDeletion)(
6296                windows_core::Interface::as_raw(self),
6297                ulflags,
6298                lpsrcentrylist as _,
6299            )
6300            .ok()
6301        }
6302    }
6303    pub unsafe fn ImportPerUserReadStateChange(
6304        &self,
6305        celements: u32,
6306        lpreadstate: *mut READSTATE,
6307    ) -> windows_core::Result<()> {
6308        unsafe {
6309            (windows_core::Interface::vtable(self).ImportPerUserReadStateChange)(
6310                windows_core::Interface::as_raw(self),
6311                celements,
6312                lpreadstate as _,
6313            )
6314            .ok()
6315        }
6316    }
6317    pub unsafe fn ImportMessageMove(
6318        &self,
6319        cbsourcekeysrcfolder: u32,
6320        pbsourcekeysrcfolder: *mut u8,
6321        cbsourcekeysrcmessage: u32,
6322        pbsourcekeysrcmessage: *mut u8,
6323        cbpclmessage: u32,
6324        pbpclmessage: *mut u8,
6325        cbsourcekeydestmessage: u32,
6326        pbsourcekeydestmessage: *mut u8,
6327        cbchangenumdestmessage: u32,
6328        pbchangenumdestmessage: *mut u8,
6329    ) -> windows_core::Result<()> {
6330        unsafe {
6331            (windows_core::Interface::vtable(self).ImportMessageMove)(
6332                windows_core::Interface::as_raw(self),
6333                cbsourcekeysrcfolder,
6334                pbsourcekeysrcfolder as _,
6335                cbsourcekeysrcmessage,
6336                pbsourcekeysrcmessage as _,
6337                cbpclmessage,
6338                pbpclmessage as _,
6339                cbsourcekeydestmessage,
6340                pbsourcekeydestmessage as _,
6341                cbchangenumdestmessage,
6342                pbchangenumdestmessage as _,
6343            )
6344            .ok()
6345        }
6346    }
6347}
6348#[repr(C)]
6349pub struct IExchangeImportContentsChanges_Vtbl {
6350    pub base__: windows_core::IUnknown_Vtbl,
6351    pub GetLastError: unsafe extern "system" fn(
6352        *mut core::ffi::c_void,
6353        windows_core::HRESULT,
6354        u32,
6355        *mut *mut MAPIERROR,
6356    ) -> windows_core::HRESULT,
6357    pub Config: unsafe extern "system" fn(
6358        *mut core::ffi::c_void,
6359        *mut core::ffi::c_void,
6360        u32,
6361    ) -> windows_core::HRESULT,
6362    pub UpdateState: unsafe extern "system" fn(
6363        *mut core::ffi::c_void,
6364        *mut core::ffi::c_void,
6365    ) -> windows_core::HRESULT,
6366    pub ImportMessageChange: unsafe extern "system" fn(
6367        *mut core::ffi::c_void,
6368        u32,
6369        *mut SPropValue,
6370        u32,
6371        *mut *mut core::ffi::c_void,
6372    ) -> windows_core::HRESULT,
6373    pub ImportMessageDeletion: unsafe extern "system" fn(
6374        *mut core::ffi::c_void,
6375        u32,
6376        *mut SBinaryArray,
6377    ) -> windows_core::HRESULT,
6378    pub ImportPerUserReadStateChange: unsafe extern "system" fn(
6379        *mut core::ffi::c_void,
6380        u32,
6381        *mut READSTATE,
6382    ) -> windows_core::HRESULT,
6383    pub ImportMessageMove: unsafe extern "system" fn(
6384        *mut core::ffi::c_void,
6385        u32,
6386        *mut u8,
6387        u32,
6388        *mut u8,
6389        u32,
6390        *mut u8,
6391        u32,
6392        *mut u8,
6393        u32,
6394        *mut u8,
6395    ) -> windows_core::HRESULT,
6396}
6397pub trait IExchangeImportContentsChanges_Impl: windows_core::IUnknownImpl {
6398    fn GetLastError(
6399        &self,
6400        hresult: windows_core::HRESULT,
6401        ulflags: u32,
6402        lppmapierror: *mut *mut MAPIERROR,
6403    ) -> windows_core::Result<()>;
6404    fn Config(
6405        &self,
6406        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
6407        ulflags: u32,
6408    ) -> windows_core::Result<()>;
6409    fn UpdateState(
6410        &self,
6411        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
6412    ) -> windows_core::Result<()>;
6413    fn ImportMessageChange(
6414        &self,
6415        cpvalchanges: u32,
6416        ppvalchanges: *mut SPropValue,
6417        ulflags: u32,
6418        lppmessage: windows_core::OutRef<'_, IMessage>,
6419    ) -> windows_core::Result<()>;
6420    fn ImportMessageDeletion(
6421        &self,
6422        ulflags: u32,
6423        lpsrcentrylist: *mut SBinaryArray,
6424    ) -> windows_core::Result<()>;
6425    fn ImportPerUserReadStateChange(
6426        &self,
6427        celements: u32,
6428        lpreadstate: *mut READSTATE,
6429    ) -> windows_core::Result<()>;
6430    fn ImportMessageMove(
6431        &self,
6432        cbsourcekeysrcfolder: u32,
6433        pbsourcekeysrcfolder: *mut u8,
6434        cbsourcekeysrcmessage: u32,
6435        pbsourcekeysrcmessage: *mut u8,
6436        cbpclmessage: u32,
6437        pbpclmessage: *mut u8,
6438        cbsourcekeydestmessage: u32,
6439        pbsourcekeydestmessage: *mut u8,
6440        cbchangenumdestmessage: u32,
6441        pbchangenumdestmessage: *mut u8,
6442    ) -> windows_core::Result<()>;
6443}
6444impl IExchangeImportContentsChanges_Vtbl {
6445    pub const fn new<Identity: IExchangeImportContentsChanges_Impl, const OFFSET: isize>() -> Self {
6446        unsafe extern "system" fn GetLastError<
6447            Identity: IExchangeImportContentsChanges_Impl,
6448            const OFFSET: isize,
6449        >(
6450            this: *mut core::ffi::c_void,
6451            hresult: windows_core::HRESULT,
6452            ulflags: u32,
6453            lppmapierror: *mut *mut MAPIERROR,
6454        ) -> windows_core::HRESULT {
6455            unsafe {
6456                let this: &Identity =
6457                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6458                IExchangeImportContentsChanges_Impl::GetLastError(
6459                    this,
6460                    core::mem::transmute_copy(&hresult),
6461                    core::mem::transmute_copy(&ulflags),
6462                    core::mem::transmute_copy(&lppmapierror),
6463                )
6464                .into()
6465            }
6466        }
6467        unsafe extern "system" fn Config<
6468            Identity: IExchangeImportContentsChanges_Impl,
6469            const OFFSET: isize,
6470        >(
6471            this: *mut core::ffi::c_void,
6472            lpstream: *mut core::ffi::c_void,
6473            ulflags: u32,
6474        ) -> windows_core::HRESULT {
6475            unsafe {
6476                let this: &Identity =
6477                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6478                IExchangeImportContentsChanges_Impl::Config(
6479                    this,
6480                    core::mem::transmute_copy(&lpstream),
6481                    core::mem::transmute_copy(&ulflags),
6482                )
6483                .into()
6484            }
6485        }
6486        unsafe extern "system" fn UpdateState<
6487            Identity: IExchangeImportContentsChanges_Impl,
6488            const OFFSET: isize,
6489        >(
6490            this: *mut core::ffi::c_void,
6491            lpstream: *mut core::ffi::c_void,
6492        ) -> windows_core::HRESULT {
6493            unsafe {
6494                let this: &Identity =
6495                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6496                IExchangeImportContentsChanges_Impl::UpdateState(
6497                    this,
6498                    core::mem::transmute_copy(&lpstream),
6499                )
6500                .into()
6501            }
6502        }
6503        unsafe extern "system" fn ImportMessageChange<
6504            Identity: IExchangeImportContentsChanges_Impl,
6505            const OFFSET: isize,
6506        >(
6507            this: *mut core::ffi::c_void,
6508            cpvalchanges: u32,
6509            ppvalchanges: *mut SPropValue,
6510            ulflags: u32,
6511            lppmessage: *mut *mut core::ffi::c_void,
6512        ) -> windows_core::HRESULT {
6513            unsafe {
6514                let this: &Identity =
6515                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6516                IExchangeImportContentsChanges_Impl::ImportMessageChange(
6517                    this,
6518                    core::mem::transmute_copy(&cpvalchanges),
6519                    core::mem::transmute_copy(&ppvalchanges),
6520                    core::mem::transmute_copy(&ulflags),
6521                    core::mem::transmute_copy(&lppmessage),
6522                )
6523                .into()
6524            }
6525        }
6526        unsafe extern "system" fn ImportMessageDeletion<
6527            Identity: IExchangeImportContentsChanges_Impl,
6528            const OFFSET: isize,
6529        >(
6530            this: *mut core::ffi::c_void,
6531            ulflags: u32,
6532            lpsrcentrylist: *mut SBinaryArray,
6533        ) -> windows_core::HRESULT {
6534            unsafe {
6535                let this: &Identity =
6536                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6537                IExchangeImportContentsChanges_Impl::ImportMessageDeletion(
6538                    this,
6539                    core::mem::transmute_copy(&ulflags),
6540                    core::mem::transmute_copy(&lpsrcentrylist),
6541                )
6542                .into()
6543            }
6544        }
6545        unsafe extern "system" fn ImportPerUserReadStateChange<
6546            Identity: IExchangeImportContentsChanges_Impl,
6547            const OFFSET: isize,
6548        >(
6549            this: *mut core::ffi::c_void,
6550            celements: u32,
6551            lpreadstate: *mut READSTATE,
6552        ) -> windows_core::HRESULT {
6553            unsafe {
6554                let this: &Identity =
6555                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6556                IExchangeImportContentsChanges_Impl::ImportPerUserReadStateChange(
6557                    this,
6558                    core::mem::transmute_copy(&celements),
6559                    core::mem::transmute_copy(&lpreadstate),
6560                )
6561                .into()
6562            }
6563        }
6564        unsafe extern "system" fn ImportMessageMove<
6565            Identity: IExchangeImportContentsChanges_Impl,
6566            const OFFSET: isize,
6567        >(
6568            this: *mut core::ffi::c_void,
6569            cbsourcekeysrcfolder: u32,
6570            pbsourcekeysrcfolder: *mut u8,
6571            cbsourcekeysrcmessage: u32,
6572            pbsourcekeysrcmessage: *mut u8,
6573            cbpclmessage: u32,
6574            pbpclmessage: *mut u8,
6575            cbsourcekeydestmessage: u32,
6576            pbsourcekeydestmessage: *mut u8,
6577            cbchangenumdestmessage: u32,
6578            pbchangenumdestmessage: *mut u8,
6579        ) -> windows_core::HRESULT {
6580            unsafe {
6581                let this: &Identity =
6582                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6583                IExchangeImportContentsChanges_Impl::ImportMessageMove(
6584                    this,
6585                    core::mem::transmute_copy(&cbsourcekeysrcfolder),
6586                    core::mem::transmute_copy(&pbsourcekeysrcfolder),
6587                    core::mem::transmute_copy(&cbsourcekeysrcmessage),
6588                    core::mem::transmute_copy(&pbsourcekeysrcmessage),
6589                    core::mem::transmute_copy(&cbpclmessage),
6590                    core::mem::transmute_copy(&pbpclmessage),
6591                    core::mem::transmute_copy(&cbsourcekeydestmessage),
6592                    core::mem::transmute_copy(&pbsourcekeydestmessage),
6593                    core::mem::transmute_copy(&cbchangenumdestmessage),
6594                    core::mem::transmute_copy(&pbchangenumdestmessage),
6595                )
6596                .into()
6597            }
6598        }
6599        Self {
6600            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6601            GetLastError: GetLastError::<Identity, OFFSET>,
6602            Config: Config::<Identity, OFFSET>,
6603            UpdateState: UpdateState::<Identity, OFFSET>,
6604            ImportMessageChange: ImportMessageChange::<Identity, OFFSET>,
6605            ImportMessageDeletion: ImportMessageDeletion::<Identity, OFFSET>,
6606            ImportPerUserReadStateChange: ImportPerUserReadStateChange::<Identity, OFFSET>,
6607            ImportMessageMove: ImportMessageMove::<Identity, OFFSET>,
6608        }
6609    }
6610    pub fn matches(iid: &windows_core::GUID) -> bool {
6611        iid == &<IExchangeImportContentsChanges as windows_core::Interface>::IID
6612    }
6613}
6614impl windows_core::RuntimeName for IExchangeImportContentsChanges {}
6615windows_core::imp::define_interface!(
6616    IExchangeImportContentsChanges2,
6617    IExchangeImportContentsChanges2_Vtbl,
6618    0x7dfdd720_f53f_11cf_a48f_00c04fd65595
6619);
6620impl core::ops::Deref for IExchangeImportContentsChanges2 {
6621    type Target = IExchangeImportContentsChanges;
6622    fn deref(&self) -> &Self::Target {
6623        unsafe { core::mem::transmute(self) }
6624    }
6625}
6626windows_core::imp::interface_hierarchy!(
6627    IExchangeImportContentsChanges2,
6628    windows_core::IUnknown,
6629    IExchangeImportContentsChanges
6630);
6631impl IExchangeImportContentsChanges2 {
6632    pub unsafe fn ConfigForConversionStream<P0>(
6633        &self,
6634        lpstream: P0,
6635        ulflags: u32,
6636        cvaluesconversion: u32,
6637        lpproparrayconversion: *mut SPropValue,
6638    ) -> windows_core::Result<()>
6639    where
6640        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6641    {
6642        unsafe {
6643            (windows_core::Interface::vtable(self).ConfigForConversionStream)(
6644                windows_core::Interface::as_raw(self),
6645                lpstream.param().abi(),
6646                ulflags,
6647                cvaluesconversion,
6648                lpproparrayconversion as _,
6649            )
6650            .ok()
6651        }
6652    }
6653    pub unsafe fn ImportMessageChangeAsAStream(
6654        &self,
6655        cpvalchanges: u32,
6656        ppvalchanges: *mut SPropValue,
6657        ulflags: u32,
6658        lppstream: *mut Option<windows::Win32::System::Com::IStream>,
6659    ) -> windows_core::Result<()> {
6660        unsafe {
6661            (windows_core::Interface::vtable(self).ImportMessageChangeAsAStream)(
6662                windows_core::Interface::as_raw(self),
6663                cpvalchanges,
6664                ppvalchanges as _,
6665                ulflags,
6666                core::mem::transmute(lppstream),
6667            )
6668            .ok()
6669        }
6670    }
6671}
6672#[repr(C)]
6673pub struct IExchangeImportContentsChanges2_Vtbl {
6674    pub base__: IExchangeImportContentsChanges_Vtbl,
6675    pub ConfigForConversionStream: unsafe extern "system" fn(
6676        *mut core::ffi::c_void,
6677        *mut core::ffi::c_void,
6678        u32,
6679        u32,
6680        *mut SPropValue,
6681    ) -> windows_core::HRESULT,
6682    pub ImportMessageChangeAsAStream: unsafe extern "system" fn(
6683        *mut core::ffi::c_void,
6684        u32,
6685        *mut SPropValue,
6686        u32,
6687        *mut *mut core::ffi::c_void,
6688    ) -> windows_core::HRESULT,
6689}
6690pub trait IExchangeImportContentsChanges2_Impl: IExchangeImportContentsChanges_Impl {
6691    fn ConfigForConversionStream(
6692        &self,
6693        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
6694        ulflags: u32,
6695        cvaluesconversion: u32,
6696        lpproparrayconversion: *mut SPropValue,
6697    ) -> windows_core::Result<()>;
6698    fn ImportMessageChangeAsAStream(
6699        &self,
6700        cpvalchanges: u32,
6701        ppvalchanges: *mut SPropValue,
6702        ulflags: u32,
6703        lppstream: windows_core::OutRef<'_, windows::Win32::System::Com::IStream>,
6704    ) -> windows_core::Result<()>;
6705}
6706impl IExchangeImportContentsChanges2_Vtbl {
6707    pub const fn new<Identity: IExchangeImportContentsChanges2_Impl, const OFFSET: isize>() -> Self
6708    {
6709        unsafe extern "system" fn ConfigForConversionStream<
6710            Identity: IExchangeImportContentsChanges2_Impl,
6711            const OFFSET: isize,
6712        >(
6713            this: *mut core::ffi::c_void,
6714            lpstream: *mut core::ffi::c_void,
6715            ulflags: u32,
6716            cvaluesconversion: u32,
6717            lpproparrayconversion: *mut SPropValue,
6718        ) -> windows_core::HRESULT {
6719            unsafe {
6720                let this: &Identity =
6721                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6722                IExchangeImportContentsChanges2_Impl::ConfigForConversionStream(
6723                    this,
6724                    core::mem::transmute_copy(&lpstream),
6725                    core::mem::transmute_copy(&ulflags),
6726                    core::mem::transmute_copy(&cvaluesconversion),
6727                    core::mem::transmute_copy(&lpproparrayconversion),
6728                )
6729                .into()
6730            }
6731        }
6732        unsafe extern "system" fn ImportMessageChangeAsAStream<
6733            Identity: IExchangeImportContentsChanges2_Impl,
6734            const OFFSET: isize,
6735        >(
6736            this: *mut core::ffi::c_void,
6737            cpvalchanges: u32,
6738            ppvalchanges: *mut SPropValue,
6739            ulflags: u32,
6740            lppstream: *mut *mut core::ffi::c_void,
6741        ) -> windows_core::HRESULT {
6742            unsafe {
6743                let this: &Identity =
6744                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6745                IExchangeImportContentsChanges2_Impl::ImportMessageChangeAsAStream(
6746                    this,
6747                    core::mem::transmute_copy(&cpvalchanges),
6748                    core::mem::transmute_copy(&ppvalchanges),
6749                    core::mem::transmute_copy(&ulflags),
6750                    core::mem::transmute_copy(&lppstream),
6751                )
6752                .into()
6753            }
6754        }
6755        Self {
6756            base__: IExchangeImportContentsChanges_Vtbl::new::<Identity, OFFSET>(),
6757            ConfigForConversionStream: ConfigForConversionStream::<Identity, OFFSET>,
6758            ImportMessageChangeAsAStream: ImportMessageChangeAsAStream::<Identity, OFFSET>,
6759        }
6760    }
6761    pub fn matches(iid: &windows_core::GUID) -> bool {
6762        iid == &<IExchangeImportContentsChanges2 as windows_core::Interface>::IID
6763            || iid == &<IExchangeImportContentsChanges as windows_core::Interface>::IID
6764    }
6765}
6766impl windows_core::RuntimeName for IExchangeImportContentsChanges2 {}
6767windows_core::imp::define_interface!(
6768    IExchangeImportHierarchyChanges,
6769    IExchangeImportHierarchyChanges_Vtbl,
6770    0x85a66cf0_d0e0_11cd_80fc_00aa004bba0b
6771);
6772windows_core::imp::interface_hierarchy!(IExchangeImportHierarchyChanges, windows_core::IUnknown);
6773impl IExchangeImportHierarchyChanges {
6774    pub unsafe fn GetLastError(
6775        &self,
6776        hresult: windows_core::HRESULT,
6777        ulflags: u32,
6778        lppmapierror: *mut *mut MAPIERROR,
6779    ) -> windows_core::Result<()> {
6780        unsafe {
6781            (windows_core::Interface::vtable(self).GetLastError)(
6782                windows_core::Interface::as_raw(self),
6783                hresult,
6784                ulflags,
6785                lppmapierror as _,
6786            )
6787            .ok()
6788        }
6789    }
6790    pub unsafe fn Config<P0>(&self, lpstream: P0, ulflags: u32) -> windows_core::Result<()>
6791    where
6792        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6793    {
6794        unsafe {
6795            (windows_core::Interface::vtable(self).Config)(
6796                windows_core::Interface::as_raw(self),
6797                lpstream.param().abi(),
6798                ulflags,
6799            )
6800            .ok()
6801        }
6802    }
6803    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
6804    where
6805        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6806    {
6807        unsafe {
6808            (windows_core::Interface::vtable(self).UpdateState)(
6809                windows_core::Interface::as_raw(self),
6810                lpstream.param().abi(),
6811            )
6812            .ok()
6813        }
6814    }
6815    pub unsafe fn ImportFolderChange(
6816        &self,
6817        cpvalchanges: u32,
6818        ppvalchanges: *mut SPropValue,
6819    ) -> windows_core::Result<()> {
6820        unsafe {
6821            (windows_core::Interface::vtable(self).ImportFolderChange)(
6822                windows_core::Interface::as_raw(self),
6823                cpvalchanges,
6824                ppvalchanges as _,
6825            )
6826            .ok()
6827        }
6828    }
6829    pub unsafe fn ImportFolderDeletion(
6830        &self,
6831        ulflags: u32,
6832        lpsrcentrylist: *mut SBinaryArray,
6833    ) -> windows_core::Result<()> {
6834        unsafe {
6835            (windows_core::Interface::vtable(self).ImportFolderDeletion)(
6836                windows_core::Interface::as_raw(self),
6837                ulflags,
6838                lpsrcentrylist as _,
6839            )
6840            .ok()
6841        }
6842    }
6843}
6844#[repr(C)]
6845pub struct IExchangeImportHierarchyChanges_Vtbl {
6846    pub base__: windows_core::IUnknown_Vtbl,
6847    pub GetLastError: unsafe extern "system" fn(
6848        *mut core::ffi::c_void,
6849        windows_core::HRESULT,
6850        u32,
6851        *mut *mut MAPIERROR,
6852    ) -> windows_core::HRESULT,
6853    pub Config: unsafe extern "system" fn(
6854        *mut core::ffi::c_void,
6855        *mut core::ffi::c_void,
6856        u32,
6857    ) -> windows_core::HRESULT,
6858    pub UpdateState: unsafe extern "system" fn(
6859        *mut core::ffi::c_void,
6860        *mut core::ffi::c_void,
6861    ) -> windows_core::HRESULT,
6862    pub ImportFolderChange: unsafe extern "system" fn(
6863        *mut core::ffi::c_void,
6864        u32,
6865        *mut SPropValue,
6866    ) -> windows_core::HRESULT,
6867    pub ImportFolderDeletion: unsafe extern "system" fn(
6868        *mut core::ffi::c_void,
6869        u32,
6870        *mut SBinaryArray,
6871    ) -> windows_core::HRESULT,
6872}
6873pub trait IExchangeImportHierarchyChanges_Impl: windows_core::IUnknownImpl {
6874    fn GetLastError(
6875        &self,
6876        hresult: windows_core::HRESULT,
6877        ulflags: u32,
6878        lppmapierror: *mut *mut MAPIERROR,
6879    ) -> windows_core::Result<()>;
6880    fn Config(
6881        &self,
6882        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
6883        ulflags: u32,
6884    ) -> windows_core::Result<()>;
6885    fn UpdateState(
6886        &self,
6887        lpstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
6888    ) -> windows_core::Result<()>;
6889    fn ImportFolderChange(
6890        &self,
6891        cpvalchanges: u32,
6892        ppvalchanges: *mut SPropValue,
6893    ) -> windows_core::Result<()>;
6894    fn ImportFolderDeletion(
6895        &self,
6896        ulflags: u32,
6897        lpsrcentrylist: *mut SBinaryArray,
6898    ) -> windows_core::Result<()>;
6899}
6900impl IExchangeImportHierarchyChanges_Vtbl {
6901    pub const fn new<Identity: IExchangeImportHierarchyChanges_Impl, const OFFSET: isize>() -> Self
6902    {
6903        unsafe extern "system" fn GetLastError<
6904            Identity: IExchangeImportHierarchyChanges_Impl,
6905            const OFFSET: isize,
6906        >(
6907            this: *mut core::ffi::c_void,
6908            hresult: windows_core::HRESULT,
6909            ulflags: u32,
6910            lppmapierror: *mut *mut MAPIERROR,
6911        ) -> windows_core::HRESULT {
6912            unsafe {
6913                let this: &Identity =
6914                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6915                IExchangeImportHierarchyChanges_Impl::GetLastError(
6916                    this,
6917                    core::mem::transmute_copy(&hresult),
6918                    core::mem::transmute_copy(&ulflags),
6919                    core::mem::transmute_copy(&lppmapierror),
6920                )
6921                .into()
6922            }
6923        }
6924        unsafe extern "system" fn Config<
6925            Identity: IExchangeImportHierarchyChanges_Impl,
6926            const OFFSET: isize,
6927        >(
6928            this: *mut core::ffi::c_void,
6929            lpstream: *mut core::ffi::c_void,
6930            ulflags: u32,
6931        ) -> windows_core::HRESULT {
6932            unsafe {
6933                let this: &Identity =
6934                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6935                IExchangeImportHierarchyChanges_Impl::Config(
6936                    this,
6937                    core::mem::transmute_copy(&lpstream),
6938                    core::mem::transmute_copy(&ulflags),
6939                )
6940                .into()
6941            }
6942        }
6943        unsafe extern "system" fn UpdateState<
6944            Identity: IExchangeImportHierarchyChanges_Impl,
6945            const OFFSET: isize,
6946        >(
6947            this: *mut core::ffi::c_void,
6948            lpstream: *mut core::ffi::c_void,
6949        ) -> windows_core::HRESULT {
6950            unsafe {
6951                let this: &Identity =
6952                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6953                IExchangeImportHierarchyChanges_Impl::UpdateState(
6954                    this,
6955                    core::mem::transmute_copy(&lpstream),
6956                )
6957                .into()
6958            }
6959        }
6960        unsafe extern "system" fn ImportFolderChange<
6961            Identity: IExchangeImportHierarchyChanges_Impl,
6962            const OFFSET: isize,
6963        >(
6964            this: *mut core::ffi::c_void,
6965            cpvalchanges: u32,
6966            ppvalchanges: *mut SPropValue,
6967        ) -> windows_core::HRESULT {
6968            unsafe {
6969                let this: &Identity =
6970                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6971                IExchangeImportHierarchyChanges_Impl::ImportFolderChange(
6972                    this,
6973                    core::mem::transmute_copy(&cpvalchanges),
6974                    core::mem::transmute_copy(&ppvalchanges),
6975                )
6976                .into()
6977            }
6978        }
6979        unsafe extern "system" fn ImportFolderDeletion<
6980            Identity: IExchangeImportHierarchyChanges_Impl,
6981            const OFFSET: isize,
6982        >(
6983            this: *mut core::ffi::c_void,
6984            ulflags: u32,
6985            lpsrcentrylist: *mut SBinaryArray,
6986        ) -> windows_core::HRESULT {
6987            unsafe {
6988                let this: &Identity =
6989                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6990                IExchangeImportHierarchyChanges_Impl::ImportFolderDeletion(
6991                    this,
6992                    core::mem::transmute_copy(&ulflags),
6993                    core::mem::transmute_copy(&lpsrcentrylist),
6994                )
6995                .into()
6996            }
6997        }
6998        Self {
6999            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7000            GetLastError: GetLastError::<Identity, OFFSET>,
7001            Config: Config::<Identity, OFFSET>,
7002            UpdateState: UpdateState::<Identity, OFFSET>,
7003            ImportFolderChange: ImportFolderChange::<Identity, OFFSET>,
7004            ImportFolderDeletion: ImportFolderDeletion::<Identity, OFFSET>,
7005        }
7006    }
7007    pub fn matches(iid: &windows_core::GUID) -> bool {
7008        iid == &<IExchangeImportHierarchyChanges as windows_core::Interface>::IID
7009    }
7010}
7011impl windows_core::RuntimeName for IExchangeImportHierarchyChanges {}
7012windows_core::imp::define_interface!(
7013    IExchangeManageStore,
7014    IExchangeManageStore_Vtbl,
7015    0x559d10b0_a772_11cd_9bc8_00aa002fc45a
7016);
7017windows_core::imp::interface_hierarchy!(IExchangeManageStore, windows_core::IUnknown);
7018impl IExchangeManageStore {
7019    pub unsafe fn CreateStoreEntryID<P0, P1>(
7020        &self,
7021        lpszmsgstoredn: P0,
7022        lpszmailboxdn: P1,
7023        ulflags: u32,
7024        lpcbentryid: *mut u32,
7025        lppentryid: *mut *mut ENTRYID,
7026    ) -> windows_core::Result<()>
7027    where
7028        P0: windows_core::Param<windows_core::PCSTR>,
7029        P1: windows_core::Param<windows_core::PCSTR>,
7030    {
7031        unsafe {
7032            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
7033                windows_core::Interface::as_raw(self),
7034                lpszmsgstoredn.param().abi(),
7035                lpszmailboxdn.param().abi(),
7036                ulflags,
7037                lpcbentryid as _,
7038                lppentryid as _,
7039            )
7040            .ok()
7041        }
7042    }
7043    pub unsafe fn EntryIDFromSourceKey(
7044        &self,
7045        cfolderkeysize: u32,
7046        lpfoldersourcekey: *mut u8,
7047        cmessagekeysize: u32,
7048        lpmessagesourcekey: *mut u8,
7049        lpcbentryid: *mut u32,
7050        lppentryid: *mut *mut ENTRYID,
7051    ) -> windows_core::Result<()> {
7052        unsafe {
7053            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
7054                windows_core::Interface::as_raw(self),
7055                cfolderkeysize,
7056                lpfoldersourcekey as _,
7057                cmessagekeysize,
7058                lpmessagesourcekey as _,
7059                lpcbentryid as _,
7060                lppentryid as _,
7061            )
7062            .ok()
7063        }
7064    }
7065    pub unsafe fn GetRights(
7066        &self,
7067        cbuserentryid: u32,
7068        lpuserentryid: *mut ENTRYID,
7069        cbentryid: u32,
7070        lpentryid: *mut ENTRYID,
7071        lpulrights: *mut u32,
7072    ) -> windows_core::Result<()> {
7073        unsafe {
7074            (windows_core::Interface::vtable(self).GetRights)(
7075                windows_core::Interface::as_raw(self),
7076                cbuserentryid,
7077                lpuserentryid as _,
7078                cbentryid,
7079                lpentryid as _,
7080                lpulrights as _,
7081            )
7082            .ok()
7083        }
7084    }
7085    pub unsafe fn GetMailboxTable<P0>(
7086        &self,
7087        lpszservername: P0,
7088        lpptable: *mut Option<IMAPITable>,
7089        ulflags: u32,
7090    ) -> windows_core::Result<()>
7091    where
7092        P0: windows_core::Param<windows_core::PCSTR>,
7093    {
7094        unsafe {
7095            (windows_core::Interface::vtable(self).GetMailboxTable)(
7096                windows_core::Interface::as_raw(self),
7097                lpszservername.param().abi(),
7098                core::mem::transmute(lpptable),
7099                ulflags,
7100            )
7101            .ok()
7102        }
7103    }
7104    pub unsafe fn GetPublicFolderTable<P0>(
7105        &self,
7106        lpszservername: P0,
7107        lpptable: *mut Option<IMAPITable>,
7108        ulflags: u32,
7109    ) -> windows_core::Result<()>
7110    where
7111        P0: windows_core::Param<windows_core::PCSTR>,
7112    {
7113        unsafe {
7114            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
7115                windows_core::Interface::as_raw(self),
7116                lpszservername.param().abi(),
7117                core::mem::transmute(lpptable),
7118                ulflags,
7119            )
7120            .ok()
7121        }
7122    }
7123}
7124#[repr(C)]
7125pub struct IExchangeManageStore_Vtbl {
7126    pub base__: windows_core::IUnknown_Vtbl,
7127    pub CreateStoreEntryID: unsafe extern "system" fn(
7128        *mut core::ffi::c_void,
7129        windows_core::PCSTR,
7130        windows_core::PCSTR,
7131        u32,
7132        *mut u32,
7133        *mut *mut ENTRYID,
7134    ) -> windows_core::HRESULT,
7135    pub EntryIDFromSourceKey: unsafe extern "system" fn(
7136        *mut core::ffi::c_void,
7137        u32,
7138        *mut u8,
7139        u32,
7140        *mut u8,
7141        *mut u32,
7142        *mut *mut ENTRYID,
7143    ) -> windows_core::HRESULT,
7144    pub GetRights: unsafe extern "system" fn(
7145        *mut core::ffi::c_void,
7146        u32,
7147        *mut ENTRYID,
7148        u32,
7149        *mut ENTRYID,
7150        *mut u32,
7151    ) -> windows_core::HRESULT,
7152    pub GetMailboxTable: unsafe extern "system" fn(
7153        *mut core::ffi::c_void,
7154        windows_core::PCSTR,
7155        *mut *mut core::ffi::c_void,
7156        u32,
7157    ) -> windows_core::HRESULT,
7158    pub GetPublicFolderTable: unsafe extern "system" fn(
7159        *mut core::ffi::c_void,
7160        windows_core::PCSTR,
7161        *mut *mut core::ffi::c_void,
7162        u32,
7163    ) -> windows_core::HRESULT,
7164}
7165pub trait IExchangeManageStore_Impl: windows_core::IUnknownImpl {
7166    fn CreateStoreEntryID(
7167        &self,
7168        lpszmsgstoredn: &windows_core::PCSTR,
7169        lpszmailboxdn: &windows_core::PCSTR,
7170        ulflags: u32,
7171        lpcbentryid: *mut u32,
7172        lppentryid: *mut *mut ENTRYID,
7173    ) -> windows_core::Result<()>;
7174    fn EntryIDFromSourceKey(
7175        &self,
7176        cfolderkeysize: u32,
7177        lpfoldersourcekey: *mut u8,
7178        cmessagekeysize: u32,
7179        lpmessagesourcekey: *mut u8,
7180        lpcbentryid: *mut u32,
7181        lppentryid: *mut *mut ENTRYID,
7182    ) -> windows_core::Result<()>;
7183    fn GetRights(
7184        &self,
7185        cbuserentryid: u32,
7186        lpuserentryid: *mut ENTRYID,
7187        cbentryid: u32,
7188        lpentryid: *mut ENTRYID,
7189        lpulrights: *mut u32,
7190    ) -> windows_core::Result<()>;
7191    fn GetMailboxTable(
7192        &self,
7193        lpszservername: &windows_core::PCSTR,
7194        lpptable: windows_core::OutRef<'_, IMAPITable>,
7195        ulflags: u32,
7196    ) -> windows_core::Result<()>;
7197    fn GetPublicFolderTable(
7198        &self,
7199        lpszservername: &windows_core::PCSTR,
7200        lpptable: windows_core::OutRef<'_, IMAPITable>,
7201        ulflags: u32,
7202    ) -> windows_core::Result<()>;
7203}
7204impl IExchangeManageStore_Vtbl {
7205    pub const fn new<Identity: IExchangeManageStore_Impl, const OFFSET: isize>() -> Self {
7206        unsafe extern "system" fn CreateStoreEntryID<
7207            Identity: IExchangeManageStore_Impl,
7208            const OFFSET: isize,
7209        >(
7210            this: *mut core::ffi::c_void,
7211            lpszmsgstoredn: windows_core::PCSTR,
7212            lpszmailboxdn: windows_core::PCSTR,
7213            ulflags: u32,
7214            lpcbentryid: *mut u32,
7215            lppentryid: *mut *mut ENTRYID,
7216        ) -> windows_core::HRESULT {
7217            unsafe {
7218                let this: &Identity =
7219                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7220                IExchangeManageStore_Impl::CreateStoreEntryID(
7221                    this,
7222                    core::mem::transmute(&lpszmsgstoredn),
7223                    core::mem::transmute(&lpszmailboxdn),
7224                    core::mem::transmute_copy(&ulflags),
7225                    core::mem::transmute_copy(&lpcbentryid),
7226                    core::mem::transmute_copy(&lppentryid),
7227                )
7228                .into()
7229            }
7230        }
7231        unsafe extern "system" fn EntryIDFromSourceKey<
7232            Identity: IExchangeManageStore_Impl,
7233            const OFFSET: isize,
7234        >(
7235            this: *mut core::ffi::c_void,
7236            cfolderkeysize: u32,
7237            lpfoldersourcekey: *mut u8,
7238            cmessagekeysize: u32,
7239            lpmessagesourcekey: *mut u8,
7240            lpcbentryid: *mut u32,
7241            lppentryid: *mut *mut ENTRYID,
7242        ) -> windows_core::HRESULT {
7243            unsafe {
7244                let this: &Identity =
7245                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7246                IExchangeManageStore_Impl::EntryIDFromSourceKey(
7247                    this,
7248                    core::mem::transmute_copy(&cfolderkeysize),
7249                    core::mem::transmute_copy(&lpfoldersourcekey),
7250                    core::mem::transmute_copy(&cmessagekeysize),
7251                    core::mem::transmute_copy(&lpmessagesourcekey),
7252                    core::mem::transmute_copy(&lpcbentryid),
7253                    core::mem::transmute_copy(&lppentryid),
7254                )
7255                .into()
7256            }
7257        }
7258        unsafe extern "system" fn GetRights<
7259            Identity: IExchangeManageStore_Impl,
7260            const OFFSET: isize,
7261        >(
7262            this: *mut core::ffi::c_void,
7263            cbuserentryid: u32,
7264            lpuserentryid: *mut ENTRYID,
7265            cbentryid: u32,
7266            lpentryid: *mut ENTRYID,
7267            lpulrights: *mut u32,
7268        ) -> windows_core::HRESULT {
7269            unsafe {
7270                let this: &Identity =
7271                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7272                IExchangeManageStore_Impl::GetRights(
7273                    this,
7274                    core::mem::transmute_copy(&cbuserentryid),
7275                    core::mem::transmute_copy(&lpuserentryid),
7276                    core::mem::transmute_copy(&cbentryid),
7277                    core::mem::transmute_copy(&lpentryid),
7278                    core::mem::transmute_copy(&lpulrights),
7279                )
7280                .into()
7281            }
7282        }
7283        unsafe extern "system" fn GetMailboxTable<
7284            Identity: IExchangeManageStore_Impl,
7285            const OFFSET: isize,
7286        >(
7287            this: *mut core::ffi::c_void,
7288            lpszservername: windows_core::PCSTR,
7289            lpptable: *mut *mut core::ffi::c_void,
7290            ulflags: u32,
7291        ) -> windows_core::HRESULT {
7292            unsafe {
7293                let this: &Identity =
7294                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7295                IExchangeManageStore_Impl::GetMailboxTable(
7296                    this,
7297                    core::mem::transmute(&lpszservername),
7298                    core::mem::transmute_copy(&lpptable),
7299                    core::mem::transmute_copy(&ulflags),
7300                )
7301                .into()
7302            }
7303        }
7304        unsafe extern "system" fn GetPublicFolderTable<
7305            Identity: IExchangeManageStore_Impl,
7306            const OFFSET: isize,
7307        >(
7308            this: *mut core::ffi::c_void,
7309            lpszservername: windows_core::PCSTR,
7310            lpptable: *mut *mut core::ffi::c_void,
7311            ulflags: u32,
7312        ) -> windows_core::HRESULT {
7313            unsafe {
7314                let this: &Identity =
7315                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7316                IExchangeManageStore_Impl::GetPublicFolderTable(
7317                    this,
7318                    core::mem::transmute(&lpszservername),
7319                    core::mem::transmute_copy(&lpptable),
7320                    core::mem::transmute_copy(&ulflags),
7321                )
7322                .into()
7323            }
7324        }
7325        Self {
7326            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7327            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
7328            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
7329            GetRights: GetRights::<Identity, OFFSET>,
7330            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
7331            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
7332        }
7333    }
7334    pub fn matches(iid: &windows_core::GUID) -> bool {
7335        iid == &<IExchangeManageStore as windows_core::Interface>::IID
7336    }
7337}
7338impl windows_core::RuntimeName for IExchangeManageStore {}
7339windows_core::imp::define_interface!(
7340    IExchangeManageStore2,
7341    IExchangeManageStore2_Vtbl,
7342    0xb6dca470_0ff3_11d0_a409_00c04fd7bd87
7343);
7344windows_core::imp::interface_hierarchy!(IExchangeManageStore2, windows_core::IUnknown);
7345impl IExchangeManageStore2 {
7346    pub unsafe fn CreateStoreEntryID<P0, P1>(
7347        &self,
7348        lpszmsgstoredn: P0,
7349        lpszmailboxdn: P1,
7350        ulflags: u32,
7351        lpcbentryid: *mut u32,
7352        lppentryid: *mut *mut ENTRYID,
7353    ) -> windows_core::Result<()>
7354    where
7355        P0: windows_core::Param<windows_core::PCSTR>,
7356        P1: windows_core::Param<windows_core::PCSTR>,
7357    {
7358        unsafe {
7359            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
7360                windows_core::Interface::as_raw(self),
7361                lpszmsgstoredn.param().abi(),
7362                lpszmailboxdn.param().abi(),
7363                ulflags,
7364                lpcbentryid as _,
7365                lppentryid as _,
7366            )
7367            .ok()
7368        }
7369    }
7370    pub unsafe fn EntryIDFromSourceKey(
7371        &self,
7372        cfolderkeysize: u32,
7373        lpfoldersourcekey: *mut u8,
7374        cmessagekeysize: u32,
7375        lpmessagesourcekey: *mut u8,
7376        lpcbentryid: *mut u32,
7377        lppentryid: *mut *mut ENTRYID,
7378    ) -> windows_core::Result<()> {
7379        unsafe {
7380            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
7381                windows_core::Interface::as_raw(self),
7382                cfolderkeysize,
7383                lpfoldersourcekey as _,
7384                cmessagekeysize,
7385                lpmessagesourcekey as _,
7386                lpcbentryid as _,
7387                lppentryid as _,
7388            )
7389            .ok()
7390        }
7391    }
7392    pub unsafe fn GetRights(
7393        &self,
7394        cbuserentryid: u32,
7395        lpuserentryid: *mut ENTRYID,
7396        cbentryid: u32,
7397        lpentryid: *mut ENTRYID,
7398        lpulrights: *mut u32,
7399    ) -> windows_core::Result<()> {
7400        unsafe {
7401            (windows_core::Interface::vtable(self).GetRights)(
7402                windows_core::Interface::as_raw(self),
7403                cbuserentryid,
7404                lpuserentryid as _,
7405                cbentryid,
7406                lpentryid as _,
7407                lpulrights as _,
7408            )
7409            .ok()
7410        }
7411    }
7412    pub unsafe fn GetMailboxTable<P0>(
7413        &self,
7414        lpszservername: P0,
7415        lpptable: *mut Option<IMAPITable>,
7416        ulflags: u32,
7417    ) -> windows_core::Result<()>
7418    where
7419        P0: windows_core::Param<windows_core::PCSTR>,
7420    {
7421        unsafe {
7422            (windows_core::Interface::vtable(self).GetMailboxTable)(
7423                windows_core::Interface::as_raw(self),
7424                lpszservername.param().abi(),
7425                core::mem::transmute(lpptable),
7426                ulflags,
7427            )
7428            .ok()
7429        }
7430    }
7431    pub unsafe fn GetPublicFolderTable<P0>(
7432        &self,
7433        lpszservername: P0,
7434        lpptable: *mut Option<IMAPITable>,
7435        ulflags: u32,
7436    ) -> windows_core::Result<()>
7437    where
7438        P0: windows_core::Param<windows_core::PCSTR>,
7439    {
7440        unsafe {
7441            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
7442                windows_core::Interface::as_raw(self),
7443                lpszservername.param().abi(),
7444                core::mem::transmute(lpptable),
7445                ulflags,
7446            )
7447            .ok()
7448        }
7449    }
7450    pub unsafe fn CreateNewsgroupNameEntryID<P0>(
7451        &self,
7452        lpsznewsgroupname: P0,
7453        lpcbentryid: *mut u32,
7454        lppentryid: *mut *mut ENTRYID,
7455    ) -> windows_core::Result<()>
7456    where
7457        P0: windows_core::Param<windows_core::PCSTR>,
7458    {
7459        unsafe {
7460            (windows_core::Interface::vtable(self).CreateNewsgroupNameEntryID)(
7461                windows_core::Interface::as_raw(self),
7462                lpsznewsgroupname.param().abi(),
7463                lpcbentryid as _,
7464                lppentryid as _,
7465            )
7466            .ok()
7467        }
7468    }
7469}
7470#[repr(C)]
7471pub struct IExchangeManageStore2_Vtbl {
7472    pub base__: windows_core::IUnknown_Vtbl,
7473    pub CreateStoreEntryID: unsafe extern "system" fn(
7474        *mut core::ffi::c_void,
7475        windows_core::PCSTR,
7476        windows_core::PCSTR,
7477        u32,
7478        *mut u32,
7479        *mut *mut ENTRYID,
7480    ) -> windows_core::HRESULT,
7481    pub EntryIDFromSourceKey: unsafe extern "system" fn(
7482        *mut core::ffi::c_void,
7483        u32,
7484        *mut u8,
7485        u32,
7486        *mut u8,
7487        *mut u32,
7488        *mut *mut ENTRYID,
7489    ) -> windows_core::HRESULT,
7490    pub GetRights: unsafe extern "system" fn(
7491        *mut core::ffi::c_void,
7492        u32,
7493        *mut ENTRYID,
7494        u32,
7495        *mut ENTRYID,
7496        *mut u32,
7497    ) -> windows_core::HRESULT,
7498    pub GetMailboxTable: unsafe extern "system" fn(
7499        *mut core::ffi::c_void,
7500        windows_core::PCSTR,
7501        *mut *mut core::ffi::c_void,
7502        u32,
7503    ) -> windows_core::HRESULT,
7504    pub GetPublicFolderTable: unsafe extern "system" fn(
7505        *mut core::ffi::c_void,
7506        windows_core::PCSTR,
7507        *mut *mut core::ffi::c_void,
7508        u32,
7509    ) -> windows_core::HRESULT,
7510    pub CreateNewsgroupNameEntryID: unsafe extern "system" fn(
7511        *mut core::ffi::c_void,
7512        windows_core::PCSTR,
7513        *mut u32,
7514        *mut *mut ENTRYID,
7515    ) -> windows_core::HRESULT,
7516}
7517pub trait IExchangeManageStore2_Impl: windows_core::IUnknownImpl {
7518    fn CreateStoreEntryID(
7519        &self,
7520        lpszmsgstoredn: &windows_core::PCSTR,
7521        lpszmailboxdn: &windows_core::PCSTR,
7522        ulflags: u32,
7523        lpcbentryid: *mut u32,
7524        lppentryid: *mut *mut ENTRYID,
7525    ) -> windows_core::Result<()>;
7526    fn EntryIDFromSourceKey(
7527        &self,
7528        cfolderkeysize: u32,
7529        lpfoldersourcekey: *mut u8,
7530        cmessagekeysize: u32,
7531        lpmessagesourcekey: *mut u8,
7532        lpcbentryid: *mut u32,
7533        lppentryid: *mut *mut ENTRYID,
7534    ) -> windows_core::Result<()>;
7535    fn GetRights(
7536        &self,
7537        cbuserentryid: u32,
7538        lpuserentryid: *mut ENTRYID,
7539        cbentryid: u32,
7540        lpentryid: *mut ENTRYID,
7541        lpulrights: *mut u32,
7542    ) -> windows_core::Result<()>;
7543    fn GetMailboxTable(
7544        &self,
7545        lpszservername: &windows_core::PCSTR,
7546        lpptable: windows_core::OutRef<'_, IMAPITable>,
7547        ulflags: u32,
7548    ) -> windows_core::Result<()>;
7549    fn GetPublicFolderTable(
7550        &self,
7551        lpszservername: &windows_core::PCSTR,
7552        lpptable: windows_core::OutRef<'_, IMAPITable>,
7553        ulflags: u32,
7554    ) -> windows_core::Result<()>;
7555    fn CreateNewsgroupNameEntryID(
7556        &self,
7557        lpsznewsgroupname: &windows_core::PCSTR,
7558        lpcbentryid: *mut u32,
7559        lppentryid: *mut *mut ENTRYID,
7560    ) -> windows_core::Result<()>;
7561}
7562impl IExchangeManageStore2_Vtbl {
7563    pub const fn new<Identity: IExchangeManageStore2_Impl, const OFFSET: isize>() -> Self {
7564        unsafe extern "system" fn CreateStoreEntryID<
7565            Identity: IExchangeManageStore2_Impl,
7566            const OFFSET: isize,
7567        >(
7568            this: *mut core::ffi::c_void,
7569            lpszmsgstoredn: windows_core::PCSTR,
7570            lpszmailboxdn: windows_core::PCSTR,
7571            ulflags: u32,
7572            lpcbentryid: *mut u32,
7573            lppentryid: *mut *mut ENTRYID,
7574        ) -> windows_core::HRESULT {
7575            unsafe {
7576                let this: &Identity =
7577                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7578                IExchangeManageStore2_Impl::CreateStoreEntryID(
7579                    this,
7580                    core::mem::transmute(&lpszmsgstoredn),
7581                    core::mem::transmute(&lpszmailboxdn),
7582                    core::mem::transmute_copy(&ulflags),
7583                    core::mem::transmute_copy(&lpcbentryid),
7584                    core::mem::transmute_copy(&lppentryid),
7585                )
7586                .into()
7587            }
7588        }
7589        unsafe extern "system" fn EntryIDFromSourceKey<
7590            Identity: IExchangeManageStore2_Impl,
7591            const OFFSET: isize,
7592        >(
7593            this: *mut core::ffi::c_void,
7594            cfolderkeysize: u32,
7595            lpfoldersourcekey: *mut u8,
7596            cmessagekeysize: u32,
7597            lpmessagesourcekey: *mut u8,
7598            lpcbentryid: *mut u32,
7599            lppentryid: *mut *mut ENTRYID,
7600        ) -> windows_core::HRESULT {
7601            unsafe {
7602                let this: &Identity =
7603                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7604                IExchangeManageStore2_Impl::EntryIDFromSourceKey(
7605                    this,
7606                    core::mem::transmute_copy(&cfolderkeysize),
7607                    core::mem::transmute_copy(&lpfoldersourcekey),
7608                    core::mem::transmute_copy(&cmessagekeysize),
7609                    core::mem::transmute_copy(&lpmessagesourcekey),
7610                    core::mem::transmute_copy(&lpcbentryid),
7611                    core::mem::transmute_copy(&lppentryid),
7612                )
7613                .into()
7614            }
7615        }
7616        unsafe extern "system" fn GetRights<
7617            Identity: IExchangeManageStore2_Impl,
7618            const OFFSET: isize,
7619        >(
7620            this: *mut core::ffi::c_void,
7621            cbuserentryid: u32,
7622            lpuserentryid: *mut ENTRYID,
7623            cbentryid: u32,
7624            lpentryid: *mut ENTRYID,
7625            lpulrights: *mut u32,
7626        ) -> windows_core::HRESULT {
7627            unsafe {
7628                let this: &Identity =
7629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7630                IExchangeManageStore2_Impl::GetRights(
7631                    this,
7632                    core::mem::transmute_copy(&cbuserentryid),
7633                    core::mem::transmute_copy(&lpuserentryid),
7634                    core::mem::transmute_copy(&cbentryid),
7635                    core::mem::transmute_copy(&lpentryid),
7636                    core::mem::transmute_copy(&lpulrights),
7637                )
7638                .into()
7639            }
7640        }
7641        unsafe extern "system" fn GetMailboxTable<
7642            Identity: IExchangeManageStore2_Impl,
7643            const OFFSET: isize,
7644        >(
7645            this: *mut core::ffi::c_void,
7646            lpszservername: windows_core::PCSTR,
7647            lpptable: *mut *mut core::ffi::c_void,
7648            ulflags: u32,
7649        ) -> windows_core::HRESULT {
7650            unsafe {
7651                let this: &Identity =
7652                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7653                IExchangeManageStore2_Impl::GetMailboxTable(
7654                    this,
7655                    core::mem::transmute(&lpszservername),
7656                    core::mem::transmute_copy(&lpptable),
7657                    core::mem::transmute_copy(&ulflags),
7658                )
7659                .into()
7660            }
7661        }
7662        unsafe extern "system" fn GetPublicFolderTable<
7663            Identity: IExchangeManageStore2_Impl,
7664            const OFFSET: isize,
7665        >(
7666            this: *mut core::ffi::c_void,
7667            lpszservername: windows_core::PCSTR,
7668            lpptable: *mut *mut core::ffi::c_void,
7669            ulflags: u32,
7670        ) -> windows_core::HRESULT {
7671            unsafe {
7672                let this: &Identity =
7673                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7674                IExchangeManageStore2_Impl::GetPublicFolderTable(
7675                    this,
7676                    core::mem::transmute(&lpszservername),
7677                    core::mem::transmute_copy(&lpptable),
7678                    core::mem::transmute_copy(&ulflags),
7679                )
7680                .into()
7681            }
7682        }
7683        unsafe extern "system" fn CreateNewsgroupNameEntryID<
7684            Identity: IExchangeManageStore2_Impl,
7685            const OFFSET: isize,
7686        >(
7687            this: *mut core::ffi::c_void,
7688            lpsznewsgroupname: windows_core::PCSTR,
7689            lpcbentryid: *mut u32,
7690            lppentryid: *mut *mut ENTRYID,
7691        ) -> windows_core::HRESULT {
7692            unsafe {
7693                let this: &Identity =
7694                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7695                IExchangeManageStore2_Impl::CreateNewsgroupNameEntryID(
7696                    this,
7697                    core::mem::transmute(&lpsznewsgroupname),
7698                    core::mem::transmute_copy(&lpcbentryid),
7699                    core::mem::transmute_copy(&lppentryid),
7700                )
7701                .into()
7702            }
7703        }
7704        Self {
7705            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7706            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
7707            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
7708            GetRights: GetRights::<Identity, OFFSET>,
7709            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
7710            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
7711            CreateNewsgroupNameEntryID: CreateNewsgroupNameEntryID::<Identity, OFFSET>,
7712        }
7713    }
7714    pub fn matches(iid: &windows_core::GUID) -> bool {
7715        iid == &<IExchangeManageStore2 as windows_core::Interface>::IID
7716    }
7717}
7718impl windows_core::RuntimeName for IExchangeManageStore2 {}
7719windows_core::imp::define_interface!(
7720    IExchangeManageStore3,
7721    IExchangeManageStore3_Vtbl,
7722    0x166d9bc2_db75_44a9_8a93_9f3ffc994d76
7723);
7724windows_core::imp::interface_hierarchy!(IExchangeManageStore3, windows_core::IUnknown);
7725impl IExchangeManageStore3 {
7726    pub unsafe fn CreateStoreEntryID<P0, P1>(
7727        &self,
7728        lpszmsgstoredn: P0,
7729        lpszmailboxdn: P1,
7730        ulflags: u32,
7731        lpcbentryid: *mut u32,
7732        lppentryid: *mut *mut ENTRYID,
7733    ) -> windows_core::Result<()>
7734    where
7735        P0: windows_core::Param<windows_core::PCSTR>,
7736        P1: windows_core::Param<windows_core::PCSTR>,
7737    {
7738        unsafe {
7739            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
7740                windows_core::Interface::as_raw(self),
7741                lpszmsgstoredn.param().abi(),
7742                lpszmailboxdn.param().abi(),
7743                ulflags,
7744                lpcbentryid as _,
7745                lppentryid as _,
7746            )
7747            .ok()
7748        }
7749    }
7750    pub unsafe fn EntryIDFromSourceKey(
7751        &self,
7752        cfolderkeysize: u32,
7753        lpfoldersourcekey: *mut u8,
7754        cmessagekeysize: u32,
7755        lpmessagesourcekey: *mut u8,
7756        lpcbentryid: *mut u32,
7757        lppentryid: *mut *mut ENTRYID,
7758    ) -> windows_core::Result<()> {
7759        unsafe {
7760            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
7761                windows_core::Interface::as_raw(self),
7762                cfolderkeysize,
7763                lpfoldersourcekey as _,
7764                cmessagekeysize,
7765                lpmessagesourcekey as _,
7766                lpcbentryid as _,
7767                lppentryid as _,
7768            )
7769            .ok()
7770        }
7771    }
7772    pub unsafe fn GetRights(
7773        &self,
7774        cbuserentryid: u32,
7775        lpuserentryid: *mut ENTRYID,
7776        cbentryid: u32,
7777        lpentryid: *mut ENTRYID,
7778        lpulrights: *mut u32,
7779    ) -> windows_core::Result<()> {
7780        unsafe {
7781            (windows_core::Interface::vtable(self).GetRights)(
7782                windows_core::Interface::as_raw(self),
7783                cbuserentryid,
7784                lpuserentryid as _,
7785                cbentryid,
7786                lpentryid as _,
7787                lpulrights as _,
7788            )
7789            .ok()
7790        }
7791    }
7792    pub unsafe fn GetMailboxTable<P0>(
7793        &self,
7794        lpszservername: P0,
7795        lpptable: *mut Option<IMAPITable>,
7796        ulflags: u32,
7797    ) -> windows_core::Result<()>
7798    where
7799        P0: windows_core::Param<windows_core::PCSTR>,
7800    {
7801        unsafe {
7802            (windows_core::Interface::vtable(self).GetMailboxTable)(
7803                windows_core::Interface::as_raw(self),
7804                lpszservername.param().abi(),
7805                core::mem::transmute(lpptable),
7806                ulflags,
7807            )
7808            .ok()
7809        }
7810    }
7811    pub unsafe fn GetPublicFolderTable<P0>(
7812        &self,
7813        lpszservername: P0,
7814        lpptable: *mut Option<IMAPITable>,
7815        ulflags: u32,
7816    ) -> windows_core::Result<()>
7817    where
7818        P0: windows_core::Param<windows_core::PCSTR>,
7819    {
7820        unsafe {
7821            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
7822                windows_core::Interface::as_raw(self),
7823                lpszservername.param().abi(),
7824                core::mem::transmute(lpptable),
7825                ulflags,
7826            )
7827            .ok()
7828        }
7829    }
7830    pub unsafe fn CreateNewsgroupNameEntryID<P0>(
7831        &self,
7832        lpsznewsgroupname: P0,
7833        lpcbentryid: *mut u32,
7834        lppentryid: *mut *mut ENTRYID,
7835    ) -> windows_core::Result<()>
7836    where
7837        P0: windows_core::Param<windows_core::PCSTR>,
7838    {
7839        unsafe {
7840            (windows_core::Interface::vtable(self).CreateNewsgroupNameEntryID)(
7841                windows_core::Interface::as_raw(self),
7842                lpsznewsgroupname.param().abi(),
7843                lpcbentryid as _,
7844                lppentryid as _,
7845            )
7846            .ok()
7847        }
7848    }
7849    pub unsafe fn GetMailboxTableOffset<P0>(
7850        &self,
7851        lpszservername: P0,
7852        lpptable: *mut Option<IMAPITable>,
7853        ulflags: u32,
7854        uoffset: u32,
7855    ) -> windows_core::Result<()>
7856    where
7857        P0: windows_core::Param<windows_core::PCSTR>,
7858    {
7859        unsafe {
7860            (windows_core::Interface::vtable(self).GetMailboxTableOffset)(
7861                windows_core::Interface::as_raw(self),
7862                lpszservername.param().abi(),
7863                core::mem::transmute(lpptable),
7864                ulflags,
7865                uoffset,
7866            )
7867            .ok()
7868        }
7869    }
7870}
7871#[repr(C)]
7872pub struct IExchangeManageStore3_Vtbl {
7873    pub base__: windows_core::IUnknown_Vtbl,
7874    pub CreateStoreEntryID: unsafe extern "system" fn(
7875        *mut core::ffi::c_void,
7876        windows_core::PCSTR,
7877        windows_core::PCSTR,
7878        u32,
7879        *mut u32,
7880        *mut *mut ENTRYID,
7881    ) -> windows_core::HRESULT,
7882    pub EntryIDFromSourceKey: unsafe extern "system" fn(
7883        *mut core::ffi::c_void,
7884        u32,
7885        *mut u8,
7886        u32,
7887        *mut u8,
7888        *mut u32,
7889        *mut *mut ENTRYID,
7890    ) -> windows_core::HRESULT,
7891    pub GetRights: unsafe extern "system" fn(
7892        *mut core::ffi::c_void,
7893        u32,
7894        *mut ENTRYID,
7895        u32,
7896        *mut ENTRYID,
7897        *mut u32,
7898    ) -> windows_core::HRESULT,
7899    pub GetMailboxTable: unsafe extern "system" fn(
7900        *mut core::ffi::c_void,
7901        windows_core::PCSTR,
7902        *mut *mut core::ffi::c_void,
7903        u32,
7904    ) -> windows_core::HRESULT,
7905    pub GetPublicFolderTable: unsafe extern "system" fn(
7906        *mut core::ffi::c_void,
7907        windows_core::PCSTR,
7908        *mut *mut core::ffi::c_void,
7909        u32,
7910    ) -> windows_core::HRESULT,
7911    pub CreateNewsgroupNameEntryID: unsafe extern "system" fn(
7912        *mut core::ffi::c_void,
7913        windows_core::PCSTR,
7914        *mut u32,
7915        *mut *mut ENTRYID,
7916    ) -> windows_core::HRESULT,
7917    pub GetMailboxTableOffset: unsafe extern "system" fn(
7918        *mut core::ffi::c_void,
7919        windows_core::PCSTR,
7920        *mut *mut core::ffi::c_void,
7921        u32,
7922        u32,
7923    ) -> windows_core::HRESULT,
7924}
7925pub trait IExchangeManageStore3_Impl: windows_core::IUnknownImpl {
7926    fn CreateStoreEntryID(
7927        &self,
7928        lpszmsgstoredn: &windows_core::PCSTR,
7929        lpszmailboxdn: &windows_core::PCSTR,
7930        ulflags: u32,
7931        lpcbentryid: *mut u32,
7932        lppentryid: *mut *mut ENTRYID,
7933    ) -> windows_core::Result<()>;
7934    fn EntryIDFromSourceKey(
7935        &self,
7936        cfolderkeysize: u32,
7937        lpfoldersourcekey: *mut u8,
7938        cmessagekeysize: u32,
7939        lpmessagesourcekey: *mut u8,
7940        lpcbentryid: *mut u32,
7941        lppentryid: *mut *mut ENTRYID,
7942    ) -> windows_core::Result<()>;
7943    fn GetRights(
7944        &self,
7945        cbuserentryid: u32,
7946        lpuserentryid: *mut ENTRYID,
7947        cbentryid: u32,
7948        lpentryid: *mut ENTRYID,
7949        lpulrights: *mut u32,
7950    ) -> windows_core::Result<()>;
7951    fn GetMailboxTable(
7952        &self,
7953        lpszservername: &windows_core::PCSTR,
7954        lpptable: windows_core::OutRef<'_, IMAPITable>,
7955        ulflags: u32,
7956    ) -> windows_core::Result<()>;
7957    fn GetPublicFolderTable(
7958        &self,
7959        lpszservername: &windows_core::PCSTR,
7960        lpptable: windows_core::OutRef<'_, IMAPITable>,
7961        ulflags: u32,
7962    ) -> windows_core::Result<()>;
7963    fn CreateNewsgroupNameEntryID(
7964        &self,
7965        lpsznewsgroupname: &windows_core::PCSTR,
7966        lpcbentryid: *mut u32,
7967        lppentryid: *mut *mut ENTRYID,
7968    ) -> windows_core::Result<()>;
7969    fn GetMailboxTableOffset(
7970        &self,
7971        lpszservername: &windows_core::PCSTR,
7972        lpptable: windows_core::OutRef<'_, IMAPITable>,
7973        ulflags: u32,
7974        uoffset: u32,
7975    ) -> windows_core::Result<()>;
7976}
7977impl IExchangeManageStore3_Vtbl {
7978    pub const fn new<Identity: IExchangeManageStore3_Impl, const OFFSET: isize>() -> Self {
7979        unsafe extern "system" fn CreateStoreEntryID<
7980            Identity: IExchangeManageStore3_Impl,
7981            const OFFSET: isize,
7982        >(
7983            this: *mut core::ffi::c_void,
7984            lpszmsgstoredn: windows_core::PCSTR,
7985            lpszmailboxdn: windows_core::PCSTR,
7986            ulflags: u32,
7987            lpcbentryid: *mut u32,
7988            lppentryid: *mut *mut ENTRYID,
7989        ) -> windows_core::HRESULT {
7990            unsafe {
7991                let this: &Identity =
7992                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7993                IExchangeManageStore3_Impl::CreateStoreEntryID(
7994                    this,
7995                    core::mem::transmute(&lpszmsgstoredn),
7996                    core::mem::transmute(&lpszmailboxdn),
7997                    core::mem::transmute_copy(&ulflags),
7998                    core::mem::transmute_copy(&lpcbentryid),
7999                    core::mem::transmute_copy(&lppentryid),
8000                )
8001                .into()
8002            }
8003        }
8004        unsafe extern "system" fn EntryIDFromSourceKey<
8005            Identity: IExchangeManageStore3_Impl,
8006            const OFFSET: isize,
8007        >(
8008            this: *mut core::ffi::c_void,
8009            cfolderkeysize: u32,
8010            lpfoldersourcekey: *mut u8,
8011            cmessagekeysize: u32,
8012            lpmessagesourcekey: *mut u8,
8013            lpcbentryid: *mut u32,
8014            lppentryid: *mut *mut ENTRYID,
8015        ) -> windows_core::HRESULT {
8016            unsafe {
8017                let this: &Identity =
8018                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8019                IExchangeManageStore3_Impl::EntryIDFromSourceKey(
8020                    this,
8021                    core::mem::transmute_copy(&cfolderkeysize),
8022                    core::mem::transmute_copy(&lpfoldersourcekey),
8023                    core::mem::transmute_copy(&cmessagekeysize),
8024                    core::mem::transmute_copy(&lpmessagesourcekey),
8025                    core::mem::transmute_copy(&lpcbentryid),
8026                    core::mem::transmute_copy(&lppentryid),
8027                )
8028                .into()
8029            }
8030        }
8031        unsafe extern "system" fn GetRights<
8032            Identity: IExchangeManageStore3_Impl,
8033            const OFFSET: isize,
8034        >(
8035            this: *mut core::ffi::c_void,
8036            cbuserentryid: u32,
8037            lpuserentryid: *mut ENTRYID,
8038            cbentryid: u32,
8039            lpentryid: *mut ENTRYID,
8040            lpulrights: *mut u32,
8041        ) -> windows_core::HRESULT {
8042            unsafe {
8043                let this: &Identity =
8044                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8045                IExchangeManageStore3_Impl::GetRights(
8046                    this,
8047                    core::mem::transmute_copy(&cbuserentryid),
8048                    core::mem::transmute_copy(&lpuserentryid),
8049                    core::mem::transmute_copy(&cbentryid),
8050                    core::mem::transmute_copy(&lpentryid),
8051                    core::mem::transmute_copy(&lpulrights),
8052                )
8053                .into()
8054            }
8055        }
8056        unsafe extern "system" fn GetMailboxTable<
8057            Identity: IExchangeManageStore3_Impl,
8058            const OFFSET: isize,
8059        >(
8060            this: *mut core::ffi::c_void,
8061            lpszservername: windows_core::PCSTR,
8062            lpptable: *mut *mut core::ffi::c_void,
8063            ulflags: u32,
8064        ) -> windows_core::HRESULT {
8065            unsafe {
8066                let this: &Identity =
8067                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8068                IExchangeManageStore3_Impl::GetMailboxTable(
8069                    this,
8070                    core::mem::transmute(&lpszservername),
8071                    core::mem::transmute_copy(&lpptable),
8072                    core::mem::transmute_copy(&ulflags),
8073                )
8074                .into()
8075            }
8076        }
8077        unsafe extern "system" fn GetPublicFolderTable<
8078            Identity: IExchangeManageStore3_Impl,
8079            const OFFSET: isize,
8080        >(
8081            this: *mut core::ffi::c_void,
8082            lpszservername: windows_core::PCSTR,
8083            lpptable: *mut *mut core::ffi::c_void,
8084            ulflags: u32,
8085        ) -> windows_core::HRESULT {
8086            unsafe {
8087                let this: &Identity =
8088                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8089                IExchangeManageStore3_Impl::GetPublicFolderTable(
8090                    this,
8091                    core::mem::transmute(&lpszservername),
8092                    core::mem::transmute_copy(&lpptable),
8093                    core::mem::transmute_copy(&ulflags),
8094                )
8095                .into()
8096            }
8097        }
8098        unsafe extern "system" fn CreateNewsgroupNameEntryID<
8099            Identity: IExchangeManageStore3_Impl,
8100            const OFFSET: isize,
8101        >(
8102            this: *mut core::ffi::c_void,
8103            lpsznewsgroupname: windows_core::PCSTR,
8104            lpcbentryid: *mut u32,
8105            lppentryid: *mut *mut ENTRYID,
8106        ) -> windows_core::HRESULT {
8107            unsafe {
8108                let this: &Identity =
8109                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8110                IExchangeManageStore3_Impl::CreateNewsgroupNameEntryID(
8111                    this,
8112                    core::mem::transmute(&lpsznewsgroupname),
8113                    core::mem::transmute_copy(&lpcbentryid),
8114                    core::mem::transmute_copy(&lppentryid),
8115                )
8116                .into()
8117            }
8118        }
8119        unsafe extern "system" fn GetMailboxTableOffset<
8120            Identity: IExchangeManageStore3_Impl,
8121            const OFFSET: isize,
8122        >(
8123            this: *mut core::ffi::c_void,
8124            lpszservername: windows_core::PCSTR,
8125            lpptable: *mut *mut core::ffi::c_void,
8126            ulflags: u32,
8127            uoffset: u32,
8128        ) -> windows_core::HRESULT {
8129            unsafe {
8130                let this: &Identity =
8131                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8132                IExchangeManageStore3_Impl::GetMailboxTableOffset(
8133                    this,
8134                    core::mem::transmute(&lpszservername),
8135                    core::mem::transmute_copy(&lpptable),
8136                    core::mem::transmute_copy(&ulflags),
8137                    core::mem::transmute_copy(&uoffset),
8138                )
8139                .into()
8140            }
8141        }
8142        Self {
8143            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8144            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
8145            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
8146            GetRights: GetRights::<Identity, OFFSET>,
8147            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
8148            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
8149            CreateNewsgroupNameEntryID: CreateNewsgroupNameEntryID::<Identity, OFFSET>,
8150            GetMailboxTableOffset: GetMailboxTableOffset::<Identity, OFFSET>,
8151        }
8152    }
8153    pub fn matches(iid: &windows_core::GUID) -> bool {
8154        iid == &<IExchangeManageStore3 as windows_core::Interface>::IID
8155    }
8156}
8157impl windows_core::RuntimeName for IExchangeManageStore3 {}
8158windows_core::imp::define_interface!(
8159    IExchangeManageStore4,
8160    IExchangeManageStore4_Vtbl,
8161    0x2590ff87_c431_4f9c_b1a8_cd69d760cd10
8162);
8163windows_core::imp::interface_hierarchy!(IExchangeManageStore4, windows_core::IUnknown);
8164impl IExchangeManageStore4 {
8165    pub unsafe fn CreateStoreEntryID<P0, P1>(
8166        &self,
8167        lpszmsgstoredn: P0,
8168        lpszmailboxdn: P1,
8169        ulflags: u32,
8170        lpcbentryid: *mut u32,
8171        lppentryid: *mut *mut ENTRYID,
8172    ) -> windows_core::Result<()>
8173    where
8174        P0: windows_core::Param<windows_core::PCSTR>,
8175        P1: windows_core::Param<windows_core::PCSTR>,
8176    {
8177        unsafe {
8178            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
8179                windows_core::Interface::as_raw(self),
8180                lpszmsgstoredn.param().abi(),
8181                lpszmailboxdn.param().abi(),
8182                ulflags,
8183                lpcbentryid as _,
8184                lppentryid as _,
8185            )
8186            .ok()
8187        }
8188    }
8189    pub unsafe fn EntryIDFromSourceKey(
8190        &self,
8191        cfolderkeysize: u32,
8192        lpfoldersourcekey: *mut u8,
8193        cmessagekeysize: u32,
8194        lpmessagesourcekey: *mut u8,
8195        lpcbentryid: *mut u32,
8196        lppentryid: *mut *mut ENTRYID,
8197    ) -> windows_core::Result<()> {
8198        unsafe {
8199            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
8200                windows_core::Interface::as_raw(self),
8201                cfolderkeysize,
8202                lpfoldersourcekey as _,
8203                cmessagekeysize,
8204                lpmessagesourcekey as _,
8205                lpcbentryid as _,
8206                lppentryid as _,
8207            )
8208            .ok()
8209        }
8210    }
8211    pub unsafe fn GetRights(
8212        &self,
8213        cbuserentryid: u32,
8214        lpuserentryid: *mut ENTRYID,
8215        cbentryid: u32,
8216        lpentryid: *mut ENTRYID,
8217        lpulrights: *mut u32,
8218    ) -> windows_core::Result<()> {
8219        unsafe {
8220            (windows_core::Interface::vtable(self).GetRights)(
8221                windows_core::Interface::as_raw(self),
8222                cbuserentryid,
8223                lpuserentryid as _,
8224                cbentryid,
8225                lpentryid as _,
8226                lpulrights as _,
8227            )
8228            .ok()
8229        }
8230    }
8231    pub unsafe fn GetMailboxTable<P0>(
8232        &self,
8233        lpszservername: P0,
8234        lpptable: *mut Option<IMAPITable>,
8235        ulflags: u32,
8236    ) -> windows_core::Result<()>
8237    where
8238        P0: windows_core::Param<windows_core::PCSTR>,
8239    {
8240        unsafe {
8241            (windows_core::Interface::vtable(self).GetMailboxTable)(
8242                windows_core::Interface::as_raw(self),
8243                lpszservername.param().abi(),
8244                core::mem::transmute(lpptable),
8245                ulflags,
8246            )
8247            .ok()
8248        }
8249    }
8250    pub unsafe fn GetPublicFolderTable<P0>(
8251        &self,
8252        lpszservername: P0,
8253        lpptable: *mut Option<IMAPITable>,
8254        ulflags: u32,
8255    ) -> windows_core::Result<()>
8256    where
8257        P0: windows_core::Param<windows_core::PCSTR>,
8258    {
8259        unsafe {
8260            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
8261                windows_core::Interface::as_raw(self),
8262                lpszservername.param().abi(),
8263                core::mem::transmute(lpptable),
8264                ulflags,
8265            )
8266            .ok()
8267        }
8268    }
8269    pub unsafe fn CreateNewsgroupNameEntryID<P0>(
8270        &self,
8271        lpsznewsgroupname: P0,
8272        lpcbentryid: *mut u32,
8273        lppentryid: *mut *mut ENTRYID,
8274    ) -> windows_core::Result<()>
8275    where
8276        P0: windows_core::Param<windows_core::PCSTR>,
8277    {
8278        unsafe {
8279            (windows_core::Interface::vtable(self).CreateNewsgroupNameEntryID)(
8280                windows_core::Interface::as_raw(self),
8281                lpsznewsgroupname.param().abi(),
8282                lpcbentryid as _,
8283                lppentryid as _,
8284            )
8285            .ok()
8286        }
8287    }
8288    pub unsafe fn GetMailboxTableOffset<P0>(
8289        &self,
8290        lpszservername: P0,
8291        lpptable: *mut Option<IMAPITable>,
8292        ulflags: u32,
8293        uoffset: u32,
8294    ) -> windows_core::Result<()>
8295    where
8296        P0: windows_core::Param<windows_core::PCSTR>,
8297    {
8298        unsafe {
8299            (windows_core::Interface::vtable(self).GetMailboxTableOffset)(
8300                windows_core::Interface::as_raw(self),
8301                lpszservername.param().abi(),
8302                core::mem::transmute(lpptable),
8303                ulflags,
8304                uoffset,
8305            )
8306            .ok()
8307        }
8308    }
8309    pub unsafe fn GetPublicFolderTableOffset<P0>(
8310        &self,
8311        lpszservername: P0,
8312        lpptable: *mut Option<IMAPITable>,
8313        ulflags: u32,
8314        uoffset: u32,
8315    ) -> windows_core::Result<()>
8316    where
8317        P0: windows_core::Param<windows_core::PCSTR>,
8318    {
8319        unsafe {
8320            (windows_core::Interface::vtable(self).GetPublicFolderTableOffset)(
8321                windows_core::Interface::as_raw(self),
8322                lpszservername.param().abi(),
8323                core::mem::transmute(lpptable),
8324                ulflags,
8325                uoffset,
8326            )
8327            .ok()
8328        }
8329    }
8330}
8331#[repr(C)]
8332pub struct IExchangeManageStore4_Vtbl {
8333    pub base__: windows_core::IUnknown_Vtbl,
8334    pub CreateStoreEntryID: unsafe extern "system" fn(
8335        *mut core::ffi::c_void,
8336        windows_core::PCSTR,
8337        windows_core::PCSTR,
8338        u32,
8339        *mut u32,
8340        *mut *mut ENTRYID,
8341    ) -> windows_core::HRESULT,
8342    pub EntryIDFromSourceKey: unsafe extern "system" fn(
8343        *mut core::ffi::c_void,
8344        u32,
8345        *mut u8,
8346        u32,
8347        *mut u8,
8348        *mut u32,
8349        *mut *mut ENTRYID,
8350    ) -> windows_core::HRESULT,
8351    pub GetRights: unsafe extern "system" fn(
8352        *mut core::ffi::c_void,
8353        u32,
8354        *mut ENTRYID,
8355        u32,
8356        *mut ENTRYID,
8357        *mut u32,
8358    ) -> windows_core::HRESULT,
8359    pub GetMailboxTable: unsafe extern "system" fn(
8360        *mut core::ffi::c_void,
8361        windows_core::PCSTR,
8362        *mut *mut core::ffi::c_void,
8363        u32,
8364    ) -> windows_core::HRESULT,
8365    pub GetPublicFolderTable: unsafe extern "system" fn(
8366        *mut core::ffi::c_void,
8367        windows_core::PCSTR,
8368        *mut *mut core::ffi::c_void,
8369        u32,
8370    ) -> windows_core::HRESULT,
8371    pub CreateNewsgroupNameEntryID: unsafe extern "system" fn(
8372        *mut core::ffi::c_void,
8373        windows_core::PCSTR,
8374        *mut u32,
8375        *mut *mut ENTRYID,
8376    ) -> windows_core::HRESULT,
8377    pub GetMailboxTableOffset: unsafe extern "system" fn(
8378        *mut core::ffi::c_void,
8379        windows_core::PCSTR,
8380        *mut *mut core::ffi::c_void,
8381        u32,
8382        u32,
8383    ) -> windows_core::HRESULT,
8384    pub GetPublicFolderTableOffset: unsafe extern "system" fn(
8385        *mut core::ffi::c_void,
8386        windows_core::PCSTR,
8387        *mut *mut core::ffi::c_void,
8388        u32,
8389        u32,
8390    ) -> windows_core::HRESULT,
8391}
8392pub trait IExchangeManageStore4_Impl: windows_core::IUnknownImpl {
8393    fn CreateStoreEntryID(
8394        &self,
8395        lpszmsgstoredn: &windows_core::PCSTR,
8396        lpszmailboxdn: &windows_core::PCSTR,
8397        ulflags: u32,
8398        lpcbentryid: *mut u32,
8399        lppentryid: *mut *mut ENTRYID,
8400    ) -> windows_core::Result<()>;
8401    fn EntryIDFromSourceKey(
8402        &self,
8403        cfolderkeysize: u32,
8404        lpfoldersourcekey: *mut u8,
8405        cmessagekeysize: u32,
8406        lpmessagesourcekey: *mut u8,
8407        lpcbentryid: *mut u32,
8408        lppentryid: *mut *mut ENTRYID,
8409    ) -> windows_core::Result<()>;
8410    fn GetRights(
8411        &self,
8412        cbuserentryid: u32,
8413        lpuserentryid: *mut ENTRYID,
8414        cbentryid: u32,
8415        lpentryid: *mut ENTRYID,
8416        lpulrights: *mut u32,
8417    ) -> windows_core::Result<()>;
8418    fn GetMailboxTable(
8419        &self,
8420        lpszservername: &windows_core::PCSTR,
8421        lpptable: windows_core::OutRef<'_, IMAPITable>,
8422        ulflags: u32,
8423    ) -> windows_core::Result<()>;
8424    fn GetPublicFolderTable(
8425        &self,
8426        lpszservername: &windows_core::PCSTR,
8427        lpptable: windows_core::OutRef<'_, IMAPITable>,
8428        ulflags: u32,
8429    ) -> windows_core::Result<()>;
8430    fn CreateNewsgroupNameEntryID(
8431        &self,
8432        lpsznewsgroupname: &windows_core::PCSTR,
8433        lpcbentryid: *mut u32,
8434        lppentryid: *mut *mut ENTRYID,
8435    ) -> windows_core::Result<()>;
8436    fn GetMailboxTableOffset(
8437        &self,
8438        lpszservername: &windows_core::PCSTR,
8439        lpptable: windows_core::OutRef<'_, IMAPITable>,
8440        ulflags: u32,
8441        uoffset: u32,
8442    ) -> windows_core::Result<()>;
8443    fn GetPublicFolderTableOffset(
8444        &self,
8445        lpszservername: &windows_core::PCSTR,
8446        lpptable: windows_core::OutRef<'_, IMAPITable>,
8447        ulflags: u32,
8448        uoffset: u32,
8449    ) -> windows_core::Result<()>;
8450}
8451impl IExchangeManageStore4_Vtbl {
8452    pub const fn new<Identity: IExchangeManageStore4_Impl, const OFFSET: isize>() -> Self {
8453        unsafe extern "system" fn CreateStoreEntryID<
8454            Identity: IExchangeManageStore4_Impl,
8455            const OFFSET: isize,
8456        >(
8457            this: *mut core::ffi::c_void,
8458            lpszmsgstoredn: windows_core::PCSTR,
8459            lpszmailboxdn: windows_core::PCSTR,
8460            ulflags: u32,
8461            lpcbentryid: *mut u32,
8462            lppentryid: *mut *mut ENTRYID,
8463        ) -> windows_core::HRESULT {
8464            unsafe {
8465                let this: &Identity =
8466                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8467                IExchangeManageStore4_Impl::CreateStoreEntryID(
8468                    this,
8469                    core::mem::transmute(&lpszmsgstoredn),
8470                    core::mem::transmute(&lpszmailboxdn),
8471                    core::mem::transmute_copy(&ulflags),
8472                    core::mem::transmute_copy(&lpcbentryid),
8473                    core::mem::transmute_copy(&lppentryid),
8474                )
8475                .into()
8476            }
8477        }
8478        unsafe extern "system" fn EntryIDFromSourceKey<
8479            Identity: IExchangeManageStore4_Impl,
8480            const OFFSET: isize,
8481        >(
8482            this: *mut core::ffi::c_void,
8483            cfolderkeysize: u32,
8484            lpfoldersourcekey: *mut u8,
8485            cmessagekeysize: u32,
8486            lpmessagesourcekey: *mut u8,
8487            lpcbentryid: *mut u32,
8488            lppentryid: *mut *mut ENTRYID,
8489        ) -> windows_core::HRESULT {
8490            unsafe {
8491                let this: &Identity =
8492                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8493                IExchangeManageStore4_Impl::EntryIDFromSourceKey(
8494                    this,
8495                    core::mem::transmute_copy(&cfolderkeysize),
8496                    core::mem::transmute_copy(&lpfoldersourcekey),
8497                    core::mem::transmute_copy(&cmessagekeysize),
8498                    core::mem::transmute_copy(&lpmessagesourcekey),
8499                    core::mem::transmute_copy(&lpcbentryid),
8500                    core::mem::transmute_copy(&lppentryid),
8501                )
8502                .into()
8503            }
8504        }
8505        unsafe extern "system" fn GetRights<
8506            Identity: IExchangeManageStore4_Impl,
8507            const OFFSET: isize,
8508        >(
8509            this: *mut core::ffi::c_void,
8510            cbuserentryid: u32,
8511            lpuserentryid: *mut ENTRYID,
8512            cbentryid: u32,
8513            lpentryid: *mut ENTRYID,
8514            lpulrights: *mut u32,
8515        ) -> windows_core::HRESULT {
8516            unsafe {
8517                let this: &Identity =
8518                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8519                IExchangeManageStore4_Impl::GetRights(
8520                    this,
8521                    core::mem::transmute_copy(&cbuserentryid),
8522                    core::mem::transmute_copy(&lpuserentryid),
8523                    core::mem::transmute_copy(&cbentryid),
8524                    core::mem::transmute_copy(&lpentryid),
8525                    core::mem::transmute_copy(&lpulrights),
8526                )
8527                .into()
8528            }
8529        }
8530        unsafe extern "system" fn GetMailboxTable<
8531            Identity: IExchangeManageStore4_Impl,
8532            const OFFSET: isize,
8533        >(
8534            this: *mut core::ffi::c_void,
8535            lpszservername: windows_core::PCSTR,
8536            lpptable: *mut *mut core::ffi::c_void,
8537            ulflags: u32,
8538        ) -> windows_core::HRESULT {
8539            unsafe {
8540                let this: &Identity =
8541                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8542                IExchangeManageStore4_Impl::GetMailboxTable(
8543                    this,
8544                    core::mem::transmute(&lpszservername),
8545                    core::mem::transmute_copy(&lpptable),
8546                    core::mem::transmute_copy(&ulflags),
8547                )
8548                .into()
8549            }
8550        }
8551        unsafe extern "system" fn GetPublicFolderTable<
8552            Identity: IExchangeManageStore4_Impl,
8553            const OFFSET: isize,
8554        >(
8555            this: *mut core::ffi::c_void,
8556            lpszservername: windows_core::PCSTR,
8557            lpptable: *mut *mut core::ffi::c_void,
8558            ulflags: u32,
8559        ) -> windows_core::HRESULT {
8560            unsafe {
8561                let this: &Identity =
8562                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8563                IExchangeManageStore4_Impl::GetPublicFolderTable(
8564                    this,
8565                    core::mem::transmute(&lpszservername),
8566                    core::mem::transmute_copy(&lpptable),
8567                    core::mem::transmute_copy(&ulflags),
8568                )
8569                .into()
8570            }
8571        }
8572        unsafe extern "system" fn CreateNewsgroupNameEntryID<
8573            Identity: IExchangeManageStore4_Impl,
8574            const OFFSET: isize,
8575        >(
8576            this: *mut core::ffi::c_void,
8577            lpsznewsgroupname: windows_core::PCSTR,
8578            lpcbentryid: *mut u32,
8579            lppentryid: *mut *mut ENTRYID,
8580        ) -> windows_core::HRESULT {
8581            unsafe {
8582                let this: &Identity =
8583                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8584                IExchangeManageStore4_Impl::CreateNewsgroupNameEntryID(
8585                    this,
8586                    core::mem::transmute(&lpsznewsgroupname),
8587                    core::mem::transmute_copy(&lpcbentryid),
8588                    core::mem::transmute_copy(&lppentryid),
8589                )
8590                .into()
8591            }
8592        }
8593        unsafe extern "system" fn GetMailboxTableOffset<
8594            Identity: IExchangeManageStore4_Impl,
8595            const OFFSET: isize,
8596        >(
8597            this: *mut core::ffi::c_void,
8598            lpszservername: windows_core::PCSTR,
8599            lpptable: *mut *mut core::ffi::c_void,
8600            ulflags: u32,
8601            uoffset: u32,
8602        ) -> windows_core::HRESULT {
8603            unsafe {
8604                let this: &Identity =
8605                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8606                IExchangeManageStore4_Impl::GetMailboxTableOffset(
8607                    this,
8608                    core::mem::transmute(&lpszservername),
8609                    core::mem::transmute_copy(&lpptable),
8610                    core::mem::transmute_copy(&ulflags),
8611                    core::mem::transmute_copy(&uoffset),
8612                )
8613                .into()
8614            }
8615        }
8616        unsafe extern "system" fn GetPublicFolderTableOffset<
8617            Identity: IExchangeManageStore4_Impl,
8618            const OFFSET: isize,
8619        >(
8620            this: *mut core::ffi::c_void,
8621            lpszservername: windows_core::PCSTR,
8622            lpptable: *mut *mut core::ffi::c_void,
8623            ulflags: u32,
8624            uoffset: u32,
8625        ) -> windows_core::HRESULT {
8626            unsafe {
8627                let this: &Identity =
8628                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8629                IExchangeManageStore4_Impl::GetPublicFolderTableOffset(
8630                    this,
8631                    core::mem::transmute(&lpszservername),
8632                    core::mem::transmute_copy(&lpptable),
8633                    core::mem::transmute_copy(&ulflags),
8634                    core::mem::transmute_copy(&uoffset),
8635                )
8636                .into()
8637            }
8638        }
8639        Self {
8640            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8641            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
8642            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
8643            GetRights: GetRights::<Identity, OFFSET>,
8644            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
8645            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
8646            CreateNewsgroupNameEntryID: CreateNewsgroupNameEntryID::<Identity, OFFSET>,
8647            GetMailboxTableOffset: GetMailboxTableOffset::<Identity, OFFSET>,
8648            GetPublicFolderTableOffset: GetPublicFolderTableOffset::<Identity, OFFSET>,
8649        }
8650    }
8651    pub fn matches(iid: &windows_core::GUID) -> bool {
8652        iid == &<IExchangeManageStore4 as windows_core::Interface>::IID
8653    }
8654}
8655impl windows_core::RuntimeName for IExchangeManageStore4 {}
8656windows_core::imp::define_interface!(
8657    IExchangeMessageConversion,
8658    IExchangeMessageConversion_Vtbl,
8659    0x3532b360_d114_11cf_a83b_00c04fd65597
8660);
8661windows_core::imp::interface_hierarchy!(IExchangeMessageConversion, windows_core::IUnknown);
8662impl IExchangeMessageConversion {
8663    pub unsafe fn OpenStream(
8664        &self,
8665        cvalues: u32,
8666        lpproparray: *mut SPropValue,
8667        lppstream: *mut Option<windows::Win32::System::Com::IStream>,
8668    ) -> windows_core::Result<()> {
8669        unsafe {
8670            (windows_core::Interface::vtable(self).OpenStream)(
8671                windows_core::Interface::as_raw(self),
8672                cvalues,
8673                lpproparray as _,
8674                core::mem::transmute(lppstream),
8675            )
8676            .ok()
8677        }
8678    }
8679}
8680#[repr(C)]
8681pub struct IExchangeMessageConversion_Vtbl {
8682    pub base__: windows_core::IUnknown_Vtbl,
8683    pub OpenStream: unsafe extern "system" fn(
8684        *mut core::ffi::c_void,
8685        u32,
8686        *mut SPropValue,
8687        *mut *mut core::ffi::c_void,
8688    ) -> windows_core::HRESULT,
8689}
8690pub trait IExchangeMessageConversion_Impl: windows_core::IUnknownImpl {
8691    fn OpenStream(
8692        &self,
8693        cvalues: u32,
8694        lpproparray: *mut SPropValue,
8695        lppstream: windows_core::OutRef<'_, windows::Win32::System::Com::IStream>,
8696    ) -> windows_core::Result<()>;
8697}
8698impl IExchangeMessageConversion_Vtbl {
8699    pub const fn new<Identity: IExchangeMessageConversion_Impl, const OFFSET: isize>() -> Self {
8700        unsafe extern "system" fn OpenStream<
8701            Identity: IExchangeMessageConversion_Impl,
8702            const OFFSET: isize,
8703        >(
8704            this: *mut core::ffi::c_void,
8705            cvalues: u32,
8706            lpproparray: *mut SPropValue,
8707            lppstream: *mut *mut core::ffi::c_void,
8708        ) -> windows_core::HRESULT {
8709            unsafe {
8710                let this: &Identity =
8711                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8712                IExchangeMessageConversion_Impl::OpenStream(
8713                    this,
8714                    core::mem::transmute_copy(&cvalues),
8715                    core::mem::transmute_copy(&lpproparray),
8716                    core::mem::transmute_copy(&lppstream),
8717                )
8718                .into()
8719            }
8720        }
8721        Self {
8722            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8723            OpenStream: OpenStream::<Identity, OFFSET>,
8724        }
8725    }
8726    pub fn matches(iid: &windows_core::GUID) -> bool {
8727        iid == &<IExchangeMessageConversion as windows_core::Interface>::IID
8728    }
8729}
8730impl windows_core::RuntimeName for IExchangeMessageConversion {}
8731windows_core::imp::define_interface!(
8732    IExchangeModifyTable,
8733    IExchangeModifyTable_Vtbl,
8734    0x2d734cb0_53fd_101b_b19d_08002b3056e3
8735);
8736windows_core::imp::interface_hierarchy!(IExchangeModifyTable, windows_core::IUnknown);
8737impl IExchangeModifyTable {
8738    pub unsafe fn GetLastError(
8739        &self,
8740        hresult: windows_core::HRESULT,
8741        ulflags: u32,
8742        lppmapierror: *mut *mut MAPIERROR,
8743    ) -> windows_core::Result<()> {
8744        unsafe {
8745            (windows_core::Interface::vtable(self).GetLastError)(
8746                windows_core::Interface::as_raw(self),
8747                hresult,
8748                ulflags,
8749                lppmapierror as _,
8750            )
8751            .ok()
8752        }
8753    }
8754    pub unsafe fn GetTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
8755        unsafe {
8756            let mut result__ = core::mem::zeroed();
8757            (windows_core::Interface::vtable(self).GetTable)(
8758                windows_core::Interface::as_raw(self),
8759                ulflags,
8760                &mut result__,
8761            )
8762            .and_then(|| windows_core::Type::from_abi(result__))
8763        }
8764    }
8765    pub unsafe fn ModifyTable(
8766        &self,
8767        ulflags: u32,
8768        lpmods: *mut ROWLIST,
8769    ) -> windows_core::Result<()> {
8770        unsafe {
8771            (windows_core::Interface::vtable(self).ModifyTable)(
8772                windows_core::Interface::as_raw(self),
8773                ulflags,
8774                lpmods as _,
8775            )
8776            .ok()
8777        }
8778    }
8779}
8780#[repr(C)]
8781pub struct IExchangeModifyTable_Vtbl {
8782    pub base__: windows_core::IUnknown_Vtbl,
8783    pub GetLastError: unsafe extern "system" fn(
8784        *mut core::ffi::c_void,
8785        windows_core::HRESULT,
8786        u32,
8787        *mut *mut MAPIERROR,
8788    ) -> windows_core::HRESULT,
8789    pub GetTable: unsafe extern "system" fn(
8790        *mut core::ffi::c_void,
8791        u32,
8792        *mut *mut core::ffi::c_void,
8793    ) -> windows_core::HRESULT,
8794    pub ModifyTable: unsafe extern "system" fn(
8795        *mut core::ffi::c_void,
8796        u32,
8797        *mut ROWLIST,
8798    ) -> windows_core::HRESULT,
8799}
8800pub trait IExchangeModifyTable_Impl: windows_core::IUnknownImpl {
8801    fn GetLastError(
8802        &self,
8803        hresult: windows_core::HRESULT,
8804        ulflags: u32,
8805        lppmapierror: *mut *mut MAPIERROR,
8806    ) -> windows_core::Result<()>;
8807    fn GetTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
8808    fn ModifyTable(&self, ulflags: u32, lpmods: *mut ROWLIST) -> windows_core::Result<()>;
8809}
8810impl IExchangeModifyTable_Vtbl {
8811    pub const fn new<Identity: IExchangeModifyTable_Impl, const OFFSET: isize>() -> Self {
8812        unsafe extern "system" fn GetLastError<
8813            Identity: IExchangeModifyTable_Impl,
8814            const OFFSET: isize,
8815        >(
8816            this: *mut core::ffi::c_void,
8817            hresult: windows_core::HRESULT,
8818            ulflags: u32,
8819            lppmapierror: *mut *mut MAPIERROR,
8820        ) -> windows_core::HRESULT {
8821            unsafe {
8822                let this: &Identity =
8823                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8824                IExchangeModifyTable_Impl::GetLastError(
8825                    this,
8826                    core::mem::transmute_copy(&hresult),
8827                    core::mem::transmute_copy(&ulflags),
8828                    core::mem::transmute_copy(&lppmapierror),
8829                )
8830                .into()
8831            }
8832        }
8833        unsafe extern "system" fn GetTable<
8834            Identity: IExchangeModifyTable_Impl,
8835            const OFFSET: isize,
8836        >(
8837            this: *mut core::ffi::c_void,
8838            ulflags: u32,
8839            lpptable: *mut *mut core::ffi::c_void,
8840        ) -> windows_core::HRESULT {
8841            unsafe {
8842                let this: &Identity =
8843                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8844                match IExchangeModifyTable_Impl::GetTable(this, core::mem::transmute_copy(&ulflags))
8845                {
8846                    Ok(ok__) => {
8847                        lpptable.write(core::mem::transmute(ok__));
8848                        windows_core::HRESULT(0)
8849                    }
8850                    Err(err) => err.into(),
8851                }
8852            }
8853        }
8854        unsafe extern "system" fn ModifyTable<
8855            Identity: IExchangeModifyTable_Impl,
8856            const OFFSET: isize,
8857        >(
8858            this: *mut core::ffi::c_void,
8859            ulflags: u32,
8860            lpmods: *mut ROWLIST,
8861        ) -> windows_core::HRESULT {
8862            unsafe {
8863                let this: &Identity =
8864                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8865                IExchangeModifyTable_Impl::ModifyTable(
8866                    this,
8867                    core::mem::transmute_copy(&ulflags),
8868                    core::mem::transmute_copy(&lpmods),
8869                )
8870                .into()
8871            }
8872        }
8873        Self {
8874            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8875            GetLastError: GetLastError::<Identity, OFFSET>,
8876            GetTable: GetTable::<Identity, OFFSET>,
8877            ModifyTable: ModifyTable::<Identity, OFFSET>,
8878        }
8879    }
8880    pub fn matches(iid: &windows_core::GUID) -> bool {
8881        iid == &<IExchangeModifyTable as windows_core::Interface>::IID
8882    }
8883}
8884impl windows_core::RuntimeName for IExchangeModifyTable {}
8885windows_core::imp::define_interface!(
8886    IExchangeMoveUserProgress,
8887    IExchangeMoveUserProgress_Vtbl,
8888    0xef2fb44a_8dac_4e4e_b1e3_a3b926355617
8889);
8890windows_core::imp::interface_hierarchy!(IExchangeMoveUserProgress, windows_core::IUnknown);
8891impl IExchangeMoveUserProgress {
8892    pub unsafe fn NextFolder<P1>(
8893        &self,
8894        ulflags: u32,
8895        lpwszfoldername: P1,
8896    ) -> windows_core::Result<()>
8897    where
8898        P1: windows_core::Param<windows_core::PCWSTR>,
8899    {
8900        unsafe {
8901            (windows_core::Interface::vtable(self).NextFolder)(
8902                windows_core::Interface::as_raw(self),
8903                ulflags,
8904                lpwszfoldername.param().abi(),
8905            )
8906            .ok()
8907        }
8908    }
8909    pub unsafe fn Progress(
8910        &self,
8911        ulflags: u32,
8912        ulcount: u32,
8913        ultotal: u32,
8914    ) -> windows_core::Result<()> {
8915        unsafe {
8916            (windows_core::Interface::vtable(self).Progress)(
8917                windows_core::Interface::as_raw(self),
8918                ulflags,
8919                ulcount,
8920                ultotal,
8921            )
8922            .ok()
8923        }
8924    }
8925    pub unsafe fn Restart(&self, ulflags: u32) -> windows_core::Result<()> {
8926        unsafe {
8927            (windows_core::Interface::vtable(self).Restart)(
8928                windows_core::Interface::as_raw(self),
8929                ulflags,
8930            )
8931            .ok()
8932        }
8933    }
8934}
8935#[repr(C)]
8936pub struct IExchangeMoveUserProgress_Vtbl {
8937    pub base__: windows_core::IUnknown_Vtbl,
8938    pub NextFolder: unsafe extern "system" fn(
8939        *mut core::ffi::c_void,
8940        u32,
8941        windows_core::PCWSTR,
8942    ) -> windows_core::HRESULT,
8943    pub Progress:
8944        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
8945    pub Restart: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
8946}
8947pub trait IExchangeMoveUserProgress_Impl: windows_core::IUnknownImpl {
8948    fn NextFolder(
8949        &self,
8950        ulflags: u32,
8951        lpwszfoldername: &windows_core::PCWSTR,
8952    ) -> windows_core::Result<()>;
8953    fn Progress(&self, ulflags: u32, ulcount: u32, ultotal: u32) -> windows_core::Result<()>;
8954    fn Restart(&self, ulflags: u32) -> windows_core::Result<()>;
8955}
8956impl IExchangeMoveUserProgress_Vtbl {
8957    pub const fn new<Identity: IExchangeMoveUserProgress_Impl, const OFFSET: isize>() -> Self {
8958        unsafe extern "system" fn NextFolder<
8959            Identity: IExchangeMoveUserProgress_Impl,
8960            const OFFSET: isize,
8961        >(
8962            this: *mut core::ffi::c_void,
8963            ulflags: u32,
8964            lpwszfoldername: windows_core::PCWSTR,
8965        ) -> windows_core::HRESULT {
8966            unsafe {
8967                let this: &Identity =
8968                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8969                IExchangeMoveUserProgress_Impl::NextFolder(
8970                    this,
8971                    core::mem::transmute_copy(&ulflags),
8972                    core::mem::transmute(&lpwszfoldername),
8973                )
8974                .into()
8975            }
8976        }
8977        unsafe extern "system" fn Progress<
8978            Identity: IExchangeMoveUserProgress_Impl,
8979            const OFFSET: isize,
8980        >(
8981            this: *mut core::ffi::c_void,
8982            ulflags: u32,
8983            ulcount: u32,
8984            ultotal: u32,
8985        ) -> windows_core::HRESULT {
8986            unsafe {
8987                let this: &Identity =
8988                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8989                IExchangeMoveUserProgress_Impl::Progress(
8990                    this,
8991                    core::mem::transmute_copy(&ulflags),
8992                    core::mem::transmute_copy(&ulcount),
8993                    core::mem::transmute_copy(&ultotal),
8994                )
8995                .into()
8996            }
8997        }
8998        unsafe extern "system" fn Restart<
8999            Identity: IExchangeMoveUserProgress_Impl,
9000            const OFFSET: isize,
9001        >(
9002            this: *mut core::ffi::c_void,
9003            ulflags: u32,
9004        ) -> windows_core::HRESULT {
9005            unsafe {
9006                let this: &Identity =
9007                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9008                IExchangeMoveUserProgress_Impl::Restart(this, core::mem::transmute_copy(&ulflags))
9009                    .into()
9010            }
9011        }
9012        Self {
9013            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9014            NextFolder: NextFolder::<Identity, OFFSET>,
9015            Progress: Progress::<Identity, OFFSET>,
9016            Restart: Restart::<Identity, OFFSET>,
9017        }
9018    }
9019    pub fn matches(iid: &windows_core::GUID) -> bool {
9020        iid == &<IExchangeMoveUserProgress as windows_core::Interface>::IID
9021    }
9022}
9023impl windows_core::RuntimeName for IExchangeMoveUserProgress {}
9024windows_core::imp::define_interface!(
9025    IExchangeNntpNewsfeed,
9026    IExchangeNntpNewsfeed_Vtbl,
9027    0x380f41c0_3cdc_11d0_9792_00c04fd6551d
9028);
9029windows_core::imp::interface_hierarchy!(IExchangeNntpNewsfeed, windows_core::IUnknown);
9030impl IExchangeNntpNewsfeed {
9031    pub unsafe fn Configure<P0>(
9032        &self,
9033        lpsznewsfeeddn: P0,
9034        cvalues: u32,
9035        lpimailproparray: *mut SPropValue,
9036    ) -> windows_core::Result<()>
9037    where
9038        P0: windows_core::Param<windows_core::PCSTR>,
9039    {
9040        unsafe {
9041            (windows_core::Interface::vtable(self).Configure)(
9042                windows_core::Interface::as_raw(self),
9043                lpsznewsfeeddn.param().abi(),
9044                cvalues,
9045                lpimailproparray as _,
9046            )
9047            .ok()
9048        }
9049    }
9050    pub unsafe fn CheckMsgIds<P0>(
9051        &self,
9052        lpszmsgids: P0,
9053        lpcfwanted: *mut u32,
9054        lppfwanted: *mut *mut u8,
9055    ) -> windows_core::Result<()>
9056    where
9057        P0: windows_core::Param<windows_core::PCSTR>,
9058    {
9059        unsafe {
9060            (windows_core::Interface::vtable(self).CheckMsgIds)(
9061                windows_core::Interface::as_raw(self),
9062                lpszmsgids.param().abi(),
9063                lpcfwanted as _,
9064                lppfwanted as _,
9065            )
9066            .ok()
9067        }
9068    }
9069    pub unsafe fn OpenArticleStream(
9070        &self,
9071    ) -> windows_core::Result<windows::Win32::System::Com::IStream> {
9072        unsafe {
9073            let mut result__ = core::mem::zeroed();
9074            (windows_core::Interface::vtable(self).OpenArticleStream)(
9075                windows_core::Interface::as_raw(self),
9076                &mut result__,
9077            )
9078            .and_then(|| windows_core::Type::from_abi(result__))
9079        }
9080    }
9081}
9082#[repr(C)]
9083pub struct IExchangeNntpNewsfeed_Vtbl {
9084    pub base__: windows_core::IUnknown_Vtbl,
9085    pub Configure: unsafe extern "system" fn(
9086        *mut core::ffi::c_void,
9087        windows_core::PCSTR,
9088        u32,
9089        *mut SPropValue,
9090    ) -> windows_core::HRESULT,
9091    pub CheckMsgIds: unsafe extern "system" fn(
9092        *mut core::ffi::c_void,
9093        windows_core::PCSTR,
9094        *mut u32,
9095        *mut *mut u8,
9096    ) -> windows_core::HRESULT,
9097    pub OpenArticleStream: unsafe extern "system" fn(
9098        *mut core::ffi::c_void,
9099        *mut *mut core::ffi::c_void,
9100    ) -> windows_core::HRESULT,
9101}
9102pub trait IExchangeNntpNewsfeed_Impl: windows_core::IUnknownImpl {
9103    fn Configure(
9104        &self,
9105        lpsznewsfeeddn: &windows_core::PCSTR,
9106        cvalues: u32,
9107        lpimailproparray: *mut SPropValue,
9108    ) -> windows_core::Result<()>;
9109    fn CheckMsgIds(
9110        &self,
9111        lpszmsgids: &windows_core::PCSTR,
9112        lpcfwanted: *mut u32,
9113        lppfwanted: *mut *mut u8,
9114    ) -> windows_core::Result<()>;
9115    fn OpenArticleStream(&self) -> windows_core::Result<windows::Win32::System::Com::IStream>;
9116}
9117impl IExchangeNntpNewsfeed_Vtbl {
9118    pub const fn new<Identity: IExchangeNntpNewsfeed_Impl, const OFFSET: isize>() -> Self {
9119        unsafe extern "system" fn Configure<
9120            Identity: IExchangeNntpNewsfeed_Impl,
9121            const OFFSET: isize,
9122        >(
9123            this: *mut core::ffi::c_void,
9124            lpsznewsfeeddn: windows_core::PCSTR,
9125            cvalues: u32,
9126            lpimailproparray: *mut SPropValue,
9127        ) -> windows_core::HRESULT {
9128            unsafe {
9129                let this: &Identity =
9130                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9131                IExchangeNntpNewsfeed_Impl::Configure(
9132                    this,
9133                    core::mem::transmute(&lpsznewsfeeddn),
9134                    core::mem::transmute_copy(&cvalues),
9135                    core::mem::transmute_copy(&lpimailproparray),
9136                )
9137                .into()
9138            }
9139        }
9140        unsafe extern "system" fn CheckMsgIds<
9141            Identity: IExchangeNntpNewsfeed_Impl,
9142            const OFFSET: isize,
9143        >(
9144            this: *mut core::ffi::c_void,
9145            lpszmsgids: windows_core::PCSTR,
9146            lpcfwanted: *mut u32,
9147            lppfwanted: *mut *mut u8,
9148        ) -> windows_core::HRESULT {
9149            unsafe {
9150                let this: &Identity =
9151                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9152                IExchangeNntpNewsfeed_Impl::CheckMsgIds(
9153                    this,
9154                    core::mem::transmute(&lpszmsgids),
9155                    core::mem::transmute_copy(&lpcfwanted),
9156                    core::mem::transmute_copy(&lppfwanted),
9157                )
9158                .into()
9159            }
9160        }
9161        unsafe extern "system" fn OpenArticleStream<
9162            Identity: IExchangeNntpNewsfeed_Impl,
9163            const OFFSET: isize,
9164        >(
9165            this: *mut core::ffi::c_void,
9166            lppstream: *mut *mut core::ffi::c_void,
9167        ) -> windows_core::HRESULT {
9168            unsafe {
9169                let this: &Identity =
9170                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9171                match IExchangeNntpNewsfeed_Impl::OpenArticleStream(this) {
9172                    Ok(ok__) => {
9173                        lppstream.write(core::mem::transmute(ok__));
9174                        windows_core::HRESULT(0)
9175                    }
9176                    Err(err) => err.into(),
9177                }
9178            }
9179        }
9180        Self {
9181            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9182            Configure: Configure::<Identity, OFFSET>,
9183            CheckMsgIds: CheckMsgIds::<Identity, OFFSET>,
9184            OpenArticleStream: OpenArticleStream::<Identity, OFFSET>,
9185        }
9186    }
9187    pub fn matches(iid: &windows_core::GUID) -> bool {
9188        iid == &<IExchangeNntpNewsfeed as windows_core::Interface>::IID
9189    }
9190}
9191impl windows_core::RuntimeName for IExchangeNntpNewsfeed {}
9192windows_core::imp::define_interface!(
9193    IExchangeRuleAction,
9194    IExchangeRuleAction_Vtbl,
9195    0x74bba840_c93a_11ce_9581_00aa005742f7
9196);
9197windows_core::imp::interface_hierarchy!(IExchangeRuleAction, windows_core::IUnknown);
9198impl IExchangeRuleAction {
9199    pub unsafe fn ActionCount(&self, lpcactions: *mut u32) -> windows_core::Result<()> {
9200        unsafe {
9201            (windows_core::Interface::vtable(self).ActionCount)(
9202                windows_core::Interface::as_raw(self),
9203                lpcactions as _,
9204            )
9205            .ok()
9206        }
9207    }
9208    pub unsafe fn GetAction(
9209        &self,
9210        ulactionnumber: u32,
9211        lpruleid: *mut i64,
9212        lppaction: *mut *mut ACTION,
9213    ) -> windows_core::Result<()> {
9214        unsafe {
9215            (windows_core::Interface::vtable(self).GetAction)(
9216                windows_core::Interface::as_raw(self),
9217                ulactionnumber,
9218                lpruleid as _,
9219                lppaction as _,
9220            )
9221            .ok()
9222        }
9223    }
9224}
9225#[repr(C)]
9226pub struct IExchangeRuleAction_Vtbl {
9227    pub base__: windows_core::IUnknown_Vtbl,
9228    pub ActionCount:
9229        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
9230    pub GetAction: unsafe extern "system" fn(
9231        *mut core::ffi::c_void,
9232        u32,
9233        *mut i64,
9234        *mut *mut ACTION,
9235    ) -> windows_core::HRESULT,
9236}
9237pub trait IExchangeRuleAction_Impl: windows_core::IUnknownImpl {
9238    fn ActionCount(&self, lpcactions: *mut u32) -> windows_core::Result<()>;
9239    fn GetAction(
9240        &self,
9241        ulactionnumber: u32,
9242        lpruleid: *mut i64,
9243        lppaction: *mut *mut ACTION,
9244    ) -> windows_core::Result<()>;
9245}
9246impl IExchangeRuleAction_Vtbl {
9247    pub const fn new<Identity: IExchangeRuleAction_Impl, const OFFSET: isize>() -> Self {
9248        unsafe extern "system" fn ActionCount<
9249            Identity: IExchangeRuleAction_Impl,
9250            const OFFSET: isize,
9251        >(
9252            this: *mut core::ffi::c_void,
9253            lpcactions: *mut u32,
9254        ) -> windows_core::HRESULT {
9255            unsafe {
9256                let this: &Identity =
9257                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9258                IExchangeRuleAction_Impl::ActionCount(this, core::mem::transmute_copy(&lpcactions))
9259                    .into()
9260            }
9261        }
9262        unsafe extern "system" fn GetAction<
9263            Identity: IExchangeRuleAction_Impl,
9264            const OFFSET: isize,
9265        >(
9266            this: *mut core::ffi::c_void,
9267            ulactionnumber: u32,
9268            lpruleid: *mut i64,
9269            lppaction: *mut *mut ACTION,
9270        ) -> windows_core::HRESULT {
9271            unsafe {
9272                let this: &Identity =
9273                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9274                IExchangeRuleAction_Impl::GetAction(
9275                    this,
9276                    core::mem::transmute_copy(&ulactionnumber),
9277                    core::mem::transmute_copy(&lpruleid),
9278                    core::mem::transmute_copy(&lppaction),
9279                )
9280                .into()
9281            }
9282        }
9283        Self {
9284            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9285            ActionCount: ActionCount::<Identity, OFFSET>,
9286            GetAction: GetAction::<Identity, OFFSET>,
9287        }
9288    }
9289    pub fn matches(iid: &windows_core::GUID) -> bool {
9290        iid == &<IExchangeRuleAction as windows_core::Interface>::IID
9291    }
9292}
9293impl windows_core::RuntimeName for IExchangeRuleAction {}
9294windows_core::imp::define_interface!(
9295    IFontCache,
9296    IFontCache_Vtbl,
9297    0xb0d17fc2_7bc4_11d1_bdfa_00c04fa31009
9298);
9299windows_core::imp::interface_hierarchy!(IFontCache, windows_core::IUnknown);
9300impl IFontCache {
9301    pub unsafe fn Init<P1>(
9302        &self,
9303        hkey: windows::Win32::System::Registry::HKEY,
9304        pszintlkey: P1,
9305        dwflags: u32,
9306    ) -> windows_core::Result<()>
9307    where
9308        P1: windows_core::Param<windows_core::PCSTR>,
9309    {
9310        unsafe {
9311            (windows_core::Interface::vtable(self).Init)(
9312                windows_core::Interface::as_raw(self),
9313                hkey,
9314                pszintlkey.param().abi(),
9315                dwflags,
9316            )
9317            .ok()
9318        }
9319    }
9320    pub unsafe fn GetFont(
9321        &self,
9322        fnttype: FNTSYSTYPE,
9323        hcharset: *mut HCHARSET__,
9324        phfont: *mut windows::Win32::Graphics::Gdi::HFONT,
9325    ) -> windows_core::Result<()> {
9326        unsafe {
9327            (windows_core::Interface::vtable(self).GetFont)(
9328                windows_core::Interface::as_raw(self),
9329                fnttype,
9330                hcharset as _,
9331                phfont as _,
9332            )
9333            .ok()
9334        }
9335    }
9336    pub unsafe fn OnOptionChange(&self) -> windows_core::Result<()> {
9337        unsafe {
9338            (windows_core::Interface::vtable(self).OnOptionChange)(windows_core::Interface::as_raw(
9339                self,
9340            ))
9341            .ok()
9342        }
9343    }
9344    pub unsafe fn GetJP_ISOControl(
9345        &self,
9346        pfusesio: *mut windows_core::BOOL,
9347    ) -> windows_core::Result<()> {
9348        unsafe {
9349            (windows_core::Interface::vtable(self).GetJP_ISOControl)(
9350                windows_core::Interface::as_raw(self),
9351                pfusesio as _,
9352            )
9353            .ok()
9354        }
9355    }
9356}
9357#[repr(C)]
9358pub struct IFontCache_Vtbl {
9359    pub base__: windows_core::IUnknown_Vtbl,
9360    pub Init: unsafe extern "system" fn(
9361        *mut core::ffi::c_void,
9362        windows::Win32::System::Registry::HKEY,
9363        windows_core::PCSTR,
9364        u32,
9365    ) -> windows_core::HRESULT,
9366    pub GetFont: unsafe extern "system" fn(
9367        *mut core::ffi::c_void,
9368        FNTSYSTYPE,
9369        *mut HCHARSET__,
9370        *mut windows::Win32::Graphics::Gdi::HFONT,
9371    ) -> windows_core::HRESULT,
9372    pub OnOptionChange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9373    pub GetJP_ISOControl: unsafe extern "system" fn(
9374        *mut core::ffi::c_void,
9375        *mut windows_core::BOOL,
9376    ) -> windows_core::HRESULT,
9377}
9378pub trait IFontCache_Impl: windows_core::IUnknownImpl {
9379    fn Init(
9380        &self,
9381        hkey: windows::Win32::System::Registry::HKEY,
9382        pszintlkey: &windows_core::PCSTR,
9383        dwflags: u32,
9384    ) -> windows_core::Result<()>;
9385    fn GetFont(
9386        &self,
9387        fnttype: FNTSYSTYPE,
9388        hcharset: *mut HCHARSET__,
9389        phfont: *mut windows::Win32::Graphics::Gdi::HFONT,
9390    ) -> windows_core::Result<()>;
9391    fn OnOptionChange(&self) -> windows_core::Result<()>;
9392    fn GetJP_ISOControl(&self, pfusesio: *mut windows_core::BOOL) -> windows_core::Result<()>;
9393}
9394impl IFontCache_Vtbl {
9395    pub const fn new<Identity: IFontCache_Impl, const OFFSET: isize>() -> Self {
9396        unsafe extern "system" fn Init<Identity: IFontCache_Impl, const OFFSET: isize>(
9397            this: *mut core::ffi::c_void,
9398            hkey: windows::Win32::System::Registry::HKEY,
9399            pszintlkey: windows_core::PCSTR,
9400            dwflags: u32,
9401        ) -> windows_core::HRESULT {
9402            unsafe {
9403                let this: &Identity =
9404                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9405                IFontCache_Impl::Init(
9406                    this,
9407                    core::mem::transmute_copy(&hkey),
9408                    core::mem::transmute(&pszintlkey),
9409                    core::mem::transmute_copy(&dwflags),
9410                )
9411                .into()
9412            }
9413        }
9414        unsafe extern "system" fn GetFont<Identity: IFontCache_Impl, const OFFSET: isize>(
9415            this: *mut core::ffi::c_void,
9416            fnttype: FNTSYSTYPE,
9417            hcharset: *mut HCHARSET__,
9418            phfont: *mut windows::Win32::Graphics::Gdi::HFONT,
9419        ) -> windows_core::HRESULT {
9420            unsafe {
9421                let this: &Identity =
9422                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9423                IFontCache_Impl::GetFont(
9424                    this,
9425                    core::mem::transmute_copy(&fnttype),
9426                    core::mem::transmute_copy(&hcharset),
9427                    core::mem::transmute_copy(&phfont),
9428                )
9429                .into()
9430            }
9431        }
9432        unsafe extern "system" fn OnOptionChange<Identity: IFontCache_Impl, const OFFSET: isize>(
9433            this: *mut core::ffi::c_void,
9434        ) -> windows_core::HRESULT {
9435            unsafe {
9436                let this: &Identity =
9437                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9438                IFontCache_Impl::OnOptionChange(this).into()
9439            }
9440        }
9441        unsafe extern "system" fn GetJP_ISOControl<
9442            Identity: IFontCache_Impl,
9443            const OFFSET: isize,
9444        >(
9445            this: *mut core::ffi::c_void,
9446            pfusesio: *mut windows_core::BOOL,
9447        ) -> windows_core::HRESULT {
9448            unsafe {
9449                let this: &Identity =
9450                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9451                IFontCache_Impl::GetJP_ISOControl(this, core::mem::transmute_copy(&pfusesio)).into()
9452            }
9453        }
9454        Self {
9455            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9456            Init: Init::<Identity, OFFSET>,
9457            GetFont: GetFont::<Identity, OFFSET>,
9458            OnOptionChange: OnOptionChange::<Identity, OFFSET>,
9459            GetJP_ISOControl: GetJP_ISOControl::<Identity, OFFSET>,
9460        }
9461    }
9462    pub fn matches(iid: &windows_core::GUID) -> bool {
9463        iid == &<IFontCache as windows_core::Interface>::IID
9464    }
9465}
9466impl windows_core::RuntimeName for IFontCache {}
9467windows_core::imp::define_interface!(
9468    IFontCacheNotify,
9469    IFontCacheNotify_Vtbl,
9470    0xb0d17fc5_7bc4_11d1_bdfa_00c04fa31009
9471);
9472windows_core::imp::interface_hierarchy!(IFontCacheNotify, windows_core::IUnknown);
9473impl IFontCacheNotify {
9474    pub unsafe fn OnPreFontChange(&self) -> windows_core::Result<()> {
9475        unsafe {
9476            (windows_core::Interface::vtable(self).OnPreFontChange)(
9477                windows_core::Interface::as_raw(self),
9478            )
9479            .ok()
9480        }
9481    }
9482    pub unsafe fn OnPostFontChange(&self) -> windows_core::Result<()> {
9483        unsafe {
9484            (windows_core::Interface::vtable(self).OnPostFontChange)(
9485                windows_core::Interface::as_raw(self),
9486            )
9487            .ok()
9488        }
9489    }
9490}
9491#[repr(C)]
9492pub struct IFontCacheNotify_Vtbl {
9493    pub base__: windows_core::IUnknown_Vtbl,
9494    pub OnPreFontChange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9495    pub OnPostFontChange:
9496        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9497}
9498pub trait IFontCacheNotify_Impl: windows_core::IUnknownImpl {
9499    fn OnPreFontChange(&self) -> windows_core::Result<()>;
9500    fn OnPostFontChange(&self) -> windows_core::Result<()>;
9501}
9502impl IFontCacheNotify_Vtbl {
9503    pub const fn new<Identity: IFontCacheNotify_Impl, const OFFSET: isize>() -> Self {
9504        unsafe extern "system" fn OnPreFontChange<
9505            Identity: IFontCacheNotify_Impl,
9506            const OFFSET: isize,
9507        >(
9508            this: *mut core::ffi::c_void,
9509        ) -> windows_core::HRESULT {
9510            unsafe {
9511                let this: &Identity =
9512                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9513                IFontCacheNotify_Impl::OnPreFontChange(this).into()
9514            }
9515        }
9516        unsafe extern "system" fn OnPostFontChange<
9517            Identity: IFontCacheNotify_Impl,
9518            const OFFSET: isize,
9519        >(
9520            this: *mut core::ffi::c_void,
9521        ) -> windows_core::HRESULT {
9522            unsafe {
9523                let this: &Identity =
9524                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9525                IFontCacheNotify_Impl::OnPostFontChange(this).into()
9526            }
9527        }
9528        Self {
9529            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9530            OnPreFontChange: OnPreFontChange::<Identity, OFFSET>,
9531            OnPostFontChange: OnPostFontChange::<Identity, OFFSET>,
9532        }
9533    }
9534    pub fn matches(iid: &windows_core::GUID) -> bool {
9535        iid == &<IFontCacheNotify as windows_core::Interface>::IID
9536    }
9537}
9538impl windows_core::RuntimeName for IFontCacheNotify {}
9539windows_core::imp::define_interface!(
9540    IHashTable,
9541    IHashTable_Vtbl,
9542    0x64577981_86d7_11d1_bdfc_00c04fa31009
9543);
9544windows_core::imp::interface_hierarchy!(IHashTable, windows_core::IUnknown);
9545impl IHashTable {
9546    pub unsafe fn Init(&self, dwsize: u32, fdupekeys: bool) -> windows_core::Result<()> {
9547        unsafe {
9548            (windows_core::Interface::vtable(self).Init)(
9549                windows_core::Interface::as_raw(self),
9550                dwsize,
9551                fdupekeys.into(),
9552            )
9553            .ok()
9554        }
9555    }
9556    pub unsafe fn Insert<P0>(
9557        &self,
9558        psz: P0,
9559        pv: *mut core::ffi::c_void,
9560        dwflags: u32,
9561    ) -> windows_core::Result<()>
9562    where
9563        P0: windows_core::Param<windows_core::PCSTR>,
9564    {
9565        unsafe {
9566            (windows_core::Interface::vtable(self).Insert)(
9567                windows_core::Interface::as_raw(self),
9568                psz.param().abi(),
9569                pv as _,
9570                dwflags,
9571            )
9572            .ok()
9573        }
9574    }
9575    pub unsafe fn Replace<P0>(
9576        &self,
9577        psz: P0,
9578        pv: *mut core::ffi::c_void,
9579    ) -> windows_core::Result<()>
9580    where
9581        P0: windows_core::Param<windows_core::PCSTR>,
9582    {
9583        unsafe {
9584            (windows_core::Interface::vtable(self).Replace)(
9585                windows_core::Interface::as_raw(self),
9586                psz.param().abi(),
9587                pv as _,
9588            )
9589            .ok()
9590        }
9591    }
9592    pub unsafe fn Find<P0>(
9593        &self,
9594        psz: P0,
9595        fremove: bool,
9596        ppv: *mut *mut core::ffi::c_void,
9597    ) -> windows_core::Result<()>
9598    where
9599        P0: windows_core::Param<windows_core::PCSTR>,
9600    {
9601        unsafe {
9602            (windows_core::Interface::vtable(self).Find)(
9603                windows_core::Interface::as_raw(self),
9604                psz.param().abi(),
9605                fremove.into(),
9606                ppv as _,
9607            )
9608            .ok()
9609        }
9610    }
9611    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
9612        unsafe {
9613            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
9614                .ok()
9615        }
9616    }
9617    pub unsafe fn Next(
9618        &self,
9619        cfetch: u32,
9620        prgpv: *mut *mut *mut core::ffi::c_void,
9621        pcfetched: *mut u32,
9622    ) -> windows_core::Result<()> {
9623        unsafe {
9624            (windows_core::Interface::vtable(self).Next)(
9625                windows_core::Interface::as_raw(self),
9626                cfetch,
9627                prgpv as _,
9628                pcfetched as _,
9629            )
9630            .ok()
9631        }
9632    }
9633}
9634#[repr(C)]
9635pub struct IHashTable_Vtbl {
9636    pub base__: windows_core::IUnknown_Vtbl,
9637    pub Init: unsafe extern "system" fn(
9638        *mut core::ffi::c_void,
9639        u32,
9640        windows_core::BOOL,
9641    ) -> windows_core::HRESULT,
9642    pub Insert: unsafe extern "system" fn(
9643        *mut core::ffi::c_void,
9644        windows_core::PCSTR,
9645        *mut core::ffi::c_void,
9646        u32,
9647    ) -> windows_core::HRESULT,
9648    pub Replace: unsafe extern "system" fn(
9649        *mut core::ffi::c_void,
9650        windows_core::PCSTR,
9651        *mut core::ffi::c_void,
9652    ) -> windows_core::HRESULT,
9653    pub Find: unsafe extern "system" fn(
9654        *mut core::ffi::c_void,
9655        windows_core::PCSTR,
9656        windows_core::BOOL,
9657        *mut *mut core::ffi::c_void,
9658    ) -> windows_core::HRESULT,
9659    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9660    pub Next: unsafe extern "system" fn(
9661        *mut core::ffi::c_void,
9662        u32,
9663        *mut *mut *mut core::ffi::c_void,
9664        *mut u32,
9665    ) -> windows_core::HRESULT,
9666}
9667pub trait IHashTable_Impl: windows_core::IUnknownImpl {
9668    fn Init(&self, dwsize: u32, fdupekeys: windows_core::BOOL) -> windows_core::Result<()>;
9669    fn Insert(
9670        &self,
9671        psz: &windows_core::PCSTR,
9672        pv: *mut core::ffi::c_void,
9673        dwflags: u32,
9674    ) -> windows_core::Result<()>;
9675    fn Replace(
9676        &self,
9677        psz: &windows_core::PCSTR,
9678        pv: *mut core::ffi::c_void,
9679    ) -> windows_core::Result<()>;
9680    fn Find(
9681        &self,
9682        psz: &windows_core::PCSTR,
9683        fremove: windows_core::BOOL,
9684        ppv: *mut *mut core::ffi::c_void,
9685    ) -> windows_core::Result<()>;
9686    fn Reset(&self) -> windows_core::Result<()>;
9687    fn Next(
9688        &self,
9689        cfetch: u32,
9690        prgpv: *mut *mut *mut core::ffi::c_void,
9691        pcfetched: *mut u32,
9692    ) -> windows_core::Result<()>;
9693}
9694impl IHashTable_Vtbl {
9695    pub const fn new<Identity: IHashTable_Impl, const OFFSET: isize>() -> Self {
9696        unsafe extern "system" fn Init<Identity: IHashTable_Impl, const OFFSET: isize>(
9697            this: *mut core::ffi::c_void,
9698            dwsize: u32,
9699            fdupekeys: windows_core::BOOL,
9700        ) -> windows_core::HRESULT {
9701            unsafe {
9702                let this: &Identity =
9703                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9704                IHashTable_Impl::Init(
9705                    this,
9706                    core::mem::transmute_copy(&dwsize),
9707                    core::mem::transmute_copy(&fdupekeys),
9708                )
9709                .into()
9710            }
9711        }
9712        unsafe extern "system" fn Insert<Identity: IHashTable_Impl, const OFFSET: isize>(
9713            this: *mut core::ffi::c_void,
9714            psz: windows_core::PCSTR,
9715            pv: *mut core::ffi::c_void,
9716            dwflags: u32,
9717        ) -> windows_core::HRESULT {
9718            unsafe {
9719                let this: &Identity =
9720                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9721                IHashTable_Impl::Insert(
9722                    this,
9723                    core::mem::transmute(&psz),
9724                    core::mem::transmute_copy(&pv),
9725                    core::mem::transmute_copy(&dwflags),
9726                )
9727                .into()
9728            }
9729        }
9730        unsafe extern "system" fn Replace<Identity: IHashTable_Impl, const OFFSET: isize>(
9731            this: *mut core::ffi::c_void,
9732            psz: windows_core::PCSTR,
9733            pv: *mut core::ffi::c_void,
9734        ) -> windows_core::HRESULT {
9735            unsafe {
9736                let this: &Identity =
9737                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9738                IHashTable_Impl::Replace(
9739                    this,
9740                    core::mem::transmute(&psz),
9741                    core::mem::transmute_copy(&pv),
9742                )
9743                .into()
9744            }
9745        }
9746        unsafe extern "system" fn Find<Identity: IHashTable_Impl, const OFFSET: isize>(
9747            this: *mut core::ffi::c_void,
9748            psz: windows_core::PCSTR,
9749            fremove: windows_core::BOOL,
9750            ppv: *mut *mut core::ffi::c_void,
9751        ) -> windows_core::HRESULT {
9752            unsafe {
9753                let this: &Identity =
9754                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9755                IHashTable_Impl::Find(
9756                    this,
9757                    core::mem::transmute(&psz),
9758                    core::mem::transmute_copy(&fremove),
9759                    core::mem::transmute_copy(&ppv),
9760                )
9761                .into()
9762            }
9763        }
9764        unsafe extern "system" fn Reset<Identity: IHashTable_Impl, const OFFSET: isize>(
9765            this: *mut core::ffi::c_void,
9766        ) -> windows_core::HRESULT {
9767            unsafe {
9768                let this: &Identity =
9769                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9770                IHashTable_Impl::Reset(this).into()
9771            }
9772        }
9773        unsafe extern "system" fn Next<Identity: IHashTable_Impl, const OFFSET: isize>(
9774            this: *mut core::ffi::c_void,
9775            cfetch: u32,
9776            prgpv: *mut *mut *mut core::ffi::c_void,
9777            pcfetched: *mut u32,
9778        ) -> windows_core::HRESULT {
9779            unsafe {
9780                let this: &Identity =
9781                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9782                IHashTable_Impl::Next(
9783                    this,
9784                    core::mem::transmute_copy(&cfetch),
9785                    core::mem::transmute_copy(&prgpv),
9786                    core::mem::transmute_copy(&pcfetched),
9787                )
9788                .into()
9789            }
9790        }
9791        Self {
9792            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9793            Init: Init::<Identity, OFFSET>,
9794            Insert: Insert::<Identity, OFFSET>,
9795            Replace: Replace::<Identity, OFFSET>,
9796            Find: Find::<Identity, OFFSET>,
9797            Reset: Reset::<Identity, OFFSET>,
9798            Next: Next::<Identity, OFFSET>,
9799        }
9800    }
9801    pub fn matches(iid: &windows_core::GUID) -> bool {
9802        iid == &<IHashTable as windows_core::Interface>::IID
9803    }
9804}
9805impl windows_core::RuntimeName for IHashTable {}
9806pub const ILM_BODYCSET: INETLANGMASK = INETLANGMASK(4i32);
9807pub const ILM_FAMILY: INETLANGMASK = INETLANGMASK(1i32);
9808pub const ILM_FIXEDFONT: INETLANGMASK = INETLANGMASK(32i32);
9809pub const ILM_HEADERCSET: INETLANGMASK = INETLANGMASK(8i32);
9810pub const ILM_NAME: INETLANGMASK = INETLANGMASK(2i32);
9811pub const ILM_VARIABLEFONT: INETLANGMASK = INETLANGMASK(64i32);
9812pub const ILM_WEBCSET: INETLANGMASK = INETLANGMASK(16i32);
9813windows_core::imp::define_interface!(
9814    IMAPIAdviseSink,
9815    IMAPIAdviseSink_Vtbl,
9816    0x00020302_0000_0000_c000_000000000046
9817);
9818windows_core::imp::interface_hierarchy!(IMAPIAdviseSink, windows_core::IUnknown);
9819impl IMAPIAdviseSink {
9820    pub unsafe fn OnNotify(&self, cnotif: u32, lpnotifications: *mut NOTIFICATION) -> u32 {
9821        unsafe {
9822            (windows_core::Interface::vtable(self).OnNotify)(
9823                windows_core::Interface::as_raw(self),
9824                cnotif,
9825                lpnotifications as _,
9826            )
9827        }
9828    }
9829}
9830#[repr(C)]
9831pub struct IMAPIAdviseSink_Vtbl {
9832    pub base__: windows_core::IUnknown_Vtbl,
9833    pub OnNotify: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut NOTIFICATION) -> u32,
9834}
9835pub trait IMAPIAdviseSink_Impl: windows_core::IUnknownImpl {
9836    fn OnNotify(&self, cnotif: u32, lpnotifications: *mut NOTIFICATION) -> u32;
9837}
9838impl IMAPIAdviseSink_Vtbl {
9839    pub const fn new<Identity: IMAPIAdviseSink_Impl, const OFFSET: isize>() -> Self {
9840        unsafe extern "system" fn OnNotify<Identity: IMAPIAdviseSink_Impl, const OFFSET: isize>(
9841            this: *mut core::ffi::c_void,
9842            cnotif: u32,
9843            lpnotifications: *mut NOTIFICATION,
9844        ) -> u32 {
9845            unsafe {
9846                let this: &Identity =
9847                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9848                IMAPIAdviseSink_Impl::OnNotify(
9849                    this,
9850                    core::mem::transmute_copy(&cnotif),
9851                    core::mem::transmute_copy(&lpnotifications),
9852                )
9853            }
9854        }
9855        Self {
9856            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9857            OnNotify: OnNotify::<Identity, OFFSET>,
9858        }
9859    }
9860    pub fn matches(iid: &windows_core::GUID) -> bool {
9861        iid == &<IMAPIAdviseSink as windows_core::Interface>::IID
9862    }
9863}
9864impl windows_core::RuntimeName for IMAPIAdviseSink {}
9865pub const IMAPIAdviseSink_OnNotify: METHODS = METHODS(137i32);
9866windows_core::imp::define_interface!(
9867    IMAPIClientShutdown,
9868    IMAPIClientShutdown_Vtbl,
9869    0x00020397_0000_0000_c000_000000000046
9870);
9871windows_core::imp::interface_hierarchy!(IMAPIClientShutdown, windows_core::IUnknown);
9872impl IMAPIClientShutdown {
9873    pub unsafe fn QueryFastShutdown(&self) -> windows_core::Result<()> {
9874        unsafe {
9875            (windows_core::Interface::vtable(self).QueryFastShutdown)(
9876                windows_core::Interface::as_raw(self),
9877            )
9878            .ok()
9879        }
9880    }
9881    pub unsafe fn NotifyProcessShutdown(&self) -> windows_core::Result<()> {
9882        unsafe {
9883            (windows_core::Interface::vtable(self).NotifyProcessShutdown)(
9884                windows_core::Interface::as_raw(self),
9885            )
9886            .ok()
9887        }
9888    }
9889    pub unsafe fn DoFastShutdown(&self) -> windows_core::Result<()> {
9890        unsafe {
9891            (windows_core::Interface::vtable(self).DoFastShutdown)(windows_core::Interface::as_raw(
9892                self,
9893            ))
9894            .ok()
9895        }
9896    }
9897}
9898#[repr(C)]
9899pub struct IMAPIClientShutdown_Vtbl {
9900    pub base__: windows_core::IUnknown_Vtbl,
9901    pub QueryFastShutdown:
9902        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9903    pub NotifyProcessShutdown:
9904        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9905    pub DoFastShutdown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9906}
9907pub trait IMAPIClientShutdown_Impl: windows_core::IUnknownImpl {
9908    fn QueryFastShutdown(&self) -> windows_core::Result<()>;
9909    fn NotifyProcessShutdown(&self) -> windows_core::Result<()>;
9910    fn DoFastShutdown(&self) -> windows_core::Result<()>;
9911}
9912impl IMAPIClientShutdown_Vtbl {
9913    pub const fn new<Identity: IMAPIClientShutdown_Impl, const OFFSET: isize>() -> Self {
9914        unsafe extern "system" fn QueryFastShutdown<
9915            Identity: IMAPIClientShutdown_Impl,
9916            const OFFSET: isize,
9917        >(
9918            this: *mut core::ffi::c_void,
9919        ) -> windows_core::HRESULT {
9920            unsafe {
9921                let this: &Identity =
9922                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9923                IMAPIClientShutdown_Impl::QueryFastShutdown(this).into()
9924            }
9925        }
9926        unsafe extern "system" fn NotifyProcessShutdown<
9927            Identity: IMAPIClientShutdown_Impl,
9928            const OFFSET: isize,
9929        >(
9930            this: *mut core::ffi::c_void,
9931        ) -> windows_core::HRESULT {
9932            unsafe {
9933                let this: &Identity =
9934                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9935                IMAPIClientShutdown_Impl::NotifyProcessShutdown(this).into()
9936            }
9937        }
9938        unsafe extern "system" fn DoFastShutdown<
9939            Identity: IMAPIClientShutdown_Impl,
9940            const OFFSET: isize,
9941        >(
9942            this: *mut core::ffi::c_void,
9943        ) -> windows_core::HRESULT {
9944            unsafe {
9945                let this: &Identity =
9946                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9947                IMAPIClientShutdown_Impl::DoFastShutdown(this).into()
9948            }
9949        }
9950        Self {
9951            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9952            QueryFastShutdown: QueryFastShutdown::<Identity, OFFSET>,
9953            NotifyProcessShutdown: NotifyProcessShutdown::<Identity, OFFSET>,
9954            DoFastShutdown: DoFastShutdown::<Identity, OFFSET>,
9955        }
9956    }
9957    pub fn matches(iid: &windows_core::GUID) -> bool {
9958        iid == &<IMAPIClientShutdown as windows_core::Interface>::IID
9959    }
9960}
9961impl windows_core::RuntimeName for IMAPIClientShutdown {}
9962windows_core::imp::define_interface!(
9963    IMAPIContainer,
9964    IMAPIContainer_Vtbl,
9965    0x0002030b_0000_0000_c000_000000000046
9966);
9967impl core::ops::Deref for IMAPIContainer {
9968    type Target = IMAPIProp;
9969    fn deref(&self) -> &Self::Target {
9970        unsafe { core::mem::transmute(self) }
9971    }
9972}
9973windows_core::imp::interface_hierarchy!(IMAPIContainer, windows_core::IUnknown, IMAPIProp);
9974impl IMAPIContainer {
9975    pub unsafe fn GetContentsTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
9976        unsafe {
9977            let mut result__ = core::mem::zeroed();
9978            (windows_core::Interface::vtable(self).GetContentsTable)(
9979                windows_core::Interface::as_raw(self),
9980                ulflags,
9981                &mut result__,
9982            )
9983            .and_then(|| windows_core::Type::from_abi(result__))
9984        }
9985    }
9986    pub unsafe fn GetHierarchyTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
9987        unsafe {
9988            let mut result__ = core::mem::zeroed();
9989            (windows_core::Interface::vtable(self).GetHierarchyTable)(
9990                windows_core::Interface::as_raw(self),
9991                ulflags,
9992                &mut result__,
9993            )
9994            .and_then(|| windows_core::Type::from_abi(result__))
9995        }
9996    }
9997    pub unsafe fn OpenEntry(
9998        &self,
9999        cbentryid: u32,
10000        lpentryid: *mut ENTRYID,
10001        lpinterface: *mut windows_core::GUID,
10002        ulflags: u32,
10003        lpulobjtype: *mut u32,
10004        lppunk: *mut Option<windows_core::IUnknown>,
10005    ) -> windows_core::Result<()> {
10006        unsafe {
10007            (windows_core::Interface::vtable(self).OpenEntry)(
10008                windows_core::Interface::as_raw(self),
10009                cbentryid,
10010                lpentryid as _,
10011                lpinterface as _,
10012                ulflags,
10013                lpulobjtype as _,
10014                core::mem::transmute(lppunk),
10015            )
10016            .ok()
10017        }
10018    }
10019    pub unsafe fn SetSearchCriteria(
10020        &self,
10021        lprestriction: *mut SRestriction,
10022        lpcontainerlist: *mut SBinaryArray,
10023        ulsearchflags: u32,
10024    ) -> windows_core::Result<()> {
10025        unsafe {
10026            (windows_core::Interface::vtable(self).SetSearchCriteria)(
10027                windows_core::Interface::as_raw(self),
10028                lprestriction as _,
10029                lpcontainerlist as _,
10030                ulsearchflags,
10031            )
10032            .ok()
10033        }
10034    }
10035    pub unsafe fn GetSearchCriteria(
10036        &self,
10037        ulflags: u32,
10038        lpprestriction: *mut *mut SRestriction,
10039        lppcontainerlist: *mut *mut SBinaryArray,
10040        lpulsearchstate: *mut u32,
10041    ) -> windows_core::Result<()> {
10042        unsafe {
10043            (windows_core::Interface::vtable(self).GetSearchCriteria)(
10044                windows_core::Interface::as_raw(self),
10045                ulflags,
10046                lpprestriction as _,
10047                lppcontainerlist as _,
10048                lpulsearchstate as _,
10049            )
10050            .ok()
10051        }
10052    }
10053}
10054#[repr(C)]
10055pub struct IMAPIContainer_Vtbl {
10056    pub base__: IMAPIProp_Vtbl,
10057    pub GetContentsTable: unsafe extern "system" fn(
10058        *mut core::ffi::c_void,
10059        u32,
10060        *mut *mut core::ffi::c_void,
10061    ) -> windows_core::HRESULT,
10062    pub GetHierarchyTable: unsafe extern "system" fn(
10063        *mut core::ffi::c_void,
10064        u32,
10065        *mut *mut core::ffi::c_void,
10066    ) -> windows_core::HRESULT,
10067    pub OpenEntry: unsafe extern "system" fn(
10068        *mut core::ffi::c_void,
10069        u32,
10070        *mut ENTRYID,
10071        *mut windows_core::GUID,
10072        u32,
10073        *mut u32,
10074        *mut *mut core::ffi::c_void,
10075    ) -> windows_core::HRESULT,
10076    pub SetSearchCriteria: unsafe extern "system" fn(
10077        *mut core::ffi::c_void,
10078        *mut SRestriction,
10079        *mut SBinaryArray,
10080        u32,
10081    ) -> windows_core::HRESULT,
10082    pub GetSearchCriteria: unsafe extern "system" fn(
10083        *mut core::ffi::c_void,
10084        u32,
10085        *mut *mut SRestriction,
10086        *mut *mut SBinaryArray,
10087        *mut u32,
10088    ) -> windows_core::HRESULT,
10089}
10090pub trait IMAPIContainer_Impl: IMAPIProp_Impl {
10091    fn GetContentsTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
10092    fn GetHierarchyTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
10093    fn OpenEntry(
10094        &self,
10095        cbentryid: u32,
10096        lpentryid: *mut ENTRYID,
10097        lpinterface: *mut windows_core::GUID,
10098        ulflags: u32,
10099        lpulobjtype: *mut u32,
10100        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
10101    ) -> windows_core::Result<()>;
10102    fn SetSearchCriteria(
10103        &self,
10104        lprestriction: *mut SRestriction,
10105        lpcontainerlist: *mut SBinaryArray,
10106        ulsearchflags: u32,
10107    ) -> windows_core::Result<()>;
10108    fn GetSearchCriteria(
10109        &self,
10110        ulflags: u32,
10111        lpprestriction: *mut *mut SRestriction,
10112        lppcontainerlist: *mut *mut SBinaryArray,
10113        lpulsearchstate: *mut u32,
10114    ) -> windows_core::Result<()>;
10115}
10116impl IMAPIContainer_Vtbl {
10117    pub const fn new<Identity: IMAPIContainer_Impl, const OFFSET: isize>() -> Self {
10118        unsafe extern "system" fn GetContentsTable<
10119            Identity: IMAPIContainer_Impl,
10120            const OFFSET: isize,
10121        >(
10122            this: *mut core::ffi::c_void,
10123            ulflags: u32,
10124            lpptable: *mut *mut core::ffi::c_void,
10125        ) -> windows_core::HRESULT {
10126            unsafe {
10127                let this: &Identity =
10128                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10129                match IMAPIContainer_Impl::GetContentsTable(
10130                    this,
10131                    core::mem::transmute_copy(&ulflags),
10132                ) {
10133                    Ok(ok__) => {
10134                        lpptable.write(core::mem::transmute(ok__));
10135                        windows_core::HRESULT(0)
10136                    }
10137                    Err(err) => err.into(),
10138                }
10139            }
10140        }
10141        unsafe extern "system" fn GetHierarchyTable<
10142            Identity: IMAPIContainer_Impl,
10143            const OFFSET: isize,
10144        >(
10145            this: *mut core::ffi::c_void,
10146            ulflags: u32,
10147            lpptable: *mut *mut core::ffi::c_void,
10148        ) -> windows_core::HRESULT {
10149            unsafe {
10150                let this: &Identity =
10151                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10152                match IMAPIContainer_Impl::GetHierarchyTable(
10153                    this,
10154                    core::mem::transmute_copy(&ulflags),
10155                ) {
10156                    Ok(ok__) => {
10157                        lpptable.write(core::mem::transmute(ok__));
10158                        windows_core::HRESULT(0)
10159                    }
10160                    Err(err) => err.into(),
10161                }
10162            }
10163        }
10164        unsafe extern "system" fn OpenEntry<Identity: IMAPIContainer_Impl, const OFFSET: isize>(
10165            this: *mut core::ffi::c_void,
10166            cbentryid: u32,
10167            lpentryid: *mut ENTRYID,
10168            lpinterface: *mut windows_core::GUID,
10169            ulflags: u32,
10170            lpulobjtype: *mut u32,
10171            lppunk: *mut *mut core::ffi::c_void,
10172        ) -> windows_core::HRESULT {
10173            unsafe {
10174                let this: &Identity =
10175                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10176                IMAPIContainer_Impl::OpenEntry(
10177                    this,
10178                    core::mem::transmute_copy(&cbentryid),
10179                    core::mem::transmute_copy(&lpentryid),
10180                    core::mem::transmute_copy(&lpinterface),
10181                    core::mem::transmute_copy(&ulflags),
10182                    core::mem::transmute_copy(&lpulobjtype),
10183                    core::mem::transmute_copy(&lppunk),
10184                )
10185                .into()
10186            }
10187        }
10188        unsafe extern "system" fn SetSearchCriteria<
10189            Identity: IMAPIContainer_Impl,
10190            const OFFSET: isize,
10191        >(
10192            this: *mut core::ffi::c_void,
10193            lprestriction: *mut SRestriction,
10194            lpcontainerlist: *mut SBinaryArray,
10195            ulsearchflags: u32,
10196        ) -> windows_core::HRESULT {
10197            unsafe {
10198                let this: &Identity =
10199                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10200                IMAPIContainer_Impl::SetSearchCriteria(
10201                    this,
10202                    core::mem::transmute_copy(&lprestriction),
10203                    core::mem::transmute_copy(&lpcontainerlist),
10204                    core::mem::transmute_copy(&ulsearchflags),
10205                )
10206                .into()
10207            }
10208        }
10209        unsafe extern "system" fn GetSearchCriteria<
10210            Identity: IMAPIContainer_Impl,
10211            const OFFSET: isize,
10212        >(
10213            this: *mut core::ffi::c_void,
10214            ulflags: u32,
10215            lpprestriction: *mut *mut SRestriction,
10216            lppcontainerlist: *mut *mut SBinaryArray,
10217            lpulsearchstate: *mut u32,
10218        ) -> windows_core::HRESULT {
10219            unsafe {
10220                let this: &Identity =
10221                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10222                IMAPIContainer_Impl::GetSearchCriteria(
10223                    this,
10224                    core::mem::transmute_copy(&ulflags),
10225                    core::mem::transmute_copy(&lpprestriction),
10226                    core::mem::transmute_copy(&lppcontainerlist),
10227                    core::mem::transmute_copy(&lpulsearchstate),
10228                )
10229                .into()
10230            }
10231        }
10232        Self {
10233            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
10234            GetContentsTable: GetContentsTable::<Identity, OFFSET>,
10235            GetHierarchyTable: GetHierarchyTable::<Identity, OFFSET>,
10236            OpenEntry: OpenEntry::<Identity, OFFSET>,
10237            SetSearchCriteria: SetSearchCriteria::<Identity, OFFSET>,
10238            GetSearchCriteria: GetSearchCriteria::<Identity, OFFSET>,
10239        }
10240    }
10241    pub fn matches(iid: &windows_core::GUID) -> bool {
10242        iid == &<IMAPIContainer as windows_core::Interface>::IID
10243            || iid == &<IMAPIProp as windows_core::Interface>::IID
10244    }
10245}
10246impl windows_core::RuntimeName for IMAPIContainer {}
10247pub const IMAPIContainer_GetContentsTable: METHODS = METHODS(37i32);
10248pub const IMAPIContainer_GetHierarchyTable: METHODS = METHODS(38i32);
10249pub const IMAPIContainer_GetSearchCriteria: METHODS = METHODS(41i32);
10250pub const IMAPIContainer_OpenEntry: METHODS = METHODS(39i32);
10251pub const IMAPIContainer_SetSearchCriteria: METHODS = METHODS(40i32);
10252windows_core::imp::define_interface!(
10253    IMAPIControl,
10254    IMAPIControl_Vtbl,
10255    0x0002031b_0000_0000_c000_000000000046
10256);
10257windows_core::imp::interface_hierarchy!(IMAPIControl, windows_core::IUnknown);
10258impl IMAPIControl {
10259    pub unsafe fn GetLastError(
10260        &self,
10261        hresult: windows_core::HRESULT,
10262        ulflags: u32,
10263        lppmapierror: *mut *mut MAPIERROR,
10264    ) -> windows_core::Result<()> {
10265        unsafe {
10266            (windows_core::Interface::vtable(self).GetLastError)(
10267                windows_core::Interface::as_raw(self),
10268                hresult,
10269                ulflags,
10270                lppmapierror as _,
10271            )
10272            .ok()
10273        }
10274    }
10275    pub unsafe fn Activate(&self, ulflags: u32, uluiparam: usize) -> windows_core::Result<()> {
10276        unsafe {
10277            (windows_core::Interface::vtable(self).Activate)(
10278                windows_core::Interface::as_raw(self),
10279                ulflags,
10280                uluiparam,
10281            )
10282            .ok()
10283        }
10284    }
10285    pub unsafe fn GetState(&self, ulflags: u32, lpulstate: *mut u32) -> windows_core::Result<()> {
10286        unsafe {
10287            (windows_core::Interface::vtable(self).GetState)(
10288                windows_core::Interface::as_raw(self),
10289                ulflags,
10290                lpulstate as _,
10291            )
10292            .ok()
10293        }
10294    }
10295}
10296#[repr(C)]
10297pub struct IMAPIControl_Vtbl {
10298    pub base__: windows_core::IUnknown_Vtbl,
10299    pub GetLastError: unsafe extern "system" fn(
10300        *mut core::ffi::c_void,
10301        windows_core::HRESULT,
10302        u32,
10303        *mut *mut MAPIERROR,
10304    ) -> windows_core::HRESULT,
10305    pub Activate:
10306        unsafe extern "system" fn(*mut core::ffi::c_void, u32, usize) -> windows_core::HRESULT,
10307    pub GetState:
10308        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
10309}
10310pub trait IMAPIControl_Impl: windows_core::IUnknownImpl {
10311    fn GetLastError(
10312        &self,
10313        hresult: windows_core::HRESULT,
10314        ulflags: u32,
10315        lppmapierror: *mut *mut MAPIERROR,
10316    ) -> windows_core::Result<()>;
10317    fn Activate(&self, ulflags: u32, uluiparam: usize) -> windows_core::Result<()>;
10318    fn GetState(&self, ulflags: u32, lpulstate: *mut u32) -> windows_core::Result<()>;
10319}
10320impl IMAPIControl_Vtbl {
10321    pub const fn new<Identity: IMAPIControl_Impl, const OFFSET: isize>() -> Self {
10322        unsafe extern "system" fn GetLastError<Identity: IMAPIControl_Impl, const OFFSET: isize>(
10323            this: *mut core::ffi::c_void,
10324            hresult: windows_core::HRESULT,
10325            ulflags: u32,
10326            lppmapierror: *mut *mut MAPIERROR,
10327        ) -> windows_core::HRESULT {
10328            unsafe {
10329                let this: &Identity =
10330                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10331                IMAPIControl_Impl::GetLastError(
10332                    this,
10333                    core::mem::transmute_copy(&hresult),
10334                    core::mem::transmute_copy(&ulflags),
10335                    core::mem::transmute_copy(&lppmapierror),
10336                )
10337                .into()
10338            }
10339        }
10340        unsafe extern "system" fn Activate<Identity: IMAPIControl_Impl, const OFFSET: isize>(
10341            this: *mut core::ffi::c_void,
10342            ulflags: u32,
10343            uluiparam: usize,
10344        ) -> windows_core::HRESULT {
10345            unsafe {
10346                let this: &Identity =
10347                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10348                IMAPIControl_Impl::Activate(
10349                    this,
10350                    core::mem::transmute_copy(&ulflags),
10351                    core::mem::transmute_copy(&uluiparam),
10352                )
10353                .into()
10354            }
10355        }
10356        unsafe extern "system" fn GetState<Identity: IMAPIControl_Impl, const OFFSET: isize>(
10357            this: *mut core::ffi::c_void,
10358            ulflags: u32,
10359            lpulstate: *mut u32,
10360        ) -> windows_core::HRESULT {
10361            unsafe {
10362                let this: &Identity =
10363                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10364                IMAPIControl_Impl::GetState(
10365                    this,
10366                    core::mem::transmute_copy(&ulflags),
10367                    core::mem::transmute_copy(&lpulstate),
10368                )
10369                .into()
10370            }
10371        }
10372        Self {
10373            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
10374            GetLastError: GetLastError::<Identity, OFFSET>,
10375            Activate: Activate::<Identity, OFFSET>,
10376            GetState: GetState::<Identity, OFFSET>,
10377        }
10378    }
10379    pub fn matches(iid: &windows_core::GUID) -> bool {
10380        iid == &<IMAPIControl as windows_core::Interface>::IID
10381    }
10382}
10383impl windows_core::RuntimeName for IMAPIControl {}
10384pub const IMAPIControl_Activate: METHODS = METHODS(120i32);
10385pub const IMAPIControl_GetLastError: METHODS = METHODS(119i32);
10386pub const IMAPIControl_GetState: METHODS = METHODS(121i32);
10387windows_core::imp::define_interface!(
10388    IMAPIFolder,
10389    IMAPIFolder_Vtbl,
10390    0x0002030c_0000_0000_c000_000000000046
10391);
10392impl core::ops::Deref for IMAPIFolder {
10393    type Target = IMAPIContainer;
10394    fn deref(&self) -> &Self::Target {
10395        unsafe { core::mem::transmute(self) }
10396    }
10397}
10398windows_core::imp::interface_hierarchy!(
10399    IMAPIFolder,
10400    windows_core::IUnknown,
10401    IMAPIProp,
10402    IMAPIContainer
10403);
10404impl IMAPIFolder {
10405    pub unsafe fn CreateMessage(
10406        &self,
10407        lpinterface: *mut windows_core::GUID,
10408        ulflags: u32,
10409        lppmessage: *mut Option<IMessage>,
10410    ) -> windows_core::Result<()> {
10411        unsafe {
10412            (windows_core::Interface::vtable(self).CreateMessage)(
10413                windows_core::Interface::as_raw(self),
10414                lpinterface as _,
10415                ulflags,
10416                core::mem::transmute(lppmessage),
10417            )
10418            .ok()
10419        }
10420    }
10421    pub unsafe fn CopyMessages<P4>(
10422        &self,
10423        lpmsglist: *mut SBinaryArray,
10424        lpinterface: *mut windows_core::GUID,
10425        lpdestfolder: *mut core::ffi::c_void,
10426        uluiparam: usize,
10427        lpprogress: P4,
10428        ulflags: u32,
10429    ) -> windows_core::Result<()>
10430    where
10431        P4: windows_core::Param<IMAPIProgress>,
10432    {
10433        unsafe {
10434            (windows_core::Interface::vtable(self).CopyMessages)(
10435                windows_core::Interface::as_raw(self),
10436                lpmsglist as _,
10437                lpinterface as _,
10438                lpdestfolder as _,
10439                uluiparam,
10440                lpprogress.param().abi(),
10441                ulflags,
10442            )
10443            .ok()
10444        }
10445    }
10446    pub unsafe fn DeleteMessages<P2>(
10447        &self,
10448        lpmsglist: *mut SBinaryArray,
10449        uluiparam: usize,
10450        lpprogress: P2,
10451        ulflags: u32,
10452    ) -> windows_core::Result<()>
10453    where
10454        P2: windows_core::Param<IMAPIProgress>,
10455    {
10456        unsafe {
10457            (windows_core::Interface::vtable(self).DeleteMessages)(
10458                windows_core::Interface::as_raw(self),
10459                lpmsglist as _,
10460                uluiparam,
10461                lpprogress.param().abi(),
10462                ulflags,
10463            )
10464            .ok()
10465        }
10466    }
10467    pub unsafe fn CreateFolder(
10468        &self,
10469        ulfoldertype: u32,
10470        lpszfoldername: *mut i8,
10471        lpszfoldercomment: *mut i8,
10472        lpinterface: *mut windows_core::GUID,
10473        ulflags: u32,
10474        lppfolder: *mut Option<IMAPIFolder>,
10475    ) -> windows_core::Result<()> {
10476        unsafe {
10477            (windows_core::Interface::vtable(self).CreateFolder)(
10478                windows_core::Interface::as_raw(self),
10479                ulfoldertype,
10480                lpszfoldername as _,
10481                lpszfoldercomment as _,
10482                lpinterface as _,
10483                ulflags,
10484                core::mem::transmute(lppfolder),
10485            )
10486            .ok()
10487        }
10488    }
10489    pub unsafe fn CopyFolder<P6>(
10490        &self,
10491        cbentryid: u32,
10492        lpentryid: *mut ENTRYID,
10493        lpinterface: *mut windows_core::GUID,
10494        lpdestfolder: *mut core::ffi::c_void,
10495        lpsznewfoldername: *mut i8,
10496        uluiparam: usize,
10497        lpprogress: P6,
10498        ulflags: u32,
10499    ) -> windows_core::Result<()>
10500    where
10501        P6: windows_core::Param<IMAPIProgress>,
10502    {
10503        unsafe {
10504            (windows_core::Interface::vtable(self).CopyFolder)(
10505                windows_core::Interface::as_raw(self),
10506                cbentryid,
10507                lpentryid as _,
10508                lpinterface as _,
10509                lpdestfolder as _,
10510                lpsznewfoldername as _,
10511                uluiparam,
10512                lpprogress.param().abi(),
10513                ulflags,
10514            )
10515            .ok()
10516        }
10517    }
10518    pub unsafe fn DeleteFolder<P3>(
10519        &self,
10520        cbentryid: u32,
10521        lpentryid: *mut ENTRYID,
10522        uluiparam: usize,
10523        lpprogress: P3,
10524        ulflags: u32,
10525    ) -> windows_core::Result<()>
10526    where
10527        P3: windows_core::Param<IMAPIProgress>,
10528    {
10529        unsafe {
10530            (windows_core::Interface::vtable(self).DeleteFolder)(
10531                windows_core::Interface::as_raw(self),
10532                cbentryid,
10533                lpentryid as _,
10534                uluiparam,
10535                lpprogress.param().abi(),
10536                ulflags,
10537            )
10538            .ok()
10539        }
10540    }
10541    pub unsafe fn SetReadFlags<P2>(
10542        &self,
10543        lpmsglist: *mut SBinaryArray,
10544        uluiparam: usize,
10545        lpprogress: P2,
10546        ulflags: u32,
10547    ) -> windows_core::Result<()>
10548    where
10549        P2: windows_core::Param<IMAPIProgress>,
10550    {
10551        unsafe {
10552            (windows_core::Interface::vtable(self).SetReadFlags)(
10553                windows_core::Interface::as_raw(self),
10554                lpmsglist as _,
10555                uluiparam,
10556                lpprogress.param().abi(),
10557                ulflags,
10558            )
10559            .ok()
10560        }
10561    }
10562    pub unsafe fn GetMessageStatus(
10563        &self,
10564        cbentryid: u32,
10565        lpentryid: *mut ENTRYID,
10566        ulflags: u32,
10567        lpulmessagestatus: *mut u32,
10568    ) -> windows_core::Result<()> {
10569        unsafe {
10570            (windows_core::Interface::vtable(self).GetMessageStatus)(
10571                windows_core::Interface::as_raw(self),
10572                cbentryid,
10573                lpentryid as _,
10574                ulflags,
10575                lpulmessagestatus as _,
10576            )
10577            .ok()
10578        }
10579    }
10580    pub unsafe fn SetMessageStatus(
10581        &self,
10582        cbentryid: u32,
10583        lpentryid: *mut ENTRYID,
10584        ulnewstatus: u32,
10585        ulnewstatusmask: u32,
10586        lpuloldstatus: *mut u32,
10587    ) -> windows_core::Result<()> {
10588        unsafe {
10589            (windows_core::Interface::vtable(self).SetMessageStatus)(
10590                windows_core::Interface::as_raw(self),
10591                cbentryid,
10592                lpentryid as _,
10593                ulnewstatus,
10594                ulnewstatusmask,
10595                lpuloldstatus as _,
10596            )
10597            .ok()
10598        }
10599    }
10600    pub unsafe fn SaveContentsSort(
10601        &self,
10602        lpsortcriteria: *mut SSortOrderSet,
10603        ulflags: u32,
10604    ) -> windows_core::Result<()> {
10605        unsafe {
10606            (windows_core::Interface::vtable(self).SaveContentsSort)(
10607                windows_core::Interface::as_raw(self),
10608                lpsortcriteria as _,
10609                ulflags,
10610            )
10611            .ok()
10612        }
10613    }
10614    pub unsafe fn EmptyFolder<P1>(
10615        &self,
10616        uluiparam: usize,
10617        lpprogress: P1,
10618        ulflags: u32,
10619    ) -> windows_core::Result<()>
10620    where
10621        P1: windows_core::Param<IMAPIProgress>,
10622    {
10623        unsafe {
10624            (windows_core::Interface::vtable(self).EmptyFolder)(
10625                windows_core::Interface::as_raw(self),
10626                uluiparam,
10627                lpprogress.param().abi(),
10628                ulflags,
10629            )
10630            .ok()
10631        }
10632    }
10633}
10634#[repr(C)]
10635pub struct IMAPIFolder_Vtbl {
10636    pub base__: IMAPIContainer_Vtbl,
10637    pub CreateMessage: unsafe extern "system" fn(
10638        *mut core::ffi::c_void,
10639        *mut windows_core::GUID,
10640        u32,
10641        *mut *mut core::ffi::c_void,
10642    ) -> windows_core::HRESULT,
10643    pub CopyMessages: unsafe extern "system" fn(
10644        *mut core::ffi::c_void,
10645        *mut SBinaryArray,
10646        *mut windows_core::GUID,
10647        *mut core::ffi::c_void,
10648        usize,
10649        *mut core::ffi::c_void,
10650        u32,
10651    ) -> windows_core::HRESULT,
10652    pub DeleteMessages: unsafe extern "system" fn(
10653        *mut core::ffi::c_void,
10654        *mut SBinaryArray,
10655        usize,
10656        *mut core::ffi::c_void,
10657        u32,
10658    ) -> windows_core::HRESULT,
10659    pub CreateFolder: unsafe extern "system" fn(
10660        *mut core::ffi::c_void,
10661        u32,
10662        *mut i8,
10663        *mut i8,
10664        *mut windows_core::GUID,
10665        u32,
10666        *mut *mut core::ffi::c_void,
10667    ) -> windows_core::HRESULT,
10668    pub CopyFolder: unsafe extern "system" fn(
10669        *mut core::ffi::c_void,
10670        u32,
10671        *mut ENTRYID,
10672        *mut windows_core::GUID,
10673        *mut core::ffi::c_void,
10674        *mut i8,
10675        usize,
10676        *mut core::ffi::c_void,
10677        u32,
10678    ) -> windows_core::HRESULT,
10679    pub DeleteFolder: unsafe extern "system" fn(
10680        *mut core::ffi::c_void,
10681        u32,
10682        *mut ENTRYID,
10683        usize,
10684        *mut core::ffi::c_void,
10685        u32,
10686    ) -> windows_core::HRESULT,
10687    pub SetReadFlags: unsafe extern "system" fn(
10688        *mut core::ffi::c_void,
10689        *mut SBinaryArray,
10690        usize,
10691        *mut core::ffi::c_void,
10692        u32,
10693    ) -> windows_core::HRESULT,
10694    pub GetMessageStatus: unsafe extern "system" fn(
10695        *mut core::ffi::c_void,
10696        u32,
10697        *mut ENTRYID,
10698        u32,
10699        *mut u32,
10700    ) -> windows_core::HRESULT,
10701    pub SetMessageStatus: unsafe extern "system" fn(
10702        *mut core::ffi::c_void,
10703        u32,
10704        *mut ENTRYID,
10705        u32,
10706        u32,
10707        *mut u32,
10708    ) -> windows_core::HRESULT,
10709    pub SaveContentsSort: unsafe extern "system" fn(
10710        *mut core::ffi::c_void,
10711        *mut SSortOrderSet,
10712        u32,
10713    ) -> windows_core::HRESULT,
10714    pub EmptyFolder: unsafe extern "system" fn(
10715        *mut core::ffi::c_void,
10716        usize,
10717        *mut core::ffi::c_void,
10718        u32,
10719    ) -> windows_core::HRESULT,
10720}
10721pub trait IMAPIFolder_Impl: IMAPIContainer_Impl {
10722    fn CreateMessage(
10723        &self,
10724        lpinterface: *mut windows_core::GUID,
10725        ulflags: u32,
10726        lppmessage: windows_core::OutRef<'_, IMessage>,
10727    ) -> windows_core::Result<()>;
10728    fn CopyMessages(
10729        &self,
10730        lpmsglist: *mut SBinaryArray,
10731        lpinterface: *mut windows_core::GUID,
10732        lpdestfolder: *mut core::ffi::c_void,
10733        uluiparam: usize,
10734        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
10735        ulflags: u32,
10736    ) -> windows_core::Result<()>;
10737    fn DeleteMessages(
10738        &self,
10739        lpmsglist: *mut SBinaryArray,
10740        uluiparam: usize,
10741        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
10742        ulflags: u32,
10743    ) -> windows_core::Result<()>;
10744    fn CreateFolder(
10745        &self,
10746        ulfoldertype: u32,
10747        lpszfoldername: *mut i8,
10748        lpszfoldercomment: *mut i8,
10749        lpinterface: *mut windows_core::GUID,
10750        ulflags: u32,
10751        lppfolder: windows_core::OutRef<'_, IMAPIFolder>,
10752    ) -> windows_core::Result<()>;
10753    fn CopyFolder(
10754        &self,
10755        cbentryid: u32,
10756        lpentryid: *mut ENTRYID,
10757        lpinterface: *mut windows_core::GUID,
10758        lpdestfolder: *mut core::ffi::c_void,
10759        lpsznewfoldername: *mut i8,
10760        uluiparam: usize,
10761        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
10762        ulflags: u32,
10763    ) -> windows_core::Result<()>;
10764    fn DeleteFolder(
10765        &self,
10766        cbentryid: u32,
10767        lpentryid: *mut ENTRYID,
10768        uluiparam: usize,
10769        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
10770        ulflags: u32,
10771    ) -> windows_core::Result<()>;
10772    fn SetReadFlags(
10773        &self,
10774        lpmsglist: *mut SBinaryArray,
10775        uluiparam: usize,
10776        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
10777        ulflags: u32,
10778    ) -> windows_core::Result<()>;
10779    fn GetMessageStatus(
10780        &self,
10781        cbentryid: u32,
10782        lpentryid: *mut ENTRYID,
10783        ulflags: u32,
10784        lpulmessagestatus: *mut u32,
10785    ) -> windows_core::Result<()>;
10786    fn SetMessageStatus(
10787        &self,
10788        cbentryid: u32,
10789        lpentryid: *mut ENTRYID,
10790        ulnewstatus: u32,
10791        ulnewstatusmask: u32,
10792        lpuloldstatus: *mut u32,
10793    ) -> windows_core::Result<()>;
10794    fn SaveContentsSort(
10795        &self,
10796        lpsortcriteria: *mut SSortOrderSet,
10797        ulflags: u32,
10798    ) -> windows_core::Result<()>;
10799    fn EmptyFolder(
10800        &self,
10801        uluiparam: usize,
10802        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
10803        ulflags: u32,
10804    ) -> windows_core::Result<()>;
10805}
10806impl IMAPIFolder_Vtbl {
10807    pub const fn new<Identity: IMAPIFolder_Impl, const OFFSET: isize>() -> Self {
10808        unsafe extern "system" fn CreateMessage<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10809            this: *mut core::ffi::c_void,
10810            lpinterface: *mut windows_core::GUID,
10811            ulflags: u32,
10812            lppmessage: *mut *mut core::ffi::c_void,
10813        ) -> windows_core::HRESULT {
10814            unsafe {
10815                let this: &Identity =
10816                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10817                IMAPIFolder_Impl::CreateMessage(
10818                    this,
10819                    core::mem::transmute_copy(&lpinterface),
10820                    core::mem::transmute_copy(&ulflags),
10821                    core::mem::transmute_copy(&lppmessage),
10822                )
10823                .into()
10824            }
10825        }
10826        unsafe extern "system" fn CopyMessages<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10827            this: *mut core::ffi::c_void,
10828            lpmsglist: *mut SBinaryArray,
10829            lpinterface: *mut windows_core::GUID,
10830            lpdestfolder: *mut core::ffi::c_void,
10831            uluiparam: usize,
10832            lpprogress: *mut core::ffi::c_void,
10833            ulflags: u32,
10834        ) -> windows_core::HRESULT {
10835            unsafe {
10836                let this: &Identity =
10837                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10838                IMAPIFolder_Impl::CopyMessages(
10839                    this,
10840                    core::mem::transmute_copy(&lpmsglist),
10841                    core::mem::transmute_copy(&lpinterface),
10842                    core::mem::transmute_copy(&lpdestfolder),
10843                    core::mem::transmute_copy(&uluiparam),
10844                    core::mem::transmute_copy(&lpprogress),
10845                    core::mem::transmute_copy(&ulflags),
10846                )
10847                .into()
10848            }
10849        }
10850        unsafe extern "system" fn DeleteMessages<
10851            Identity: IMAPIFolder_Impl,
10852            const OFFSET: isize,
10853        >(
10854            this: *mut core::ffi::c_void,
10855            lpmsglist: *mut SBinaryArray,
10856            uluiparam: usize,
10857            lpprogress: *mut core::ffi::c_void,
10858            ulflags: u32,
10859        ) -> windows_core::HRESULT {
10860            unsafe {
10861                let this: &Identity =
10862                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10863                IMAPIFolder_Impl::DeleteMessages(
10864                    this,
10865                    core::mem::transmute_copy(&lpmsglist),
10866                    core::mem::transmute_copy(&uluiparam),
10867                    core::mem::transmute_copy(&lpprogress),
10868                    core::mem::transmute_copy(&ulflags),
10869                )
10870                .into()
10871            }
10872        }
10873        unsafe extern "system" fn CreateFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10874            this: *mut core::ffi::c_void,
10875            ulfoldertype: u32,
10876            lpszfoldername: *mut i8,
10877            lpszfoldercomment: *mut i8,
10878            lpinterface: *mut windows_core::GUID,
10879            ulflags: u32,
10880            lppfolder: *mut *mut core::ffi::c_void,
10881        ) -> windows_core::HRESULT {
10882            unsafe {
10883                let this: &Identity =
10884                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10885                IMAPIFolder_Impl::CreateFolder(
10886                    this,
10887                    core::mem::transmute_copy(&ulfoldertype),
10888                    core::mem::transmute_copy(&lpszfoldername),
10889                    core::mem::transmute_copy(&lpszfoldercomment),
10890                    core::mem::transmute_copy(&lpinterface),
10891                    core::mem::transmute_copy(&ulflags),
10892                    core::mem::transmute_copy(&lppfolder),
10893                )
10894                .into()
10895            }
10896        }
10897        unsafe extern "system" fn CopyFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10898            this: *mut core::ffi::c_void,
10899            cbentryid: u32,
10900            lpentryid: *mut ENTRYID,
10901            lpinterface: *mut windows_core::GUID,
10902            lpdestfolder: *mut core::ffi::c_void,
10903            lpsznewfoldername: *mut i8,
10904            uluiparam: usize,
10905            lpprogress: *mut core::ffi::c_void,
10906            ulflags: u32,
10907        ) -> windows_core::HRESULT {
10908            unsafe {
10909                let this: &Identity =
10910                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10911                IMAPIFolder_Impl::CopyFolder(
10912                    this,
10913                    core::mem::transmute_copy(&cbentryid),
10914                    core::mem::transmute_copy(&lpentryid),
10915                    core::mem::transmute_copy(&lpinterface),
10916                    core::mem::transmute_copy(&lpdestfolder),
10917                    core::mem::transmute_copy(&lpsznewfoldername),
10918                    core::mem::transmute_copy(&uluiparam),
10919                    core::mem::transmute_copy(&lpprogress),
10920                    core::mem::transmute_copy(&ulflags),
10921                )
10922                .into()
10923            }
10924        }
10925        unsafe extern "system" fn DeleteFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10926            this: *mut core::ffi::c_void,
10927            cbentryid: u32,
10928            lpentryid: *mut ENTRYID,
10929            uluiparam: usize,
10930            lpprogress: *mut core::ffi::c_void,
10931            ulflags: u32,
10932        ) -> windows_core::HRESULT {
10933            unsafe {
10934                let this: &Identity =
10935                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10936                IMAPIFolder_Impl::DeleteFolder(
10937                    this,
10938                    core::mem::transmute_copy(&cbentryid),
10939                    core::mem::transmute_copy(&lpentryid),
10940                    core::mem::transmute_copy(&uluiparam),
10941                    core::mem::transmute_copy(&lpprogress),
10942                    core::mem::transmute_copy(&ulflags),
10943                )
10944                .into()
10945            }
10946        }
10947        unsafe extern "system" fn SetReadFlags<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10948            this: *mut core::ffi::c_void,
10949            lpmsglist: *mut SBinaryArray,
10950            uluiparam: usize,
10951            lpprogress: *mut core::ffi::c_void,
10952            ulflags: u32,
10953        ) -> windows_core::HRESULT {
10954            unsafe {
10955                let this: &Identity =
10956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10957                IMAPIFolder_Impl::SetReadFlags(
10958                    this,
10959                    core::mem::transmute_copy(&lpmsglist),
10960                    core::mem::transmute_copy(&uluiparam),
10961                    core::mem::transmute_copy(&lpprogress),
10962                    core::mem::transmute_copy(&ulflags),
10963                )
10964                .into()
10965            }
10966        }
10967        unsafe extern "system" fn GetMessageStatus<
10968            Identity: IMAPIFolder_Impl,
10969            const OFFSET: isize,
10970        >(
10971            this: *mut core::ffi::c_void,
10972            cbentryid: u32,
10973            lpentryid: *mut ENTRYID,
10974            ulflags: u32,
10975            lpulmessagestatus: *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::GetMessageStatus(
10981                    this,
10982                    core::mem::transmute_copy(&cbentryid),
10983                    core::mem::transmute_copy(&lpentryid),
10984                    core::mem::transmute_copy(&ulflags),
10985                    core::mem::transmute_copy(&lpulmessagestatus),
10986                )
10987                .into()
10988            }
10989        }
10990        unsafe extern "system" fn SetMessageStatus<
10991            Identity: IMAPIFolder_Impl,
10992            const OFFSET: isize,
10993        >(
10994            this: *mut core::ffi::c_void,
10995            cbentryid: u32,
10996            lpentryid: *mut ENTRYID,
10997            ulnewstatus: u32,
10998            ulnewstatusmask: u32,
10999            lpuloldstatus: *mut u32,
11000        ) -> windows_core::HRESULT {
11001            unsafe {
11002                let this: &Identity =
11003                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11004                IMAPIFolder_Impl::SetMessageStatus(
11005                    this,
11006                    core::mem::transmute_copy(&cbentryid),
11007                    core::mem::transmute_copy(&lpentryid),
11008                    core::mem::transmute_copy(&ulnewstatus),
11009                    core::mem::transmute_copy(&ulnewstatusmask),
11010                    core::mem::transmute_copy(&lpuloldstatus),
11011                )
11012                .into()
11013            }
11014        }
11015        unsafe extern "system" fn SaveContentsSort<
11016            Identity: IMAPIFolder_Impl,
11017            const OFFSET: isize,
11018        >(
11019            this: *mut core::ffi::c_void,
11020            lpsortcriteria: *mut SSortOrderSet,
11021            ulflags: u32,
11022        ) -> windows_core::HRESULT {
11023            unsafe {
11024                let this: &Identity =
11025                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11026                IMAPIFolder_Impl::SaveContentsSort(
11027                    this,
11028                    core::mem::transmute_copy(&lpsortcriteria),
11029                    core::mem::transmute_copy(&ulflags),
11030                )
11031                .into()
11032            }
11033        }
11034        unsafe extern "system" fn EmptyFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
11035            this: *mut core::ffi::c_void,
11036            uluiparam: usize,
11037            lpprogress: *mut core::ffi::c_void,
11038            ulflags: u32,
11039        ) -> windows_core::HRESULT {
11040            unsafe {
11041                let this: &Identity =
11042                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11043                IMAPIFolder_Impl::EmptyFolder(
11044                    this,
11045                    core::mem::transmute_copy(&uluiparam),
11046                    core::mem::transmute_copy(&lpprogress),
11047                    core::mem::transmute_copy(&ulflags),
11048                )
11049                .into()
11050            }
11051        }
11052        Self {
11053            base__: IMAPIContainer_Vtbl::new::<Identity, OFFSET>(),
11054            CreateMessage: CreateMessage::<Identity, OFFSET>,
11055            CopyMessages: CopyMessages::<Identity, OFFSET>,
11056            DeleteMessages: DeleteMessages::<Identity, OFFSET>,
11057            CreateFolder: CreateFolder::<Identity, OFFSET>,
11058            CopyFolder: CopyFolder::<Identity, OFFSET>,
11059            DeleteFolder: DeleteFolder::<Identity, OFFSET>,
11060            SetReadFlags: SetReadFlags::<Identity, OFFSET>,
11061            GetMessageStatus: GetMessageStatus::<Identity, OFFSET>,
11062            SetMessageStatus: SetMessageStatus::<Identity, OFFSET>,
11063            SaveContentsSort: SaveContentsSort::<Identity, OFFSET>,
11064            EmptyFolder: EmptyFolder::<Identity, OFFSET>,
11065        }
11066    }
11067    pub fn matches(iid: &windows_core::GUID) -> bool {
11068        iid == &<IMAPIFolder as windows_core::Interface>::IID
11069            || iid == &<IMAPIProp as windows_core::Interface>::IID
11070            || iid == &<IMAPIContainer as windows_core::Interface>::IID
11071    }
11072}
11073impl windows_core::RuntimeName for IMAPIFolder {}
11074pub const IMAPIFolder_CopyFolder: METHODS = METHODS(54i32);
11075pub const IMAPIFolder_CopyMessages: METHODS = METHODS(51i32);
11076pub const IMAPIFolder_CreateFolder: METHODS = METHODS(53i32);
11077pub const IMAPIFolder_CreateMessage: METHODS = METHODS(50i32);
11078pub const IMAPIFolder_DeleteFolder: METHODS = METHODS(55i32);
11079pub const IMAPIFolder_DeleteMessages: METHODS = METHODS(52i32);
11080pub const IMAPIFolder_EmptyFolder: METHODS = METHODS(60i32);
11081pub const IMAPIFolder_GetMessageStatus: METHODS = METHODS(57i32);
11082pub const IMAPIFolder_SaveContentsSort: METHODS = METHODS(59i32);
11083pub const IMAPIFolder_SetMessageStatus: METHODS = METHODS(58i32);
11084pub const IMAPIFolder_SetReadFlags: METHODS = METHODS(56i32);
11085windows_core::imp::define_interface!(
11086    IMAPIForm,
11087    IMAPIForm_Vtbl,
11088    0x00020327_0000_0000_c000_000000000046
11089);
11090windows_core::imp::interface_hierarchy!(IMAPIForm, windows_core::IUnknown);
11091impl IMAPIForm {
11092    pub unsafe fn GetLastError(
11093        &self,
11094        hresult: windows_core::HRESULT,
11095        ulflags: u32,
11096        lppmapierror: *mut *mut MAPIERROR,
11097    ) -> windows_core::Result<()> {
11098        unsafe {
11099            (windows_core::Interface::vtable(self).GetLastError)(
11100                windows_core::Interface::as_raw(self),
11101                hresult,
11102                ulflags,
11103                lppmapierror as _,
11104            )
11105            .ok()
11106        }
11107    }
11108    pub unsafe fn SetViewContext<P0>(&self, pviewcontext: P0) -> windows_core::Result<()>
11109    where
11110        P0: windows_core::Param<IMAPIViewContext>,
11111    {
11112        unsafe {
11113            (windows_core::Interface::vtable(self).SetViewContext)(
11114                windows_core::Interface::as_raw(self),
11115                pviewcontext.param().abi(),
11116            )
11117            .ok()
11118        }
11119    }
11120    pub unsafe fn GetViewContext(&self) -> windows_core::Result<IMAPIViewContext> {
11121        unsafe {
11122            let mut result__ = core::mem::zeroed();
11123            (windows_core::Interface::vtable(self).GetViewContext)(
11124                windows_core::Interface::as_raw(self),
11125                &mut result__,
11126            )
11127            .and_then(|| windows_core::Type::from_abi(result__))
11128        }
11129    }
11130    pub unsafe fn ShutdownForm(&self, ulsaveoptions: u32) -> windows_core::Result<()> {
11131        unsafe {
11132            (windows_core::Interface::vtable(self).ShutdownForm)(
11133                windows_core::Interface::as_raw(self),
11134                ulsaveoptions,
11135            )
11136            .ok()
11137        }
11138    }
11139    pub unsafe fn DoVerb<P1>(
11140        &self,
11141        iverb: i32,
11142        lpviewcontext: P1,
11143        hwndparent: usize,
11144        lprcposrect: *mut windows::Win32::Foundation::RECT,
11145    ) -> windows_core::Result<()>
11146    where
11147        P1: windows_core::Param<IMAPIViewContext>,
11148    {
11149        unsafe {
11150            (windows_core::Interface::vtable(self).DoVerb)(
11151                windows_core::Interface::as_raw(self),
11152                iverb,
11153                lpviewcontext.param().abi(),
11154                hwndparent,
11155                lprcposrect as _,
11156            )
11157            .ok()
11158        }
11159    }
11160    pub unsafe fn Advise<P0>(&self, padvise: P0, pdwstatus: *mut usize) -> windows_core::Result<()>
11161    where
11162        P0: windows_core::Param<IMAPIViewAdviseSink>,
11163    {
11164        unsafe {
11165            (windows_core::Interface::vtable(self).Advise)(
11166                windows_core::Interface::as_raw(self),
11167                padvise.param().abi(),
11168                pdwstatus as _,
11169            )
11170            .ok()
11171        }
11172    }
11173    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
11174        unsafe {
11175            (windows_core::Interface::vtable(self).Unadvise)(
11176                windows_core::Interface::as_raw(self),
11177                ulconnection,
11178            )
11179            .ok()
11180        }
11181    }
11182}
11183#[repr(C)]
11184pub struct IMAPIForm_Vtbl {
11185    pub base__: windows_core::IUnknown_Vtbl,
11186    pub GetLastError: unsafe extern "system" fn(
11187        *mut core::ffi::c_void,
11188        windows_core::HRESULT,
11189        u32,
11190        *mut *mut MAPIERROR,
11191    ) -> windows_core::HRESULT,
11192    pub SetViewContext: unsafe extern "system" fn(
11193        *mut core::ffi::c_void,
11194        *mut core::ffi::c_void,
11195    ) -> windows_core::HRESULT,
11196    pub GetViewContext: unsafe extern "system" fn(
11197        *mut core::ffi::c_void,
11198        *mut *mut core::ffi::c_void,
11199    ) -> windows_core::HRESULT,
11200    pub ShutdownForm:
11201        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
11202    pub DoVerb: unsafe extern "system" fn(
11203        *mut core::ffi::c_void,
11204        i32,
11205        *mut core::ffi::c_void,
11206        usize,
11207        *mut windows::Win32::Foundation::RECT,
11208    ) -> windows_core::HRESULT,
11209    pub Advise: unsafe extern "system" fn(
11210        *mut core::ffi::c_void,
11211        *mut core::ffi::c_void,
11212        *mut usize,
11213    ) -> windows_core::HRESULT,
11214    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
11215}
11216pub trait IMAPIForm_Impl: windows_core::IUnknownImpl {
11217    fn GetLastError(
11218        &self,
11219        hresult: windows_core::HRESULT,
11220        ulflags: u32,
11221        lppmapierror: *mut *mut MAPIERROR,
11222    ) -> windows_core::Result<()>;
11223    fn SetViewContext(
11224        &self,
11225        pviewcontext: windows_core::Ref<'_, IMAPIViewContext>,
11226    ) -> windows_core::Result<()>;
11227    fn GetViewContext(&self) -> windows_core::Result<IMAPIViewContext>;
11228    fn ShutdownForm(&self, ulsaveoptions: u32) -> windows_core::Result<()>;
11229    fn DoVerb(
11230        &self,
11231        iverb: i32,
11232        lpviewcontext: windows_core::Ref<'_, IMAPIViewContext>,
11233        hwndparent: usize,
11234        lprcposrect: *mut windows::Win32::Foundation::RECT,
11235    ) -> windows_core::Result<()>;
11236    fn Advise(
11237        &self,
11238        padvise: windows_core::Ref<'_, IMAPIViewAdviseSink>,
11239        pdwstatus: *mut usize,
11240    ) -> windows_core::Result<()>;
11241    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
11242}
11243impl IMAPIForm_Vtbl {
11244    pub const fn new<Identity: IMAPIForm_Impl, const OFFSET: isize>() -> Self {
11245        unsafe extern "system" fn GetLastError<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11246            this: *mut core::ffi::c_void,
11247            hresult: windows_core::HRESULT,
11248            ulflags: u32,
11249            lppmapierror: *mut *mut MAPIERROR,
11250        ) -> windows_core::HRESULT {
11251            unsafe {
11252                let this: &Identity =
11253                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11254                IMAPIForm_Impl::GetLastError(
11255                    this,
11256                    core::mem::transmute_copy(&hresult),
11257                    core::mem::transmute_copy(&ulflags),
11258                    core::mem::transmute_copy(&lppmapierror),
11259                )
11260                .into()
11261            }
11262        }
11263        unsafe extern "system" fn SetViewContext<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11264            this: *mut core::ffi::c_void,
11265            pviewcontext: *mut core::ffi::c_void,
11266        ) -> windows_core::HRESULT {
11267            unsafe {
11268                let this: &Identity =
11269                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11270                IMAPIForm_Impl::SetViewContext(this, core::mem::transmute_copy(&pviewcontext))
11271                    .into()
11272            }
11273        }
11274        unsafe extern "system" fn GetViewContext<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11275            this: *mut core::ffi::c_void,
11276            ppviewcontext: *mut *mut core::ffi::c_void,
11277        ) -> windows_core::HRESULT {
11278            unsafe {
11279                let this: &Identity =
11280                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11281                match IMAPIForm_Impl::GetViewContext(this) {
11282                    Ok(ok__) => {
11283                        ppviewcontext.write(core::mem::transmute(ok__));
11284                        windows_core::HRESULT(0)
11285                    }
11286                    Err(err) => err.into(),
11287                }
11288            }
11289        }
11290        unsafe extern "system" fn ShutdownForm<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11291            this: *mut core::ffi::c_void,
11292            ulsaveoptions: u32,
11293        ) -> windows_core::HRESULT {
11294            unsafe {
11295                let this: &Identity =
11296                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11297                IMAPIForm_Impl::ShutdownForm(this, core::mem::transmute_copy(&ulsaveoptions)).into()
11298            }
11299        }
11300        unsafe extern "system" fn DoVerb<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11301            this: *mut core::ffi::c_void,
11302            iverb: i32,
11303            lpviewcontext: *mut core::ffi::c_void,
11304            hwndparent: usize,
11305            lprcposrect: *mut windows::Win32::Foundation::RECT,
11306        ) -> windows_core::HRESULT {
11307            unsafe {
11308                let this: &Identity =
11309                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11310                IMAPIForm_Impl::DoVerb(
11311                    this,
11312                    core::mem::transmute_copy(&iverb),
11313                    core::mem::transmute_copy(&lpviewcontext),
11314                    core::mem::transmute_copy(&hwndparent),
11315                    core::mem::transmute_copy(&lprcposrect),
11316                )
11317                .into()
11318            }
11319        }
11320        unsafe extern "system" fn Advise<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11321            this: *mut core::ffi::c_void,
11322            padvise: *mut core::ffi::c_void,
11323            pdwstatus: *mut usize,
11324        ) -> windows_core::HRESULT {
11325            unsafe {
11326                let this: &Identity =
11327                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11328                IMAPIForm_Impl::Advise(
11329                    this,
11330                    core::mem::transmute_copy(&padvise),
11331                    core::mem::transmute_copy(&pdwstatus),
11332                )
11333                .into()
11334            }
11335        }
11336        unsafe extern "system" fn Unadvise<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11337            this: *mut core::ffi::c_void,
11338            ulconnection: usize,
11339        ) -> windows_core::HRESULT {
11340            unsafe {
11341                let this: &Identity =
11342                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11343                IMAPIForm_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
11344            }
11345        }
11346        Self {
11347            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11348            GetLastError: GetLastError::<Identity, OFFSET>,
11349            SetViewContext: SetViewContext::<Identity, OFFSET>,
11350            GetViewContext: GetViewContext::<Identity, OFFSET>,
11351            ShutdownForm: ShutdownForm::<Identity, OFFSET>,
11352            DoVerb: DoVerb::<Identity, OFFSET>,
11353            Advise: Advise::<Identity, OFFSET>,
11354            Unadvise: Unadvise::<Identity, OFFSET>,
11355        }
11356    }
11357    pub fn matches(iid: &windows_core::GUID) -> bool {
11358        iid == &<IMAPIForm as windows_core::Interface>::IID
11359    }
11360}
11361impl windows_core::RuntimeName for IMAPIForm {}
11362windows_core::imp::define_interface!(
11363    IMAPIFormAdviseSink,
11364    IMAPIFormAdviseSink_Vtbl,
11365    0x0002032f_0000_0000_c000_000000000046
11366);
11367windows_core::imp::interface_hierarchy!(IMAPIFormAdviseSink, windows_core::IUnknown);
11368impl IMAPIFormAdviseSink {
11369    pub unsafe fn OnChange(&self, uldir: u32) -> windows_core::Result<()> {
11370        unsafe {
11371            (windows_core::Interface::vtable(self).OnChange)(
11372                windows_core::Interface::as_raw(self),
11373                uldir,
11374            )
11375            .ok()
11376        }
11377    }
11378    pub unsafe fn OnActivateNext<P0>(
11379        &self,
11380        lpszmessageclass: P0,
11381        ulmessagestatus: u32,
11382        ulmessageflags: u32,
11383    ) -> windows_core::Result<IPersistMessage>
11384    where
11385        P0: windows_core::Param<windows_core::PCSTR>,
11386    {
11387        unsafe {
11388            let mut result__ = core::mem::zeroed();
11389            (windows_core::Interface::vtable(self).OnActivateNext)(
11390                windows_core::Interface::as_raw(self),
11391                lpszmessageclass.param().abi(),
11392                ulmessagestatus,
11393                ulmessageflags,
11394                &mut result__,
11395            )
11396            .and_then(|| windows_core::Type::from_abi(result__))
11397        }
11398    }
11399}
11400#[repr(C)]
11401pub struct IMAPIFormAdviseSink_Vtbl {
11402    pub base__: windows_core::IUnknown_Vtbl,
11403    pub OnChange: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
11404    pub OnActivateNext: unsafe extern "system" fn(
11405        *mut core::ffi::c_void,
11406        windows_core::PCSTR,
11407        u32,
11408        u32,
11409        *mut *mut core::ffi::c_void,
11410    ) -> windows_core::HRESULT,
11411}
11412pub trait IMAPIFormAdviseSink_Impl: windows_core::IUnknownImpl {
11413    fn OnChange(&self, uldir: u32) -> windows_core::Result<()>;
11414    fn OnActivateNext(
11415        &self,
11416        lpszmessageclass: &windows_core::PCSTR,
11417        ulmessagestatus: u32,
11418        ulmessageflags: u32,
11419    ) -> windows_core::Result<IPersistMessage>;
11420}
11421impl IMAPIFormAdviseSink_Vtbl {
11422    pub const fn new<Identity: IMAPIFormAdviseSink_Impl, const OFFSET: isize>() -> Self {
11423        unsafe extern "system" fn OnChange<
11424            Identity: IMAPIFormAdviseSink_Impl,
11425            const OFFSET: isize,
11426        >(
11427            this: *mut core::ffi::c_void,
11428            uldir: u32,
11429        ) -> windows_core::HRESULT {
11430            unsafe {
11431                let this: &Identity =
11432                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11433                IMAPIFormAdviseSink_Impl::OnChange(this, core::mem::transmute_copy(&uldir)).into()
11434            }
11435        }
11436        unsafe extern "system" fn OnActivateNext<
11437            Identity: IMAPIFormAdviseSink_Impl,
11438            const OFFSET: isize,
11439        >(
11440            this: *mut core::ffi::c_void,
11441            lpszmessageclass: windows_core::PCSTR,
11442            ulmessagestatus: u32,
11443            ulmessageflags: u32,
11444            pppersistmessage: *mut *mut core::ffi::c_void,
11445        ) -> windows_core::HRESULT {
11446            unsafe {
11447                let this: &Identity =
11448                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11449                match IMAPIFormAdviseSink_Impl::OnActivateNext(
11450                    this,
11451                    core::mem::transmute(&lpszmessageclass),
11452                    core::mem::transmute_copy(&ulmessagestatus),
11453                    core::mem::transmute_copy(&ulmessageflags),
11454                ) {
11455                    Ok(ok__) => {
11456                        pppersistmessage.write(core::mem::transmute(ok__));
11457                        windows_core::HRESULT(0)
11458                    }
11459                    Err(err) => err.into(),
11460                }
11461            }
11462        }
11463        Self {
11464            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11465            OnChange: OnChange::<Identity, OFFSET>,
11466            OnActivateNext: OnActivateNext::<Identity, OFFSET>,
11467        }
11468    }
11469    pub fn matches(iid: &windows_core::GUID) -> bool {
11470        iid == &<IMAPIFormAdviseSink as windows_core::Interface>::IID
11471    }
11472}
11473impl windows_core::RuntimeName for IMAPIFormAdviseSink {}
11474windows_core::imp::define_interface!(
11475    IMAPIFormContainer,
11476    IMAPIFormContainer_Vtbl,
11477    0x0002032e_0000_0000_c000_000000000046
11478);
11479windows_core::imp::interface_hierarchy!(IMAPIFormContainer, windows_core::IUnknown);
11480impl IMAPIFormContainer {
11481    pub unsafe fn GetLastError(
11482        &self,
11483        hresult: windows_core::HRESULT,
11484        ulflags: u32,
11485        lppmapierror: *mut *mut MAPIERROR,
11486    ) -> windows_core::Result<()> {
11487        unsafe {
11488            (windows_core::Interface::vtable(self).GetLastError)(
11489                windows_core::Interface::as_raw(self),
11490                hresult,
11491                ulflags,
11492                lppmapierror as _,
11493            )
11494            .ok()
11495        }
11496    }
11497    pub unsafe fn InstallForm(
11498        &self,
11499        uluiparam: usize,
11500        ulflags: u32,
11501        szcfgpathname: *mut i8,
11502    ) -> windows_core::Result<()> {
11503        unsafe {
11504            (windows_core::Interface::vtable(self).InstallForm)(
11505                windows_core::Interface::as_raw(self),
11506                uluiparam,
11507                ulflags,
11508                szcfgpathname as _,
11509            )
11510            .ok()
11511        }
11512    }
11513    pub unsafe fn RemoveForm<P0>(&self, szmessageclass: P0) -> windows_core::Result<()>
11514    where
11515        P0: windows_core::Param<windows_core::PCSTR>,
11516    {
11517        unsafe {
11518            (windows_core::Interface::vtable(self).RemoveForm)(
11519                windows_core::Interface::as_raw(self),
11520                szmessageclass.param().abi(),
11521            )
11522            .ok()
11523        }
11524    }
11525    pub unsafe fn ResolveMessageClass<P0>(
11526        &self,
11527        szmessageclass: P0,
11528        ulflags: u32,
11529    ) -> windows_core::Result<IMAPIFormInfo>
11530    where
11531        P0: windows_core::Param<windows_core::PCSTR>,
11532    {
11533        unsafe {
11534            let mut result__ = core::mem::zeroed();
11535            (windows_core::Interface::vtable(self).ResolveMessageClass)(
11536                windows_core::Interface::as_raw(self),
11537                szmessageclass.param().abi(),
11538                ulflags,
11539                &mut result__,
11540            )
11541            .and_then(|| windows_core::Type::from_abi(result__))
11542        }
11543    }
11544    pub unsafe fn ResolveMultipleMessageClasses(
11545        &self,
11546        pmsgclassarray: *mut SMessageClassArray,
11547        ulflags: u32,
11548        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
11549    ) -> windows_core::Result<()> {
11550        unsafe {
11551            (windows_core::Interface::vtable(self).ResolveMultipleMessageClasses)(
11552                windows_core::Interface::as_raw(self),
11553                pmsgclassarray as _,
11554                ulflags,
11555                ppfrminfoarray as _,
11556            )
11557            .ok()
11558        }
11559    }
11560    pub unsafe fn CalcFormPropSet(
11561        &self,
11562        ulflags: u32,
11563        ppresults: *mut *mut SMAPIFormPropArray,
11564    ) -> windows_core::Result<()> {
11565        unsafe {
11566            (windows_core::Interface::vtable(self).CalcFormPropSet)(
11567                windows_core::Interface::as_raw(self),
11568                ulflags,
11569                ppresults as _,
11570            )
11571            .ok()
11572        }
11573    }
11574    pub unsafe fn GetDisplay(
11575        &self,
11576        ulflags: u32,
11577        pszdisplayname: *mut *mut i8,
11578    ) -> windows_core::Result<()> {
11579        unsafe {
11580            (windows_core::Interface::vtable(self).GetDisplay)(
11581                windows_core::Interface::as_raw(self),
11582                ulflags,
11583                pszdisplayname as _,
11584            )
11585            .ok()
11586        }
11587    }
11588}
11589#[repr(C)]
11590pub struct IMAPIFormContainer_Vtbl {
11591    pub base__: windows_core::IUnknown_Vtbl,
11592    pub GetLastError: unsafe extern "system" fn(
11593        *mut core::ffi::c_void,
11594        windows_core::HRESULT,
11595        u32,
11596        *mut *mut MAPIERROR,
11597    ) -> windows_core::HRESULT,
11598    pub InstallForm: unsafe extern "system" fn(
11599        *mut core::ffi::c_void,
11600        usize,
11601        u32,
11602        *mut i8,
11603    ) -> windows_core::HRESULT,
11604    pub RemoveForm: unsafe extern "system" fn(
11605        *mut core::ffi::c_void,
11606        windows_core::PCSTR,
11607    ) -> windows_core::HRESULT,
11608    pub ResolveMessageClass: unsafe extern "system" fn(
11609        *mut core::ffi::c_void,
11610        windows_core::PCSTR,
11611        u32,
11612        *mut *mut core::ffi::c_void,
11613    ) -> windows_core::HRESULT,
11614    pub ResolveMultipleMessageClasses: unsafe extern "system" fn(
11615        *mut core::ffi::c_void,
11616        *mut SMessageClassArray,
11617        u32,
11618        *mut *mut SMAPIFormInfoArray,
11619    ) -> windows_core::HRESULT,
11620    pub CalcFormPropSet: unsafe extern "system" fn(
11621        *mut core::ffi::c_void,
11622        u32,
11623        *mut *mut SMAPIFormPropArray,
11624    ) -> windows_core::HRESULT,
11625    pub GetDisplay: unsafe extern "system" fn(
11626        *mut core::ffi::c_void,
11627        u32,
11628        *mut *mut i8,
11629    ) -> windows_core::HRESULT,
11630}
11631pub trait IMAPIFormContainer_Impl: windows_core::IUnknownImpl {
11632    fn GetLastError(
11633        &self,
11634        hresult: windows_core::HRESULT,
11635        ulflags: u32,
11636        lppmapierror: *mut *mut MAPIERROR,
11637    ) -> windows_core::Result<()>;
11638    fn InstallForm(
11639        &self,
11640        uluiparam: usize,
11641        ulflags: u32,
11642        szcfgpathname: *mut i8,
11643    ) -> windows_core::Result<()>;
11644    fn RemoveForm(&self, szmessageclass: &windows_core::PCSTR) -> windows_core::Result<()>;
11645    fn ResolveMessageClass(
11646        &self,
11647        szmessageclass: &windows_core::PCSTR,
11648        ulflags: u32,
11649    ) -> windows_core::Result<IMAPIFormInfo>;
11650    fn ResolveMultipleMessageClasses(
11651        &self,
11652        pmsgclassarray: *mut SMessageClassArray,
11653        ulflags: u32,
11654        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
11655    ) -> windows_core::Result<()>;
11656    fn CalcFormPropSet(
11657        &self,
11658        ulflags: u32,
11659        ppresults: *mut *mut SMAPIFormPropArray,
11660    ) -> windows_core::Result<()>;
11661    fn GetDisplay(&self, ulflags: u32, pszdisplayname: *mut *mut i8) -> windows_core::Result<()>;
11662}
11663impl IMAPIFormContainer_Vtbl {
11664    pub const fn new<Identity: IMAPIFormContainer_Impl, const OFFSET: isize>() -> Self {
11665        unsafe extern "system" fn GetLastError<
11666            Identity: IMAPIFormContainer_Impl,
11667            const OFFSET: isize,
11668        >(
11669            this: *mut core::ffi::c_void,
11670            hresult: windows_core::HRESULT,
11671            ulflags: u32,
11672            lppmapierror: *mut *mut MAPIERROR,
11673        ) -> windows_core::HRESULT {
11674            unsafe {
11675                let this: &Identity =
11676                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11677                IMAPIFormContainer_Impl::GetLastError(
11678                    this,
11679                    core::mem::transmute_copy(&hresult),
11680                    core::mem::transmute_copy(&ulflags),
11681                    core::mem::transmute_copy(&lppmapierror),
11682                )
11683                .into()
11684            }
11685        }
11686        unsafe extern "system" fn InstallForm<
11687            Identity: IMAPIFormContainer_Impl,
11688            const OFFSET: isize,
11689        >(
11690            this: *mut core::ffi::c_void,
11691            uluiparam: usize,
11692            ulflags: u32,
11693            szcfgpathname: *mut i8,
11694        ) -> windows_core::HRESULT {
11695            unsafe {
11696                let this: &Identity =
11697                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11698                IMAPIFormContainer_Impl::InstallForm(
11699                    this,
11700                    core::mem::transmute_copy(&uluiparam),
11701                    core::mem::transmute_copy(&ulflags),
11702                    core::mem::transmute_copy(&szcfgpathname),
11703                )
11704                .into()
11705            }
11706        }
11707        unsafe extern "system" fn RemoveForm<
11708            Identity: IMAPIFormContainer_Impl,
11709            const OFFSET: isize,
11710        >(
11711            this: *mut core::ffi::c_void,
11712            szmessageclass: windows_core::PCSTR,
11713        ) -> windows_core::HRESULT {
11714            unsafe {
11715                let this: &Identity =
11716                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11717                IMAPIFormContainer_Impl::RemoveForm(this, core::mem::transmute(&szmessageclass))
11718                    .into()
11719            }
11720        }
11721        unsafe extern "system" fn ResolveMessageClass<
11722            Identity: IMAPIFormContainer_Impl,
11723            const OFFSET: isize,
11724        >(
11725            this: *mut core::ffi::c_void,
11726            szmessageclass: windows_core::PCSTR,
11727            ulflags: u32,
11728            pforminfo: *mut *mut core::ffi::c_void,
11729        ) -> windows_core::HRESULT {
11730            unsafe {
11731                let this: &Identity =
11732                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11733                match IMAPIFormContainer_Impl::ResolveMessageClass(
11734                    this,
11735                    core::mem::transmute(&szmessageclass),
11736                    core::mem::transmute_copy(&ulflags),
11737                ) {
11738                    Ok(ok__) => {
11739                        pforminfo.write(core::mem::transmute(ok__));
11740                        windows_core::HRESULT(0)
11741                    }
11742                    Err(err) => err.into(),
11743                }
11744            }
11745        }
11746        unsafe extern "system" fn ResolveMultipleMessageClasses<
11747            Identity: IMAPIFormContainer_Impl,
11748            const OFFSET: isize,
11749        >(
11750            this: *mut core::ffi::c_void,
11751            pmsgclassarray: *mut SMessageClassArray,
11752            ulflags: u32,
11753            ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
11754        ) -> windows_core::HRESULT {
11755            unsafe {
11756                let this: &Identity =
11757                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11758                IMAPIFormContainer_Impl::ResolveMultipleMessageClasses(
11759                    this,
11760                    core::mem::transmute_copy(&pmsgclassarray),
11761                    core::mem::transmute_copy(&ulflags),
11762                    core::mem::transmute_copy(&ppfrminfoarray),
11763                )
11764                .into()
11765            }
11766        }
11767        unsafe extern "system" fn CalcFormPropSet<
11768            Identity: IMAPIFormContainer_Impl,
11769            const OFFSET: isize,
11770        >(
11771            this: *mut core::ffi::c_void,
11772            ulflags: u32,
11773            ppresults: *mut *mut SMAPIFormPropArray,
11774        ) -> windows_core::HRESULT {
11775            unsafe {
11776                let this: &Identity =
11777                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11778                IMAPIFormContainer_Impl::CalcFormPropSet(
11779                    this,
11780                    core::mem::transmute_copy(&ulflags),
11781                    core::mem::transmute_copy(&ppresults),
11782                )
11783                .into()
11784            }
11785        }
11786        unsafe extern "system" fn GetDisplay<
11787            Identity: IMAPIFormContainer_Impl,
11788            const OFFSET: isize,
11789        >(
11790            this: *mut core::ffi::c_void,
11791            ulflags: u32,
11792            pszdisplayname: *mut *mut i8,
11793        ) -> windows_core::HRESULT {
11794            unsafe {
11795                let this: &Identity =
11796                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11797                IMAPIFormContainer_Impl::GetDisplay(
11798                    this,
11799                    core::mem::transmute_copy(&ulflags),
11800                    core::mem::transmute_copy(&pszdisplayname),
11801                )
11802                .into()
11803            }
11804        }
11805        Self {
11806            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11807            GetLastError: GetLastError::<Identity, OFFSET>,
11808            InstallForm: InstallForm::<Identity, OFFSET>,
11809            RemoveForm: RemoveForm::<Identity, OFFSET>,
11810            ResolveMessageClass: ResolveMessageClass::<Identity, OFFSET>,
11811            ResolveMultipleMessageClasses: ResolveMultipleMessageClasses::<Identity, OFFSET>,
11812            CalcFormPropSet: CalcFormPropSet::<Identity, OFFSET>,
11813            GetDisplay: GetDisplay::<Identity, OFFSET>,
11814        }
11815    }
11816    pub fn matches(iid: &windows_core::GUID) -> bool {
11817        iid == &<IMAPIFormContainer as windows_core::Interface>::IID
11818    }
11819}
11820impl windows_core::RuntimeName for IMAPIFormContainer {}
11821windows_core::imp::define_interface!(
11822    IMAPIFormFactory,
11823    IMAPIFormFactory_Vtbl,
11824    0x00020350_0000_0000_c000_000000000046
11825);
11826windows_core::imp::interface_hierarchy!(IMAPIFormFactory, windows_core::IUnknown);
11827impl IMAPIFormFactory {
11828    pub unsafe fn GetLastError(
11829        &self,
11830        hresult: windows_core::HRESULT,
11831        ulflags: u32,
11832        lppmapierror: *mut *mut MAPIERROR,
11833    ) -> windows_core::Result<()> {
11834        unsafe {
11835            (windows_core::Interface::vtable(self).GetLastError)(
11836                windows_core::Interface::as_raw(self),
11837                hresult,
11838                ulflags,
11839                lppmapierror as _,
11840            )
11841            .ok()
11842        }
11843    }
11844    pub unsafe fn CreateClassFactory(
11845        &self,
11846        clsidform: *const windows_core::GUID,
11847        ulflags: u32,
11848    ) -> windows_core::Result<windows::Win32::System::Com::IClassFactory> {
11849        unsafe {
11850            let mut result__ = core::mem::zeroed();
11851            (windows_core::Interface::vtable(self).CreateClassFactory)(
11852                windows_core::Interface::as_raw(self),
11853                clsidform,
11854                ulflags,
11855                &mut result__,
11856            )
11857            .and_then(|| windows_core::Type::from_abi(result__))
11858        }
11859    }
11860    pub unsafe fn LockServer(&self, ulflags: u32, flockserver: u32) -> windows_core::Result<()> {
11861        unsafe {
11862            (windows_core::Interface::vtable(self).LockServer)(
11863                windows_core::Interface::as_raw(self),
11864                ulflags,
11865                flockserver,
11866            )
11867            .ok()
11868        }
11869    }
11870}
11871#[repr(C)]
11872pub struct IMAPIFormFactory_Vtbl {
11873    pub base__: windows_core::IUnknown_Vtbl,
11874    pub GetLastError: unsafe extern "system" fn(
11875        *mut core::ffi::c_void,
11876        windows_core::HRESULT,
11877        u32,
11878        *mut *mut MAPIERROR,
11879    ) -> windows_core::HRESULT,
11880    pub CreateClassFactory: unsafe extern "system" fn(
11881        *mut core::ffi::c_void,
11882        *const windows_core::GUID,
11883        u32,
11884        *mut *mut core::ffi::c_void,
11885    ) -> windows_core::HRESULT,
11886    pub LockServer:
11887        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
11888}
11889pub trait IMAPIFormFactory_Impl: windows_core::IUnknownImpl {
11890    fn GetLastError(
11891        &self,
11892        hresult: windows_core::HRESULT,
11893        ulflags: u32,
11894        lppmapierror: *mut *mut MAPIERROR,
11895    ) -> windows_core::Result<()>;
11896    fn CreateClassFactory(
11897        &self,
11898        clsidform: *const windows_core::GUID,
11899        ulflags: u32,
11900    ) -> windows_core::Result<windows::Win32::System::Com::IClassFactory>;
11901    fn LockServer(&self, ulflags: u32, flockserver: u32) -> windows_core::Result<()>;
11902}
11903impl IMAPIFormFactory_Vtbl {
11904    pub const fn new<Identity: IMAPIFormFactory_Impl, const OFFSET: isize>() -> Self {
11905        unsafe extern "system" fn GetLastError<
11906            Identity: IMAPIFormFactory_Impl,
11907            const OFFSET: isize,
11908        >(
11909            this: *mut core::ffi::c_void,
11910            hresult: windows_core::HRESULT,
11911            ulflags: u32,
11912            lppmapierror: *mut *mut MAPIERROR,
11913        ) -> windows_core::HRESULT {
11914            unsafe {
11915                let this: &Identity =
11916                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11917                IMAPIFormFactory_Impl::GetLastError(
11918                    this,
11919                    core::mem::transmute_copy(&hresult),
11920                    core::mem::transmute_copy(&ulflags),
11921                    core::mem::transmute_copy(&lppmapierror),
11922                )
11923                .into()
11924            }
11925        }
11926        unsafe extern "system" fn CreateClassFactory<
11927            Identity: IMAPIFormFactory_Impl,
11928            const OFFSET: isize,
11929        >(
11930            this: *mut core::ffi::c_void,
11931            clsidform: *const windows_core::GUID,
11932            ulflags: u32,
11933            lppclassfactory: *mut *mut core::ffi::c_void,
11934        ) -> windows_core::HRESULT {
11935            unsafe {
11936                let this: &Identity =
11937                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11938                match IMAPIFormFactory_Impl::CreateClassFactory(
11939                    this,
11940                    core::mem::transmute_copy(&clsidform),
11941                    core::mem::transmute_copy(&ulflags),
11942                ) {
11943                    Ok(ok__) => {
11944                        lppclassfactory.write(core::mem::transmute(ok__));
11945                        windows_core::HRESULT(0)
11946                    }
11947                    Err(err) => err.into(),
11948                }
11949            }
11950        }
11951        unsafe extern "system" fn LockServer<
11952            Identity: IMAPIFormFactory_Impl,
11953            const OFFSET: isize,
11954        >(
11955            this: *mut core::ffi::c_void,
11956            ulflags: u32,
11957            flockserver: u32,
11958        ) -> windows_core::HRESULT {
11959            unsafe {
11960                let this: &Identity =
11961                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11962                IMAPIFormFactory_Impl::LockServer(
11963                    this,
11964                    core::mem::transmute_copy(&ulflags),
11965                    core::mem::transmute_copy(&flockserver),
11966                )
11967                .into()
11968            }
11969        }
11970        Self {
11971            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11972            GetLastError: GetLastError::<Identity, OFFSET>,
11973            CreateClassFactory: CreateClassFactory::<Identity, OFFSET>,
11974            LockServer: LockServer::<Identity, OFFSET>,
11975        }
11976    }
11977    pub fn matches(iid: &windows_core::GUID) -> bool {
11978        iid == &<IMAPIFormFactory as windows_core::Interface>::IID
11979    }
11980}
11981impl windows_core::RuntimeName for IMAPIFormFactory {}
11982windows_core::imp::define_interface!(
11983    IMAPIFormInfo,
11984    IMAPIFormInfo_Vtbl,
11985    0x00020324_0000_0000_c000_000000000046
11986);
11987impl core::ops::Deref for IMAPIFormInfo {
11988    type Target = IMAPIProp;
11989    fn deref(&self) -> &Self::Target {
11990        unsafe { core::mem::transmute(self) }
11991    }
11992}
11993windows_core::imp::interface_hierarchy!(IMAPIFormInfo, windows_core::IUnknown, IMAPIProp);
11994impl IMAPIFormInfo {
11995    pub unsafe fn CalcFormPropSet(
11996        &self,
11997        ulflags: u32,
11998        ppformproparray: *mut *mut SMAPIFormPropArray,
11999    ) -> windows_core::Result<()> {
12000        unsafe {
12001            (windows_core::Interface::vtable(self).CalcFormPropSet)(
12002                windows_core::Interface::as_raw(self),
12003                ulflags,
12004                ppformproparray as _,
12005            )
12006            .ok()
12007        }
12008    }
12009    pub unsafe fn CalcVerbSet(
12010        &self,
12011        ulflags: u32,
12012        ppmapiverbarray: *mut *mut SMAPIVerbArray,
12013    ) -> windows_core::Result<()> {
12014        unsafe {
12015            (windows_core::Interface::vtable(self).CalcVerbSet)(
12016                windows_core::Interface::as_raw(self),
12017                ulflags,
12018                ppmapiverbarray as _,
12019            )
12020            .ok()
12021        }
12022    }
12023    pub unsafe fn MakeIconFromBinary(
12024        &self,
12025        npropid: u32,
12026        phicon: *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12027    ) -> windows_core::Result<()> {
12028        unsafe {
12029            (windows_core::Interface::vtable(self).MakeIconFromBinary)(
12030                windows_core::Interface::as_raw(self),
12031                npropid,
12032                phicon as _,
12033            )
12034            .ok()
12035        }
12036    }
12037    pub unsafe fn SaveForm(&self, szfilename: *mut i8) -> windows_core::Result<()> {
12038        unsafe {
12039            (windows_core::Interface::vtable(self).SaveForm)(
12040                windows_core::Interface::as_raw(self),
12041                szfilename as _,
12042            )
12043            .ok()
12044        }
12045    }
12046    pub unsafe fn OpenFormContainer(&self) -> windows_core::Result<IMAPIFormContainer> {
12047        unsafe {
12048            let mut result__ = core::mem::zeroed();
12049            (windows_core::Interface::vtable(self).OpenFormContainer)(
12050                windows_core::Interface::as_raw(self),
12051                &mut result__,
12052            )
12053            .and_then(|| windows_core::Type::from_abi(result__))
12054        }
12055    }
12056}
12057#[repr(C)]
12058pub struct IMAPIFormInfo_Vtbl {
12059    pub base__: IMAPIProp_Vtbl,
12060    pub CalcFormPropSet: unsafe extern "system" fn(
12061        *mut core::ffi::c_void,
12062        u32,
12063        *mut *mut SMAPIFormPropArray,
12064    ) -> windows_core::HRESULT,
12065    pub CalcVerbSet: unsafe extern "system" fn(
12066        *mut core::ffi::c_void,
12067        u32,
12068        *mut *mut SMAPIVerbArray,
12069    ) -> windows_core::HRESULT,
12070    pub MakeIconFromBinary: unsafe extern "system" fn(
12071        *mut core::ffi::c_void,
12072        u32,
12073        *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12074    ) -> windows_core::HRESULT,
12075    pub SaveForm:
12076        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i8) -> windows_core::HRESULT,
12077    pub OpenFormContainer: unsafe extern "system" fn(
12078        *mut core::ffi::c_void,
12079        *mut *mut core::ffi::c_void,
12080    ) -> windows_core::HRESULT,
12081}
12082pub trait IMAPIFormInfo_Impl: IMAPIProp_Impl {
12083    fn CalcFormPropSet(
12084        &self,
12085        ulflags: u32,
12086        ppformproparray: *mut *mut SMAPIFormPropArray,
12087    ) -> windows_core::Result<()>;
12088    fn CalcVerbSet(
12089        &self,
12090        ulflags: u32,
12091        ppmapiverbarray: *mut *mut SMAPIVerbArray,
12092    ) -> windows_core::Result<()>;
12093    fn MakeIconFromBinary(
12094        &self,
12095        npropid: u32,
12096        phicon: *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12097    ) -> windows_core::Result<()>;
12098    fn SaveForm(&self, szfilename: *mut i8) -> windows_core::Result<()>;
12099    fn OpenFormContainer(&self) -> windows_core::Result<IMAPIFormContainer>;
12100}
12101impl IMAPIFormInfo_Vtbl {
12102    pub const fn new<Identity: IMAPIFormInfo_Impl, const OFFSET: isize>() -> Self {
12103        unsafe extern "system" fn CalcFormPropSet<
12104            Identity: IMAPIFormInfo_Impl,
12105            const OFFSET: isize,
12106        >(
12107            this: *mut core::ffi::c_void,
12108            ulflags: u32,
12109            ppformproparray: *mut *mut SMAPIFormPropArray,
12110        ) -> windows_core::HRESULT {
12111            unsafe {
12112                let this: &Identity =
12113                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12114                IMAPIFormInfo_Impl::CalcFormPropSet(
12115                    this,
12116                    core::mem::transmute_copy(&ulflags),
12117                    core::mem::transmute_copy(&ppformproparray),
12118                )
12119                .into()
12120            }
12121        }
12122        unsafe extern "system" fn CalcVerbSet<Identity: IMAPIFormInfo_Impl, const OFFSET: isize>(
12123            this: *mut core::ffi::c_void,
12124            ulflags: u32,
12125            ppmapiverbarray: *mut *mut SMAPIVerbArray,
12126        ) -> windows_core::HRESULT {
12127            unsafe {
12128                let this: &Identity =
12129                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12130                IMAPIFormInfo_Impl::CalcVerbSet(
12131                    this,
12132                    core::mem::transmute_copy(&ulflags),
12133                    core::mem::transmute_copy(&ppmapiverbarray),
12134                )
12135                .into()
12136            }
12137        }
12138        unsafe extern "system" fn MakeIconFromBinary<
12139            Identity: IMAPIFormInfo_Impl,
12140            const OFFSET: isize,
12141        >(
12142            this: *mut core::ffi::c_void,
12143            npropid: u32,
12144            phicon: *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12145        ) -> windows_core::HRESULT {
12146            unsafe {
12147                let this: &Identity =
12148                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12149                IMAPIFormInfo_Impl::MakeIconFromBinary(
12150                    this,
12151                    core::mem::transmute_copy(&npropid),
12152                    core::mem::transmute_copy(&phicon),
12153                )
12154                .into()
12155            }
12156        }
12157        unsafe extern "system" fn SaveForm<Identity: IMAPIFormInfo_Impl, const OFFSET: isize>(
12158            this: *mut core::ffi::c_void,
12159            szfilename: *mut i8,
12160        ) -> windows_core::HRESULT {
12161            unsafe {
12162                let this: &Identity =
12163                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12164                IMAPIFormInfo_Impl::SaveForm(this, core::mem::transmute_copy(&szfilename)).into()
12165            }
12166        }
12167        unsafe extern "system" fn OpenFormContainer<
12168            Identity: IMAPIFormInfo_Impl,
12169            const OFFSET: isize,
12170        >(
12171            this: *mut core::ffi::c_void,
12172            ppformcontainer: *mut *mut core::ffi::c_void,
12173        ) -> windows_core::HRESULT {
12174            unsafe {
12175                let this: &Identity =
12176                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12177                match IMAPIFormInfo_Impl::OpenFormContainer(this) {
12178                    Ok(ok__) => {
12179                        ppformcontainer.write(core::mem::transmute(ok__));
12180                        windows_core::HRESULT(0)
12181                    }
12182                    Err(err) => err.into(),
12183                }
12184            }
12185        }
12186        Self {
12187            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
12188            CalcFormPropSet: CalcFormPropSet::<Identity, OFFSET>,
12189            CalcVerbSet: CalcVerbSet::<Identity, OFFSET>,
12190            MakeIconFromBinary: MakeIconFromBinary::<Identity, OFFSET>,
12191            SaveForm: SaveForm::<Identity, OFFSET>,
12192            OpenFormContainer: OpenFormContainer::<Identity, OFFSET>,
12193        }
12194    }
12195    pub fn matches(iid: &windows_core::GUID) -> bool {
12196        iid == &<IMAPIFormInfo as windows_core::Interface>::IID
12197            || iid == &<IMAPIProp as windows_core::Interface>::IID
12198    }
12199}
12200impl windows_core::RuntimeName for IMAPIFormInfo {}
12201windows_core::imp::define_interface!(
12202    IMAPIFormMgr,
12203    IMAPIFormMgr_Vtbl,
12204    0x00020322_0000_0000_c000_000000000046
12205);
12206windows_core::imp::interface_hierarchy!(IMAPIFormMgr, windows_core::IUnknown);
12207impl IMAPIFormMgr {
12208    pub unsafe fn GetLastError(
12209        &self,
12210        hresult: windows_core::HRESULT,
12211        ulflags: u32,
12212        lppmapierror: *mut *mut MAPIERROR,
12213    ) -> windows_core::Result<()> {
12214        unsafe {
12215            (windows_core::Interface::vtable(self).GetLastError)(
12216                windows_core::Interface::as_raw(self),
12217                hresult,
12218                ulflags,
12219                lppmapierror as _,
12220            )
12221            .ok()
12222        }
12223    }
12224    pub unsafe fn LoadForm<P2, P5, P6, P7, P8>(
12225        &self,
12226        uluiparam: usize,
12227        ulflags: u32,
12228        lpszmessageclass: P2,
12229        ulmessagestatus: u32,
12230        ulmessageflags: u32,
12231        pfolderfocus: P5,
12232        pmessagesite: P6,
12233        pmsg: P7,
12234        pviewcontext: P8,
12235        riid: *const windows_core::GUID,
12236        ppvobj: *mut *mut core::ffi::c_void,
12237    ) -> windows_core::Result<()>
12238    where
12239        P2: windows_core::Param<windows_core::PCSTR>,
12240        P5: windows_core::Param<IMAPIFolder>,
12241        P6: windows_core::Param<IMAPIMessageSite>,
12242        P7: windows_core::Param<IMessage>,
12243        P8: windows_core::Param<IMAPIViewContext>,
12244    {
12245        unsafe {
12246            (windows_core::Interface::vtable(self).LoadForm)(
12247                windows_core::Interface::as_raw(self),
12248                uluiparam,
12249                ulflags,
12250                lpszmessageclass.param().abi(),
12251                ulmessagestatus,
12252                ulmessageflags,
12253                pfolderfocus.param().abi(),
12254                pmessagesite.param().abi(),
12255                pmsg.param().abi(),
12256                pviewcontext.param().abi(),
12257                riid,
12258                ppvobj as _,
12259            )
12260            .ok()
12261        }
12262    }
12263    pub unsafe fn ResolveMessageClass<P0, P2>(
12264        &self,
12265        szmsgclass: P0,
12266        ulflags: u32,
12267        pfolderfocus: P2,
12268    ) -> windows_core::Result<IMAPIFormInfo>
12269    where
12270        P0: windows_core::Param<windows_core::PCSTR>,
12271        P2: windows_core::Param<IMAPIFolder>,
12272    {
12273        unsafe {
12274            let mut result__ = core::mem::zeroed();
12275            (windows_core::Interface::vtable(self).ResolveMessageClass)(
12276                windows_core::Interface::as_raw(self),
12277                szmsgclass.param().abi(),
12278                ulflags,
12279                pfolderfocus.param().abi(),
12280                &mut result__,
12281            )
12282            .and_then(|| windows_core::Type::from_abi(result__))
12283        }
12284    }
12285    pub unsafe fn ResolveMultipleMessageClasses<P2>(
12286        &self,
12287        pmsgclasses: *mut SMessageClassArray,
12288        ulflags: u32,
12289        pfolderfocus: P2,
12290        pfrminfoarray: *mut *mut SMAPIFormInfoArray,
12291    ) -> windows_core::Result<()>
12292    where
12293        P2: windows_core::Param<IMAPIFolder>,
12294    {
12295        unsafe {
12296            (windows_core::Interface::vtable(self).ResolveMultipleMessageClasses)(
12297                windows_core::Interface::as_raw(self),
12298                pmsgclasses as _,
12299                ulflags,
12300                pfolderfocus.param().abi(),
12301                pfrminfoarray as _,
12302            )
12303            .ok()
12304        }
12305    }
12306    pub unsafe fn CalcFormPropSet(
12307        &self,
12308        pfrminfoarray: *mut SMAPIFormInfoArray,
12309        ulflags: u32,
12310        ppresults: *mut *mut SMAPIFormPropArray,
12311    ) -> windows_core::Result<()> {
12312        unsafe {
12313            (windows_core::Interface::vtable(self).CalcFormPropSet)(
12314                windows_core::Interface::as_raw(self),
12315                core::mem::transmute(pfrminfoarray),
12316                ulflags,
12317                ppresults as _,
12318            )
12319            .ok()
12320        }
12321    }
12322    pub unsafe fn CreateForm<P2>(
12323        &self,
12324        uluiparam: usize,
12325        ulflags: u32,
12326        pfrminfotoactivate: P2,
12327        refiidtoask: *const windows_core::GUID,
12328        ppvobj: *mut *mut core::ffi::c_void,
12329    ) -> windows_core::Result<()>
12330    where
12331        P2: windows_core::Param<IMAPIFormInfo>,
12332    {
12333        unsafe {
12334            (windows_core::Interface::vtable(self).CreateForm)(
12335                windows_core::Interface::as_raw(self),
12336                uluiparam,
12337                ulflags,
12338                pfrminfotoactivate.param().abi(),
12339                refiidtoask,
12340                ppvobj as _,
12341            )
12342            .ok()
12343        }
12344    }
12345    pub unsafe fn SelectForm<P3>(
12346        &self,
12347        uluiparam: usize,
12348        ulflags: u32,
12349        psztitle: *mut i8,
12350        pfld: P3,
12351        ppfrminforeturned: *mut Option<IMAPIFormInfo>,
12352    ) -> windows_core::Result<()>
12353    where
12354        P3: windows_core::Param<IMAPIFolder>,
12355    {
12356        unsafe {
12357            (windows_core::Interface::vtable(self).SelectForm)(
12358                windows_core::Interface::as_raw(self),
12359                uluiparam,
12360                ulflags,
12361                psztitle as _,
12362                pfld.param().abi(),
12363                core::mem::transmute(ppfrminforeturned),
12364            )
12365            .ok()
12366        }
12367    }
12368    pub unsafe fn SelectMultipleForms<P3>(
12369        &self,
12370        uluiparam: usize,
12371        ulflags: u32,
12372        psztitle: *mut i8,
12373        pfld: P3,
12374        pfrminfoarray: *mut SMAPIFormInfoArray,
12375        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
12376    ) -> windows_core::Result<()>
12377    where
12378        P3: windows_core::Param<IMAPIFolder>,
12379    {
12380        unsafe {
12381            (windows_core::Interface::vtable(self).SelectMultipleForms)(
12382                windows_core::Interface::as_raw(self),
12383                uluiparam,
12384                ulflags,
12385                psztitle as _,
12386                pfld.param().abi(),
12387                core::mem::transmute(pfrminfoarray),
12388                ppfrminfoarray as _,
12389            )
12390            .ok()
12391        }
12392    }
12393    pub unsafe fn SelectFormContainer(
12394        &self,
12395        uluiparam: usize,
12396        ulflags: u32,
12397    ) -> windows_core::Result<IMAPIFormContainer> {
12398        unsafe {
12399            let mut result__ = core::mem::zeroed();
12400            (windows_core::Interface::vtable(self).SelectFormContainer)(
12401                windows_core::Interface::as_raw(self),
12402                uluiparam,
12403                ulflags,
12404                &mut result__,
12405            )
12406            .and_then(|| windows_core::Type::from_abi(result__))
12407        }
12408    }
12409    pub unsafe fn OpenFormContainer<P1>(
12410        &self,
12411        hfrmreg: u32,
12412        lpunk: P1,
12413    ) -> windows_core::Result<IMAPIFormContainer>
12414    where
12415        P1: windows_core::Param<windows_core::IUnknown>,
12416    {
12417        unsafe {
12418            let mut result__ = core::mem::zeroed();
12419            (windows_core::Interface::vtable(self).OpenFormContainer)(
12420                windows_core::Interface::as_raw(self),
12421                hfrmreg,
12422                lpunk.param().abi(),
12423                &mut result__,
12424            )
12425            .and_then(|| windows_core::Type::from_abi(result__))
12426        }
12427    }
12428    pub unsafe fn PrepareForm<P2>(
12429        &self,
12430        uluiparam: usize,
12431        ulflags: u32,
12432        pfrminfo: P2,
12433    ) -> windows_core::Result<()>
12434    where
12435        P2: windows_core::Param<IMAPIFormInfo>,
12436    {
12437        unsafe {
12438            (windows_core::Interface::vtable(self).PrepareForm)(
12439                windows_core::Interface::as_raw(self),
12440                uluiparam,
12441                ulflags,
12442                pfrminfo.param().abi(),
12443            )
12444            .ok()
12445        }
12446    }
12447    pub unsafe fn IsInConflict<P2, P3>(
12448        &self,
12449        ulmessageflags: u32,
12450        ulmessagestatus: u32,
12451        szmessageclass: P2,
12452        pfolderfocus: P3,
12453    ) -> windows_core::Result<()>
12454    where
12455        P2: windows_core::Param<windows_core::PCSTR>,
12456        P3: windows_core::Param<IMAPIFolder>,
12457    {
12458        unsafe {
12459            (windows_core::Interface::vtable(self).IsInConflict)(
12460                windows_core::Interface::as_raw(self),
12461                ulmessageflags,
12462                ulmessagestatus,
12463                szmessageclass.param().abi(),
12464                pfolderfocus.param().abi(),
12465            )
12466            .ok()
12467        }
12468    }
12469}
12470#[repr(C)]
12471pub struct IMAPIFormMgr_Vtbl {
12472    pub base__: windows_core::IUnknown_Vtbl,
12473    pub GetLastError: unsafe extern "system" fn(
12474        *mut core::ffi::c_void,
12475        windows_core::HRESULT,
12476        u32,
12477        *mut *mut MAPIERROR,
12478    ) -> windows_core::HRESULT,
12479    pub LoadForm: unsafe extern "system" fn(
12480        *mut core::ffi::c_void,
12481        usize,
12482        u32,
12483        windows_core::PCSTR,
12484        u32,
12485        u32,
12486        *mut core::ffi::c_void,
12487        *mut core::ffi::c_void,
12488        *mut core::ffi::c_void,
12489        *mut core::ffi::c_void,
12490        *const windows_core::GUID,
12491        *mut *mut core::ffi::c_void,
12492    ) -> windows_core::HRESULT,
12493    pub ResolveMessageClass: unsafe extern "system" fn(
12494        *mut core::ffi::c_void,
12495        windows_core::PCSTR,
12496        u32,
12497        *mut core::ffi::c_void,
12498        *mut *mut core::ffi::c_void,
12499    ) -> windows_core::HRESULT,
12500    pub ResolveMultipleMessageClasses: unsafe extern "system" fn(
12501        *mut core::ffi::c_void,
12502        *mut SMessageClassArray,
12503        u32,
12504        *mut core::ffi::c_void,
12505        *mut *mut SMAPIFormInfoArray,
12506    ) -> windows_core::HRESULT,
12507    pub CalcFormPropSet: unsafe extern "system" fn(
12508        *mut core::ffi::c_void,
12509        *mut SMAPIFormInfoArray,
12510        u32,
12511        *mut *mut SMAPIFormPropArray,
12512    ) -> windows_core::HRESULT,
12513    pub CreateForm: unsafe extern "system" fn(
12514        *mut core::ffi::c_void,
12515        usize,
12516        u32,
12517        *mut core::ffi::c_void,
12518        *const windows_core::GUID,
12519        *mut *mut core::ffi::c_void,
12520    ) -> windows_core::HRESULT,
12521    pub SelectForm: unsafe extern "system" fn(
12522        *mut core::ffi::c_void,
12523        usize,
12524        u32,
12525        *mut i8,
12526        *mut core::ffi::c_void,
12527        *mut *mut core::ffi::c_void,
12528    ) -> windows_core::HRESULT,
12529    pub SelectMultipleForms: unsafe extern "system" fn(
12530        *mut core::ffi::c_void,
12531        usize,
12532        u32,
12533        *mut i8,
12534        *mut core::ffi::c_void,
12535        *mut SMAPIFormInfoArray,
12536        *mut *mut SMAPIFormInfoArray,
12537    ) -> windows_core::HRESULT,
12538    pub SelectFormContainer: unsafe extern "system" fn(
12539        *mut core::ffi::c_void,
12540        usize,
12541        u32,
12542        *mut *mut core::ffi::c_void,
12543    ) -> windows_core::HRESULT,
12544    pub OpenFormContainer: unsafe extern "system" fn(
12545        *mut core::ffi::c_void,
12546        u32,
12547        *mut core::ffi::c_void,
12548        *mut *mut core::ffi::c_void,
12549    ) -> windows_core::HRESULT,
12550    pub PrepareForm: unsafe extern "system" fn(
12551        *mut core::ffi::c_void,
12552        usize,
12553        u32,
12554        *mut core::ffi::c_void,
12555    ) -> windows_core::HRESULT,
12556    pub IsInConflict: unsafe extern "system" fn(
12557        *mut core::ffi::c_void,
12558        u32,
12559        u32,
12560        windows_core::PCSTR,
12561        *mut core::ffi::c_void,
12562    ) -> windows_core::HRESULT,
12563}
12564pub trait IMAPIFormMgr_Impl: windows_core::IUnknownImpl {
12565    fn GetLastError(
12566        &self,
12567        hresult: windows_core::HRESULT,
12568        ulflags: u32,
12569        lppmapierror: *mut *mut MAPIERROR,
12570    ) -> windows_core::Result<()>;
12571    fn LoadForm(
12572        &self,
12573        uluiparam: usize,
12574        ulflags: u32,
12575        lpszmessageclass: &windows_core::PCSTR,
12576        ulmessagestatus: u32,
12577        ulmessageflags: u32,
12578        pfolderfocus: windows_core::Ref<'_, IMAPIFolder>,
12579        pmessagesite: windows_core::Ref<'_, IMAPIMessageSite>,
12580        pmsg: windows_core::Ref<'_, IMessage>,
12581        pviewcontext: windows_core::Ref<'_, IMAPIViewContext>,
12582        riid: *const windows_core::GUID,
12583        ppvobj: *mut *mut core::ffi::c_void,
12584    ) -> windows_core::Result<()>;
12585    fn ResolveMessageClass(
12586        &self,
12587        szmsgclass: &windows_core::PCSTR,
12588        ulflags: u32,
12589        pfolderfocus: windows_core::Ref<'_, IMAPIFolder>,
12590    ) -> windows_core::Result<IMAPIFormInfo>;
12591    fn ResolveMultipleMessageClasses(
12592        &self,
12593        pmsgclasses: *mut SMessageClassArray,
12594        ulflags: u32,
12595        pfolderfocus: windows_core::Ref<'_, IMAPIFolder>,
12596        pfrminfoarray: *mut *mut SMAPIFormInfoArray,
12597    ) -> windows_core::Result<()>;
12598    fn CalcFormPropSet(
12599        &self,
12600        pfrminfoarray: *mut SMAPIFormInfoArray,
12601        ulflags: u32,
12602        ppresults: *mut *mut SMAPIFormPropArray,
12603    ) -> windows_core::Result<()>;
12604    fn CreateForm(
12605        &self,
12606        uluiparam: usize,
12607        ulflags: u32,
12608        pfrminfotoactivate: windows_core::Ref<'_, IMAPIFormInfo>,
12609        refiidtoask: *const windows_core::GUID,
12610        ppvobj: *mut *mut core::ffi::c_void,
12611    ) -> windows_core::Result<()>;
12612    fn SelectForm(
12613        &self,
12614        uluiparam: usize,
12615        ulflags: u32,
12616        psztitle: *mut i8,
12617        pfld: windows_core::Ref<'_, IMAPIFolder>,
12618        ppfrminforeturned: windows_core::OutRef<'_, IMAPIFormInfo>,
12619    ) -> windows_core::Result<()>;
12620    fn SelectMultipleForms(
12621        &self,
12622        uluiparam: usize,
12623        ulflags: u32,
12624        psztitle: *mut i8,
12625        pfld: windows_core::Ref<'_, IMAPIFolder>,
12626        pfrminfoarray: *mut SMAPIFormInfoArray,
12627        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
12628    ) -> windows_core::Result<()>;
12629    fn SelectFormContainer(
12630        &self,
12631        uluiparam: usize,
12632        ulflags: u32,
12633    ) -> windows_core::Result<IMAPIFormContainer>;
12634    fn OpenFormContainer(
12635        &self,
12636        hfrmreg: u32,
12637        lpunk: windows_core::Ref<'_, windows_core::IUnknown>,
12638    ) -> windows_core::Result<IMAPIFormContainer>;
12639    fn PrepareForm(
12640        &self,
12641        uluiparam: usize,
12642        ulflags: u32,
12643        pfrminfo: windows_core::Ref<'_, IMAPIFormInfo>,
12644    ) -> windows_core::Result<()>;
12645    fn IsInConflict(
12646        &self,
12647        ulmessageflags: u32,
12648        ulmessagestatus: u32,
12649        szmessageclass: &windows_core::PCSTR,
12650        pfolderfocus: windows_core::Ref<'_, IMAPIFolder>,
12651    ) -> windows_core::Result<()>;
12652}
12653impl IMAPIFormMgr_Vtbl {
12654    pub const fn new<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>() -> Self {
12655        unsafe extern "system" fn GetLastError<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12656            this: *mut core::ffi::c_void,
12657            hresult: windows_core::HRESULT,
12658            ulflags: u32,
12659            lppmapierror: *mut *mut MAPIERROR,
12660        ) -> windows_core::HRESULT {
12661            unsafe {
12662                let this: &Identity =
12663                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12664                IMAPIFormMgr_Impl::GetLastError(
12665                    this,
12666                    core::mem::transmute_copy(&hresult),
12667                    core::mem::transmute_copy(&ulflags),
12668                    core::mem::transmute_copy(&lppmapierror),
12669                )
12670                .into()
12671            }
12672        }
12673        unsafe extern "system" fn LoadForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12674            this: *mut core::ffi::c_void,
12675            uluiparam: usize,
12676            ulflags: u32,
12677            lpszmessageclass: windows_core::PCSTR,
12678            ulmessagestatus: u32,
12679            ulmessageflags: u32,
12680            pfolderfocus: *mut core::ffi::c_void,
12681            pmessagesite: *mut core::ffi::c_void,
12682            pmsg: *mut core::ffi::c_void,
12683            pviewcontext: *mut core::ffi::c_void,
12684            riid: *const windows_core::GUID,
12685            ppvobj: *mut *mut core::ffi::c_void,
12686        ) -> windows_core::HRESULT {
12687            unsafe {
12688                let this: &Identity =
12689                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12690                IMAPIFormMgr_Impl::LoadForm(
12691                    this,
12692                    core::mem::transmute_copy(&uluiparam),
12693                    core::mem::transmute_copy(&ulflags),
12694                    core::mem::transmute(&lpszmessageclass),
12695                    core::mem::transmute_copy(&ulmessagestatus),
12696                    core::mem::transmute_copy(&ulmessageflags),
12697                    core::mem::transmute_copy(&pfolderfocus),
12698                    core::mem::transmute_copy(&pmessagesite),
12699                    core::mem::transmute_copy(&pmsg),
12700                    core::mem::transmute_copy(&pviewcontext),
12701                    core::mem::transmute_copy(&riid),
12702                    core::mem::transmute_copy(&ppvobj),
12703                )
12704                .into()
12705            }
12706        }
12707        unsafe extern "system" fn ResolveMessageClass<
12708            Identity: IMAPIFormMgr_Impl,
12709            const OFFSET: isize,
12710        >(
12711            this: *mut core::ffi::c_void,
12712            szmsgclass: windows_core::PCSTR,
12713            ulflags: u32,
12714            pfolderfocus: *mut core::ffi::c_void,
12715            ppresult: *mut *mut core::ffi::c_void,
12716        ) -> windows_core::HRESULT {
12717            unsafe {
12718                let this: &Identity =
12719                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12720                match IMAPIFormMgr_Impl::ResolveMessageClass(
12721                    this,
12722                    core::mem::transmute(&szmsgclass),
12723                    core::mem::transmute_copy(&ulflags),
12724                    core::mem::transmute_copy(&pfolderfocus),
12725                ) {
12726                    Ok(ok__) => {
12727                        ppresult.write(core::mem::transmute(ok__));
12728                        windows_core::HRESULT(0)
12729                    }
12730                    Err(err) => err.into(),
12731                }
12732            }
12733        }
12734        unsafe extern "system" fn ResolveMultipleMessageClasses<
12735            Identity: IMAPIFormMgr_Impl,
12736            const OFFSET: isize,
12737        >(
12738            this: *mut core::ffi::c_void,
12739            pmsgclasses: *mut SMessageClassArray,
12740            ulflags: u32,
12741            pfolderfocus: *mut core::ffi::c_void,
12742            pfrminfoarray: *mut *mut SMAPIFormInfoArray,
12743        ) -> windows_core::HRESULT {
12744            unsafe {
12745                let this: &Identity =
12746                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12747                IMAPIFormMgr_Impl::ResolveMultipleMessageClasses(
12748                    this,
12749                    core::mem::transmute_copy(&pmsgclasses),
12750                    core::mem::transmute_copy(&ulflags),
12751                    core::mem::transmute_copy(&pfolderfocus),
12752                    core::mem::transmute_copy(&pfrminfoarray),
12753                )
12754                .into()
12755            }
12756        }
12757        unsafe extern "system" fn CalcFormPropSet<
12758            Identity: IMAPIFormMgr_Impl,
12759            const OFFSET: isize,
12760        >(
12761            this: *mut core::ffi::c_void,
12762            pfrminfoarray: *mut SMAPIFormInfoArray,
12763            ulflags: u32,
12764            ppresults: *mut *mut SMAPIFormPropArray,
12765        ) -> windows_core::HRESULT {
12766            unsafe {
12767                let this: &Identity =
12768                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12769                IMAPIFormMgr_Impl::CalcFormPropSet(
12770                    this,
12771                    core::mem::transmute_copy(&pfrminfoarray),
12772                    core::mem::transmute_copy(&ulflags),
12773                    core::mem::transmute_copy(&ppresults),
12774                )
12775                .into()
12776            }
12777        }
12778        unsafe extern "system" fn CreateForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12779            this: *mut core::ffi::c_void,
12780            uluiparam: usize,
12781            ulflags: u32,
12782            pfrminfotoactivate: *mut core::ffi::c_void,
12783            refiidtoask: *const windows_core::GUID,
12784            ppvobj: *mut *mut core::ffi::c_void,
12785        ) -> windows_core::HRESULT {
12786            unsafe {
12787                let this: &Identity =
12788                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12789                IMAPIFormMgr_Impl::CreateForm(
12790                    this,
12791                    core::mem::transmute_copy(&uluiparam),
12792                    core::mem::transmute_copy(&ulflags),
12793                    core::mem::transmute_copy(&pfrminfotoactivate),
12794                    core::mem::transmute_copy(&refiidtoask),
12795                    core::mem::transmute_copy(&ppvobj),
12796                )
12797                .into()
12798            }
12799        }
12800        unsafe extern "system" fn SelectForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12801            this: *mut core::ffi::c_void,
12802            uluiparam: usize,
12803            ulflags: u32,
12804            psztitle: *mut i8,
12805            pfld: *mut core::ffi::c_void,
12806            ppfrminforeturned: *mut *mut core::ffi::c_void,
12807        ) -> windows_core::HRESULT {
12808            unsafe {
12809                let this: &Identity =
12810                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12811                IMAPIFormMgr_Impl::SelectForm(
12812                    this,
12813                    core::mem::transmute_copy(&uluiparam),
12814                    core::mem::transmute_copy(&ulflags),
12815                    core::mem::transmute_copy(&psztitle),
12816                    core::mem::transmute_copy(&pfld),
12817                    core::mem::transmute_copy(&ppfrminforeturned),
12818                )
12819                .into()
12820            }
12821        }
12822        unsafe extern "system" fn SelectMultipleForms<
12823            Identity: IMAPIFormMgr_Impl,
12824            const OFFSET: isize,
12825        >(
12826            this: *mut core::ffi::c_void,
12827            uluiparam: usize,
12828            ulflags: u32,
12829            psztitle: *mut i8,
12830            pfld: *mut core::ffi::c_void,
12831            pfrminfoarray: *mut SMAPIFormInfoArray,
12832            ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
12833        ) -> windows_core::HRESULT {
12834            unsafe {
12835                let this: &Identity =
12836                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12837                IMAPIFormMgr_Impl::SelectMultipleForms(
12838                    this,
12839                    core::mem::transmute_copy(&uluiparam),
12840                    core::mem::transmute_copy(&ulflags),
12841                    core::mem::transmute_copy(&psztitle),
12842                    core::mem::transmute_copy(&pfld),
12843                    core::mem::transmute_copy(&pfrminfoarray),
12844                    core::mem::transmute_copy(&ppfrminfoarray),
12845                )
12846                .into()
12847            }
12848        }
12849        unsafe extern "system" fn SelectFormContainer<
12850            Identity: IMAPIFormMgr_Impl,
12851            const OFFSET: isize,
12852        >(
12853            this: *mut core::ffi::c_void,
12854            uluiparam: usize,
12855            ulflags: u32,
12856            lppfcnt: *mut *mut core::ffi::c_void,
12857        ) -> windows_core::HRESULT {
12858            unsafe {
12859                let this: &Identity =
12860                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12861                match IMAPIFormMgr_Impl::SelectFormContainer(
12862                    this,
12863                    core::mem::transmute_copy(&uluiparam),
12864                    core::mem::transmute_copy(&ulflags),
12865                ) {
12866                    Ok(ok__) => {
12867                        lppfcnt.write(core::mem::transmute(ok__));
12868                        windows_core::HRESULT(0)
12869                    }
12870                    Err(err) => err.into(),
12871                }
12872            }
12873        }
12874        unsafe extern "system" fn OpenFormContainer<
12875            Identity: IMAPIFormMgr_Impl,
12876            const OFFSET: isize,
12877        >(
12878            this: *mut core::ffi::c_void,
12879            hfrmreg: u32,
12880            lpunk: *mut core::ffi::c_void,
12881            lppfcnt: *mut *mut core::ffi::c_void,
12882        ) -> windows_core::HRESULT {
12883            unsafe {
12884                let this: &Identity =
12885                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12886                match IMAPIFormMgr_Impl::OpenFormContainer(
12887                    this,
12888                    core::mem::transmute_copy(&hfrmreg),
12889                    core::mem::transmute_copy(&lpunk),
12890                ) {
12891                    Ok(ok__) => {
12892                        lppfcnt.write(core::mem::transmute(ok__));
12893                        windows_core::HRESULT(0)
12894                    }
12895                    Err(err) => err.into(),
12896                }
12897            }
12898        }
12899        unsafe extern "system" fn PrepareForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12900            this: *mut core::ffi::c_void,
12901            uluiparam: usize,
12902            ulflags: u32,
12903            pfrminfo: *mut core::ffi::c_void,
12904        ) -> windows_core::HRESULT {
12905            unsafe {
12906                let this: &Identity =
12907                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12908                IMAPIFormMgr_Impl::PrepareForm(
12909                    this,
12910                    core::mem::transmute_copy(&uluiparam),
12911                    core::mem::transmute_copy(&ulflags),
12912                    core::mem::transmute_copy(&pfrminfo),
12913                )
12914                .into()
12915            }
12916        }
12917        unsafe extern "system" fn IsInConflict<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12918            this: *mut core::ffi::c_void,
12919            ulmessageflags: u32,
12920            ulmessagestatus: u32,
12921            szmessageclass: windows_core::PCSTR,
12922            pfolderfocus: *mut core::ffi::c_void,
12923        ) -> windows_core::HRESULT {
12924            unsafe {
12925                let this: &Identity =
12926                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12927                IMAPIFormMgr_Impl::IsInConflict(
12928                    this,
12929                    core::mem::transmute_copy(&ulmessageflags),
12930                    core::mem::transmute_copy(&ulmessagestatus),
12931                    core::mem::transmute(&szmessageclass),
12932                    core::mem::transmute_copy(&pfolderfocus),
12933                )
12934                .into()
12935            }
12936        }
12937        Self {
12938            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12939            GetLastError: GetLastError::<Identity, OFFSET>,
12940            LoadForm: LoadForm::<Identity, OFFSET>,
12941            ResolveMessageClass: ResolveMessageClass::<Identity, OFFSET>,
12942            ResolveMultipleMessageClasses: ResolveMultipleMessageClasses::<Identity, OFFSET>,
12943            CalcFormPropSet: CalcFormPropSet::<Identity, OFFSET>,
12944            CreateForm: CreateForm::<Identity, OFFSET>,
12945            SelectForm: SelectForm::<Identity, OFFSET>,
12946            SelectMultipleForms: SelectMultipleForms::<Identity, OFFSET>,
12947            SelectFormContainer: SelectFormContainer::<Identity, OFFSET>,
12948            OpenFormContainer: OpenFormContainer::<Identity, OFFSET>,
12949            PrepareForm: PrepareForm::<Identity, OFFSET>,
12950            IsInConflict: IsInConflict::<Identity, OFFSET>,
12951        }
12952    }
12953    pub fn matches(iid: &windows_core::GUID) -> bool {
12954        iid == &<IMAPIFormMgr as windows_core::Interface>::IID
12955    }
12956}
12957impl windows_core::RuntimeName for IMAPIFormMgr {}
12958windows_core::imp::define_interface!(
12959    IMAPIMessageSite,
12960    IMAPIMessageSite_Vtbl,
12961    0x00020370_0000_0000_c000_000000000046
12962);
12963windows_core::imp::interface_hierarchy!(IMAPIMessageSite, windows_core::IUnknown);
12964impl IMAPIMessageSite {
12965    pub unsafe fn GetLastError(
12966        &self,
12967        hresult: windows_core::HRESULT,
12968        ulflags: u32,
12969        lppmapierror: *mut *mut MAPIERROR,
12970    ) -> windows_core::Result<()> {
12971        unsafe {
12972            (windows_core::Interface::vtable(self).GetLastError)(
12973                windows_core::Interface::as_raw(self),
12974                hresult,
12975                ulflags,
12976                lppmapierror as _,
12977            )
12978            .ok()
12979        }
12980    }
12981    pub unsafe fn GetSession(&self) -> windows_core::Result<IMAPISession> {
12982        unsafe {
12983            let mut result__ = core::mem::zeroed();
12984            (windows_core::Interface::vtable(self).GetSession)(
12985                windows_core::Interface::as_raw(self),
12986                &mut result__,
12987            )
12988            .and_then(|| windows_core::Type::from_abi(result__))
12989        }
12990    }
12991    pub unsafe fn GetStore(&self) -> windows_core::Result<IMsgStore> {
12992        unsafe {
12993            let mut result__ = core::mem::zeroed();
12994            (windows_core::Interface::vtable(self).GetStore)(
12995                windows_core::Interface::as_raw(self),
12996                &mut result__,
12997            )
12998            .and_then(|| windows_core::Type::from_abi(result__))
12999        }
13000    }
13001    pub unsafe fn GetFolder(&self) -> windows_core::Result<IMAPIFolder> {
13002        unsafe {
13003            let mut result__ = core::mem::zeroed();
13004            (windows_core::Interface::vtable(self).GetFolder)(
13005                windows_core::Interface::as_raw(self),
13006                &mut result__,
13007            )
13008            .and_then(|| windows_core::Type::from_abi(result__))
13009        }
13010    }
13011    pub unsafe fn GetMessageA(&self) -> windows_core::Result<IMessage> {
13012        unsafe {
13013            let mut result__ = core::mem::zeroed();
13014            (windows_core::Interface::vtable(self).GetMessageA)(
13015                windows_core::Interface::as_raw(self),
13016                &mut result__,
13017            )
13018            .and_then(|| windows_core::Type::from_abi(result__))
13019        }
13020    }
13021    pub unsafe fn GetFormManager(&self) -> windows_core::Result<IMAPIFormMgr> {
13022        unsafe {
13023            let mut result__ = core::mem::zeroed();
13024            (windows_core::Interface::vtable(self).GetFormManager)(
13025                windows_core::Interface::as_raw(self),
13026                &mut result__,
13027            )
13028            .and_then(|| windows_core::Type::from_abi(result__))
13029        }
13030    }
13031    pub unsafe fn NewMessage<P1, P2>(
13032        &self,
13033        fcomposeinfolder: u32,
13034        pfolderfocus: P1,
13035        ppersistmessage: P2,
13036        ppmessage: *mut Option<IMessage>,
13037        ppmessagesite: *mut Option<IMAPIMessageSite>,
13038        ppviewcontext: *mut Option<IMAPIViewContext>,
13039    ) -> windows_core::Result<()>
13040    where
13041        P1: windows_core::Param<IMAPIFolder>,
13042        P2: windows_core::Param<IPersistMessage>,
13043    {
13044        unsafe {
13045            (windows_core::Interface::vtable(self).NewMessage)(
13046                windows_core::Interface::as_raw(self),
13047                fcomposeinfolder,
13048                pfolderfocus.param().abi(),
13049                ppersistmessage.param().abi(),
13050                core::mem::transmute(ppmessage),
13051                core::mem::transmute(ppmessagesite),
13052                core::mem::transmute(ppviewcontext),
13053            )
13054            .ok()
13055        }
13056    }
13057    pub unsafe fn CopyMessage<P0>(&self, pfolderdestination: P0) -> windows_core::Result<()>
13058    where
13059        P0: windows_core::Param<IMAPIFolder>,
13060    {
13061        unsafe {
13062            (windows_core::Interface::vtable(self).CopyMessage)(
13063                windows_core::Interface::as_raw(self),
13064                pfolderdestination.param().abi(),
13065            )
13066            .ok()
13067        }
13068    }
13069    pub unsafe fn MoveMessage<P0, P1>(
13070        &self,
13071        pfolderdestination: P0,
13072        pviewcontext: P1,
13073        prcposrect: *mut windows::Win32::Foundation::RECT,
13074    ) -> windows_core::Result<()>
13075    where
13076        P0: windows_core::Param<IMAPIFolder>,
13077        P1: windows_core::Param<IMAPIViewContext>,
13078    {
13079        unsafe {
13080            (windows_core::Interface::vtable(self).MoveMessage)(
13081                windows_core::Interface::as_raw(self),
13082                pfolderdestination.param().abi(),
13083                pviewcontext.param().abi(),
13084                prcposrect as _,
13085            )
13086            .ok()
13087        }
13088    }
13089    pub unsafe fn DeleteMessage<P0>(
13090        &self,
13091        pviewcontext: P0,
13092        prcposrect: *mut windows::Win32::Foundation::RECT,
13093    ) -> windows_core::Result<()>
13094    where
13095        P0: windows_core::Param<IMAPIViewContext>,
13096    {
13097        unsafe {
13098            (windows_core::Interface::vtable(self).DeleteMessage)(
13099                windows_core::Interface::as_raw(self),
13100                pviewcontext.param().abi(),
13101                prcposrect as _,
13102            )
13103            .ok()
13104        }
13105    }
13106    pub unsafe fn SaveMessage(&self) -> windows_core::Result<()> {
13107        unsafe {
13108            (windows_core::Interface::vtable(self).SaveMessage)(windows_core::Interface::as_raw(
13109                self,
13110            ))
13111            .ok()
13112        }
13113    }
13114    pub unsafe fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()> {
13115        unsafe {
13116            (windows_core::Interface::vtable(self).SubmitMessage)(
13117                windows_core::Interface::as_raw(self),
13118                ulflags,
13119            )
13120            .ok()
13121        }
13122    }
13123    pub unsafe fn GetSiteStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()> {
13124        unsafe {
13125            (windows_core::Interface::vtable(self).GetSiteStatus)(
13126                windows_core::Interface::as_raw(self),
13127                lpulstatus as _,
13128            )
13129            .ok()
13130        }
13131    }
13132}
13133#[repr(C)]
13134pub struct IMAPIMessageSite_Vtbl {
13135    pub base__: windows_core::IUnknown_Vtbl,
13136    pub GetLastError: unsafe extern "system" fn(
13137        *mut core::ffi::c_void,
13138        windows_core::HRESULT,
13139        u32,
13140        *mut *mut MAPIERROR,
13141    ) -> windows_core::HRESULT,
13142    pub GetSession: unsafe extern "system" fn(
13143        *mut core::ffi::c_void,
13144        *mut *mut core::ffi::c_void,
13145    ) -> windows_core::HRESULT,
13146    pub GetStore: unsafe extern "system" fn(
13147        *mut core::ffi::c_void,
13148        *mut *mut core::ffi::c_void,
13149    ) -> windows_core::HRESULT,
13150    pub GetFolder: unsafe extern "system" fn(
13151        *mut core::ffi::c_void,
13152        *mut *mut core::ffi::c_void,
13153    ) -> windows_core::HRESULT,
13154    pub GetMessageA: unsafe extern "system" fn(
13155        *mut core::ffi::c_void,
13156        *mut *mut core::ffi::c_void,
13157    ) -> windows_core::HRESULT,
13158    pub GetFormManager: unsafe extern "system" fn(
13159        *mut core::ffi::c_void,
13160        *mut *mut core::ffi::c_void,
13161    ) -> windows_core::HRESULT,
13162    pub NewMessage: unsafe extern "system" fn(
13163        *mut core::ffi::c_void,
13164        u32,
13165        *mut core::ffi::c_void,
13166        *mut core::ffi::c_void,
13167        *mut *mut core::ffi::c_void,
13168        *mut *mut core::ffi::c_void,
13169        *mut *mut core::ffi::c_void,
13170    ) -> windows_core::HRESULT,
13171    pub CopyMessage: unsafe extern "system" fn(
13172        *mut core::ffi::c_void,
13173        *mut core::ffi::c_void,
13174    ) -> windows_core::HRESULT,
13175    pub MoveMessage: unsafe extern "system" fn(
13176        *mut core::ffi::c_void,
13177        *mut core::ffi::c_void,
13178        *mut core::ffi::c_void,
13179        *mut windows::Win32::Foundation::RECT,
13180    ) -> windows_core::HRESULT,
13181    pub DeleteMessage: unsafe extern "system" fn(
13182        *mut core::ffi::c_void,
13183        *mut core::ffi::c_void,
13184        *mut windows::Win32::Foundation::RECT,
13185    ) -> windows_core::HRESULT,
13186    pub SaveMessage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
13187    pub SubmitMessage:
13188        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
13189    pub GetSiteStatus:
13190        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13191}
13192pub trait IMAPIMessageSite_Impl: windows_core::IUnknownImpl {
13193    fn GetLastError(
13194        &self,
13195        hresult: windows_core::HRESULT,
13196        ulflags: u32,
13197        lppmapierror: *mut *mut MAPIERROR,
13198    ) -> windows_core::Result<()>;
13199    fn GetSession(&self) -> windows_core::Result<IMAPISession>;
13200    fn GetStore(&self) -> windows_core::Result<IMsgStore>;
13201    fn GetFolder(&self) -> windows_core::Result<IMAPIFolder>;
13202    fn GetMessageA(&self) -> windows_core::Result<IMessage>;
13203    fn GetFormManager(&self) -> windows_core::Result<IMAPIFormMgr>;
13204    fn NewMessage(
13205        &self,
13206        fcomposeinfolder: u32,
13207        pfolderfocus: windows_core::Ref<'_, IMAPIFolder>,
13208        ppersistmessage: windows_core::Ref<'_, IPersistMessage>,
13209        ppmessage: windows_core::OutRef<'_, IMessage>,
13210        ppmessagesite: windows_core::OutRef<'_, IMAPIMessageSite>,
13211        ppviewcontext: windows_core::OutRef<'_, IMAPIViewContext>,
13212    ) -> windows_core::Result<()>;
13213    fn CopyMessage(
13214        &self,
13215        pfolderdestination: windows_core::Ref<'_, IMAPIFolder>,
13216    ) -> windows_core::Result<()>;
13217    fn MoveMessage(
13218        &self,
13219        pfolderdestination: windows_core::Ref<'_, IMAPIFolder>,
13220        pviewcontext: windows_core::Ref<'_, IMAPIViewContext>,
13221        prcposrect: *mut windows::Win32::Foundation::RECT,
13222    ) -> windows_core::Result<()>;
13223    fn DeleteMessage(
13224        &self,
13225        pviewcontext: windows_core::Ref<'_, IMAPIViewContext>,
13226        prcposrect: *mut windows::Win32::Foundation::RECT,
13227    ) -> windows_core::Result<()>;
13228    fn SaveMessage(&self) -> windows_core::Result<()>;
13229    fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()>;
13230    fn GetSiteStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()>;
13231}
13232impl IMAPIMessageSite_Vtbl {
13233    pub const fn new<Identity: IMAPIMessageSite_Impl, const OFFSET: isize>() -> Self {
13234        unsafe extern "system" fn GetLastError<
13235            Identity: IMAPIMessageSite_Impl,
13236            const OFFSET: isize,
13237        >(
13238            this: *mut core::ffi::c_void,
13239            hresult: windows_core::HRESULT,
13240            ulflags: u32,
13241            lppmapierror: *mut *mut MAPIERROR,
13242        ) -> windows_core::HRESULT {
13243            unsafe {
13244                let this: &Identity =
13245                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13246                IMAPIMessageSite_Impl::GetLastError(
13247                    this,
13248                    core::mem::transmute_copy(&hresult),
13249                    core::mem::transmute_copy(&ulflags),
13250                    core::mem::transmute_copy(&lppmapierror),
13251                )
13252                .into()
13253            }
13254        }
13255        unsafe extern "system" fn GetSession<
13256            Identity: IMAPIMessageSite_Impl,
13257            const OFFSET: isize,
13258        >(
13259            this: *mut core::ffi::c_void,
13260            ppsession: *mut *mut core::ffi::c_void,
13261        ) -> windows_core::HRESULT {
13262            unsafe {
13263                let this: &Identity =
13264                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13265                match IMAPIMessageSite_Impl::GetSession(this) {
13266                    Ok(ok__) => {
13267                        ppsession.write(core::mem::transmute(ok__));
13268                        windows_core::HRESULT(0)
13269                    }
13270                    Err(err) => err.into(),
13271                }
13272            }
13273        }
13274        unsafe extern "system" fn GetStore<Identity: IMAPIMessageSite_Impl, const OFFSET: isize>(
13275            this: *mut core::ffi::c_void,
13276            ppstore: *mut *mut core::ffi::c_void,
13277        ) -> windows_core::HRESULT {
13278            unsafe {
13279                let this: &Identity =
13280                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13281                match IMAPIMessageSite_Impl::GetStore(this) {
13282                    Ok(ok__) => {
13283                        ppstore.write(core::mem::transmute(ok__));
13284                        windows_core::HRESULT(0)
13285                    }
13286                    Err(err) => err.into(),
13287                }
13288            }
13289        }
13290        unsafe extern "system" fn GetFolder<
13291            Identity: IMAPIMessageSite_Impl,
13292            const OFFSET: isize,
13293        >(
13294            this: *mut core::ffi::c_void,
13295            ppfolder: *mut *mut core::ffi::c_void,
13296        ) -> windows_core::HRESULT {
13297            unsafe {
13298                let this: &Identity =
13299                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13300                match IMAPIMessageSite_Impl::GetFolder(this) {
13301                    Ok(ok__) => {
13302                        ppfolder.write(core::mem::transmute(ok__));
13303                        windows_core::HRESULT(0)
13304                    }
13305                    Err(err) => err.into(),
13306                }
13307            }
13308        }
13309        unsafe extern "system" fn GetMessageA<
13310            Identity: IMAPIMessageSite_Impl,
13311            const OFFSET: isize,
13312        >(
13313            this: *mut core::ffi::c_void,
13314            ppmsg: *mut *mut core::ffi::c_void,
13315        ) -> windows_core::HRESULT {
13316            unsafe {
13317                let this: &Identity =
13318                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13319                match IMAPIMessageSite_Impl::GetMessageA(this) {
13320                    Ok(ok__) => {
13321                        ppmsg.write(core::mem::transmute(ok__));
13322                        windows_core::HRESULT(0)
13323                    }
13324                    Err(err) => err.into(),
13325                }
13326            }
13327        }
13328        unsafe extern "system" fn GetFormManager<
13329            Identity: IMAPIMessageSite_Impl,
13330            const OFFSET: isize,
13331        >(
13332            this: *mut core::ffi::c_void,
13333            ppformmgr: *mut *mut core::ffi::c_void,
13334        ) -> windows_core::HRESULT {
13335            unsafe {
13336                let this: &Identity =
13337                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13338                match IMAPIMessageSite_Impl::GetFormManager(this) {
13339                    Ok(ok__) => {
13340                        ppformmgr.write(core::mem::transmute(ok__));
13341                        windows_core::HRESULT(0)
13342                    }
13343                    Err(err) => err.into(),
13344                }
13345            }
13346        }
13347        unsafe extern "system" fn NewMessage<
13348            Identity: IMAPIMessageSite_Impl,
13349            const OFFSET: isize,
13350        >(
13351            this: *mut core::ffi::c_void,
13352            fcomposeinfolder: u32,
13353            pfolderfocus: *mut core::ffi::c_void,
13354            ppersistmessage: *mut core::ffi::c_void,
13355            ppmessage: *mut *mut core::ffi::c_void,
13356            ppmessagesite: *mut *mut core::ffi::c_void,
13357            ppviewcontext: *mut *mut core::ffi::c_void,
13358        ) -> windows_core::HRESULT {
13359            unsafe {
13360                let this: &Identity =
13361                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13362                IMAPIMessageSite_Impl::NewMessage(
13363                    this,
13364                    core::mem::transmute_copy(&fcomposeinfolder),
13365                    core::mem::transmute_copy(&pfolderfocus),
13366                    core::mem::transmute_copy(&ppersistmessage),
13367                    core::mem::transmute_copy(&ppmessage),
13368                    core::mem::transmute_copy(&ppmessagesite),
13369                    core::mem::transmute_copy(&ppviewcontext),
13370                )
13371                .into()
13372            }
13373        }
13374        unsafe extern "system" fn CopyMessage<
13375            Identity: IMAPIMessageSite_Impl,
13376            const OFFSET: isize,
13377        >(
13378            this: *mut core::ffi::c_void,
13379            pfolderdestination: *mut core::ffi::c_void,
13380        ) -> windows_core::HRESULT {
13381            unsafe {
13382                let this: &Identity =
13383                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13384                IMAPIMessageSite_Impl::CopyMessage(
13385                    this,
13386                    core::mem::transmute_copy(&pfolderdestination),
13387                )
13388                .into()
13389            }
13390        }
13391        unsafe extern "system" fn MoveMessage<
13392            Identity: IMAPIMessageSite_Impl,
13393            const OFFSET: isize,
13394        >(
13395            this: *mut core::ffi::c_void,
13396            pfolderdestination: *mut core::ffi::c_void,
13397            pviewcontext: *mut core::ffi::c_void,
13398            prcposrect: *mut windows::Win32::Foundation::RECT,
13399        ) -> windows_core::HRESULT {
13400            unsafe {
13401                let this: &Identity =
13402                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13403                IMAPIMessageSite_Impl::MoveMessage(
13404                    this,
13405                    core::mem::transmute_copy(&pfolderdestination),
13406                    core::mem::transmute_copy(&pviewcontext),
13407                    core::mem::transmute_copy(&prcposrect),
13408                )
13409                .into()
13410            }
13411        }
13412        unsafe extern "system" fn DeleteMessage<
13413            Identity: IMAPIMessageSite_Impl,
13414            const OFFSET: isize,
13415        >(
13416            this: *mut core::ffi::c_void,
13417            pviewcontext: *mut core::ffi::c_void,
13418            prcposrect: *mut windows::Win32::Foundation::RECT,
13419        ) -> windows_core::HRESULT {
13420            unsafe {
13421                let this: &Identity =
13422                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13423                IMAPIMessageSite_Impl::DeleteMessage(
13424                    this,
13425                    core::mem::transmute_copy(&pviewcontext),
13426                    core::mem::transmute_copy(&prcposrect),
13427                )
13428                .into()
13429            }
13430        }
13431        unsafe extern "system" fn SaveMessage<
13432            Identity: IMAPIMessageSite_Impl,
13433            const OFFSET: isize,
13434        >(
13435            this: *mut core::ffi::c_void,
13436        ) -> windows_core::HRESULT {
13437            unsafe {
13438                let this: &Identity =
13439                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13440                IMAPIMessageSite_Impl::SaveMessage(this).into()
13441            }
13442        }
13443        unsafe extern "system" fn SubmitMessage<
13444            Identity: IMAPIMessageSite_Impl,
13445            const OFFSET: isize,
13446        >(
13447            this: *mut core::ffi::c_void,
13448            ulflags: u32,
13449        ) -> windows_core::HRESULT {
13450            unsafe {
13451                let this: &Identity =
13452                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13453                IMAPIMessageSite_Impl::SubmitMessage(this, core::mem::transmute_copy(&ulflags))
13454                    .into()
13455            }
13456        }
13457        unsafe extern "system" fn GetSiteStatus<
13458            Identity: IMAPIMessageSite_Impl,
13459            const OFFSET: isize,
13460        >(
13461            this: *mut core::ffi::c_void,
13462            lpulstatus: *mut u32,
13463        ) -> windows_core::HRESULT {
13464            unsafe {
13465                let this: &Identity =
13466                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13467                IMAPIMessageSite_Impl::GetSiteStatus(this, core::mem::transmute_copy(&lpulstatus))
13468                    .into()
13469            }
13470        }
13471        Self {
13472            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13473            GetLastError: GetLastError::<Identity, OFFSET>,
13474            GetSession: GetSession::<Identity, OFFSET>,
13475            GetStore: GetStore::<Identity, OFFSET>,
13476            GetFolder: GetFolder::<Identity, OFFSET>,
13477            GetMessageA: GetMessageA::<Identity, OFFSET>,
13478            GetFormManager: GetFormManager::<Identity, OFFSET>,
13479            NewMessage: NewMessage::<Identity, OFFSET>,
13480            CopyMessage: CopyMessage::<Identity, OFFSET>,
13481            MoveMessage: MoveMessage::<Identity, OFFSET>,
13482            DeleteMessage: DeleteMessage::<Identity, OFFSET>,
13483            SaveMessage: SaveMessage::<Identity, OFFSET>,
13484            SubmitMessage: SubmitMessage::<Identity, OFFSET>,
13485            GetSiteStatus: GetSiteStatus::<Identity, OFFSET>,
13486        }
13487    }
13488    pub fn matches(iid: &windows_core::GUID) -> bool {
13489        iid == &<IMAPIMessageSite as windows_core::Interface>::IID
13490    }
13491}
13492impl windows_core::RuntimeName for IMAPIMessageSite {}
13493windows_core::imp::define_interface!(
13494    IMAPIProgress,
13495    IMAPIProgress_Vtbl,
13496    0x0002031f_0000_0000_c000_000000000046
13497);
13498windows_core::imp::interface_hierarchy!(IMAPIProgress, windows_core::IUnknown);
13499impl IMAPIProgress {
13500    pub unsafe fn Progress(
13501        &self,
13502        ulvalue: u32,
13503        ulcount: u32,
13504        ultotal: u32,
13505    ) -> windows_core::Result<()> {
13506        unsafe {
13507            (windows_core::Interface::vtable(self).Progress)(
13508                windows_core::Interface::as_raw(self),
13509                ulvalue,
13510                ulcount,
13511                ultotal,
13512            )
13513            .ok()
13514        }
13515    }
13516    pub unsafe fn GetFlags(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
13517        unsafe {
13518            (windows_core::Interface::vtable(self).GetFlags)(
13519                windows_core::Interface::as_raw(self),
13520                lpulflags as _,
13521            )
13522            .ok()
13523        }
13524    }
13525    pub unsafe fn GetMax(&self, lpulmax: *mut u32) -> windows_core::Result<()> {
13526        unsafe {
13527            (windows_core::Interface::vtable(self).GetMax)(
13528                windows_core::Interface::as_raw(self),
13529                lpulmax as _,
13530            )
13531            .ok()
13532        }
13533    }
13534    pub unsafe fn GetMin(&self, lpulmin: *mut u32) -> windows_core::Result<()> {
13535        unsafe {
13536            (windows_core::Interface::vtable(self).GetMin)(
13537                windows_core::Interface::as_raw(self),
13538                lpulmin as _,
13539            )
13540            .ok()
13541        }
13542    }
13543    pub unsafe fn SetLimits(
13544        &self,
13545        lpulmin: *mut u32,
13546        lpulmax: *mut u32,
13547        lpulflags: *mut u32,
13548    ) -> windows_core::Result<()> {
13549        unsafe {
13550            (windows_core::Interface::vtable(self).SetLimits)(
13551                windows_core::Interface::as_raw(self),
13552                lpulmin as _,
13553                lpulmax as _,
13554                lpulflags as _,
13555            )
13556            .ok()
13557        }
13558    }
13559}
13560#[repr(C)]
13561pub struct IMAPIProgress_Vtbl {
13562    pub base__: windows_core::IUnknown_Vtbl,
13563    pub Progress:
13564        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
13565    pub GetFlags:
13566        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13567    pub GetMax:
13568        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13569    pub GetMin:
13570        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13571    pub SetLimits: unsafe extern "system" fn(
13572        *mut core::ffi::c_void,
13573        *mut u32,
13574        *mut u32,
13575        *mut u32,
13576    ) -> windows_core::HRESULT,
13577}
13578pub trait IMAPIProgress_Impl: windows_core::IUnknownImpl {
13579    fn Progress(&self, ulvalue: u32, ulcount: u32, ultotal: u32) -> windows_core::Result<()>;
13580    fn GetFlags(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
13581    fn GetMax(&self, lpulmax: *mut u32) -> windows_core::Result<()>;
13582    fn GetMin(&self, lpulmin: *mut u32) -> windows_core::Result<()>;
13583    fn SetLimits(
13584        &self,
13585        lpulmin: *mut u32,
13586        lpulmax: *mut u32,
13587        lpulflags: *mut u32,
13588    ) -> windows_core::Result<()>;
13589}
13590impl IMAPIProgress_Vtbl {
13591    pub const fn new<Identity: IMAPIProgress_Impl, const OFFSET: isize>() -> Self {
13592        unsafe extern "system" fn Progress<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13593            this: *mut core::ffi::c_void,
13594            ulvalue: u32,
13595            ulcount: u32,
13596            ultotal: u32,
13597        ) -> windows_core::HRESULT {
13598            unsafe {
13599                let this: &Identity =
13600                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13601                IMAPIProgress_Impl::Progress(
13602                    this,
13603                    core::mem::transmute_copy(&ulvalue),
13604                    core::mem::transmute_copy(&ulcount),
13605                    core::mem::transmute_copy(&ultotal),
13606                )
13607                .into()
13608            }
13609        }
13610        unsafe extern "system" fn GetFlags<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13611            this: *mut core::ffi::c_void,
13612            lpulflags: *mut u32,
13613        ) -> windows_core::HRESULT {
13614            unsafe {
13615                let this: &Identity =
13616                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13617                IMAPIProgress_Impl::GetFlags(this, core::mem::transmute_copy(&lpulflags)).into()
13618            }
13619        }
13620        unsafe extern "system" fn GetMax<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13621            this: *mut core::ffi::c_void,
13622            lpulmax: *mut u32,
13623        ) -> windows_core::HRESULT {
13624            unsafe {
13625                let this: &Identity =
13626                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13627                IMAPIProgress_Impl::GetMax(this, core::mem::transmute_copy(&lpulmax)).into()
13628            }
13629        }
13630        unsafe extern "system" fn GetMin<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13631            this: *mut core::ffi::c_void,
13632            lpulmin: *mut u32,
13633        ) -> windows_core::HRESULT {
13634            unsafe {
13635                let this: &Identity =
13636                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13637                IMAPIProgress_Impl::GetMin(this, core::mem::transmute_copy(&lpulmin)).into()
13638            }
13639        }
13640        unsafe extern "system" fn SetLimits<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13641            this: *mut core::ffi::c_void,
13642            lpulmin: *mut u32,
13643            lpulmax: *mut u32,
13644            lpulflags: *mut u32,
13645        ) -> windows_core::HRESULT {
13646            unsafe {
13647                let this: &Identity =
13648                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13649                IMAPIProgress_Impl::SetLimits(
13650                    this,
13651                    core::mem::transmute_copy(&lpulmin),
13652                    core::mem::transmute_copy(&lpulmax),
13653                    core::mem::transmute_copy(&lpulflags),
13654                )
13655                .into()
13656            }
13657        }
13658        Self {
13659            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13660            Progress: Progress::<Identity, OFFSET>,
13661            GetFlags: GetFlags::<Identity, OFFSET>,
13662            GetMax: GetMax::<Identity, OFFSET>,
13663            GetMin: GetMin::<Identity, OFFSET>,
13664            SetLimits: SetLimits::<Identity, OFFSET>,
13665        }
13666    }
13667    pub fn matches(iid: &windows_core::GUID) -> bool {
13668        iid == &<IMAPIProgress as windows_core::Interface>::IID
13669    }
13670}
13671impl windows_core::RuntimeName for IMAPIProgress {}
13672windows_core::imp::define_interface!(
13673    IMAPIProp,
13674    IMAPIProp_Vtbl,
13675    0x00020303_0000_0000_c000_000000000046
13676);
13677windows_core::imp::interface_hierarchy!(IMAPIProp, windows_core::IUnknown);
13678impl IMAPIProp {
13679    pub unsafe fn GetLastError(
13680        &self,
13681        hresult: windows_core::HRESULT,
13682        ulflags: u32,
13683        lppmapierror: *mut *mut MAPIERROR,
13684    ) -> windows_core::Result<()> {
13685        unsafe {
13686            (windows_core::Interface::vtable(self).GetLastError)(
13687                windows_core::Interface::as_raw(self),
13688                hresult,
13689                ulflags,
13690                lppmapierror as _,
13691            )
13692            .ok()
13693        }
13694    }
13695    pub unsafe fn SaveChanges(&self, ulflags: u32) -> windows_core::Result<()> {
13696        unsafe {
13697            (windows_core::Interface::vtable(self).SaveChanges)(
13698                windows_core::Interface::as_raw(self),
13699                ulflags,
13700            )
13701            .ok()
13702        }
13703    }
13704    pub unsafe fn GetProps(
13705        &self,
13706        lpproptagarray: *mut SPropTagArray,
13707        ulflags: u32,
13708        lpcvalues: *mut u32,
13709        lppproparray: *mut *mut SPropValue,
13710    ) -> windows_core::Result<()> {
13711        unsafe {
13712            (windows_core::Interface::vtable(self).GetProps)(
13713                windows_core::Interface::as_raw(self),
13714                lpproptagarray as _,
13715                ulflags,
13716                lpcvalues as _,
13717                lppproparray as _,
13718            )
13719            .ok()
13720        }
13721    }
13722    pub unsafe fn GetPropList(
13723        &self,
13724        ulflags: u32,
13725        lppproptagarray: *mut *mut SPropTagArray,
13726    ) -> windows_core::Result<()> {
13727        unsafe {
13728            (windows_core::Interface::vtable(self).GetPropList)(
13729                windows_core::Interface::as_raw(self),
13730                ulflags,
13731                lppproptagarray as _,
13732            )
13733            .ok()
13734        }
13735    }
13736    pub unsafe fn OpenProperty(
13737        &self,
13738        ulproptag: u32,
13739        lpiid: *mut windows_core::GUID,
13740        ulinterfaceoptions: u32,
13741        ulflags: u32,
13742        lppunk: *mut Option<windows_core::IUnknown>,
13743    ) -> windows_core::Result<()> {
13744        unsafe {
13745            (windows_core::Interface::vtable(self).OpenProperty)(
13746                windows_core::Interface::as_raw(self),
13747                ulproptag,
13748                lpiid as _,
13749                ulinterfaceoptions,
13750                ulflags,
13751                core::mem::transmute(lppunk),
13752            )
13753            .ok()
13754        }
13755    }
13756    pub unsafe fn SetProps(
13757        &self,
13758        cvalues: u32,
13759        lpproparray: *mut SPropValue,
13760        lppproblems: *mut *mut SPropProblemArray,
13761    ) -> windows_core::Result<()> {
13762        unsafe {
13763            (windows_core::Interface::vtable(self).SetProps)(
13764                windows_core::Interface::as_raw(self),
13765                cvalues,
13766                lpproparray as _,
13767                lppproblems as _,
13768            )
13769            .ok()
13770        }
13771    }
13772    pub unsafe fn DeleteProps(
13773        &self,
13774        lpproptagarray: *mut SPropTagArray,
13775        lppproblems: *mut *mut SPropProblemArray,
13776    ) -> windows_core::Result<()> {
13777        unsafe {
13778            (windows_core::Interface::vtable(self).DeleteProps)(
13779                windows_core::Interface::as_raw(self),
13780                lpproptagarray as _,
13781                lppproblems as _,
13782            )
13783            .ok()
13784        }
13785    }
13786    pub unsafe fn CopyTo<P4>(
13787        &self,
13788        ciidexclude: u32,
13789        rgiidexclude: *mut windows_core::GUID,
13790        lpexcludeprops: *mut SPropTagArray,
13791        uluiparam: usize,
13792        lpprogress: P4,
13793        lpinterface: *mut windows_core::GUID,
13794        lpdestobj: *mut core::ffi::c_void,
13795        ulflags: u32,
13796        lppproblems: *mut *mut SPropProblemArray,
13797    ) -> windows_core::Result<()>
13798    where
13799        P4: windows_core::Param<IMAPIProgress>,
13800    {
13801        unsafe {
13802            (windows_core::Interface::vtable(self).CopyTo)(
13803                windows_core::Interface::as_raw(self),
13804                ciidexclude,
13805                rgiidexclude as _,
13806                lpexcludeprops as _,
13807                uluiparam,
13808                lpprogress.param().abi(),
13809                lpinterface as _,
13810                lpdestobj as _,
13811                ulflags,
13812                lppproblems as _,
13813            )
13814            .ok()
13815        }
13816    }
13817    pub unsafe fn CopyProps<P2>(
13818        &self,
13819        lpincludeprops: *mut SPropTagArray,
13820        uluiparam: usize,
13821        lpprogress: P2,
13822        lpinterface: *mut windows_core::GUID,
13823        lpdestobj: *mut core::ffi::c_void,
13824        ulflags: u32,
13825        lppproblems: *mut *mut SPropProblemArray,
13826    ) -> windows_core::Result<()>
13827    where
13828        P2: windows_core::Param<IMAPIProgress>,
13829    {
13830        unsafe {
13831            (windows_core::Interface::vtable(self).CopyProps)(
13832                windows_core::Interface::as_raw(self),
13833                lpincludeprops as _,
13834                uluiparam,
13835                lpprogress.param().abi(),
13836                lpinterface as _,
13837                lpdestobj as _,
13838                ulflags,
13839                lppproblems as _,
13840            )
13841            .ok()
13842        }
13843    }
13844    pub unsafe fn GetNamesFromIDs(
13845        &self,
13846        lppproptags: *mut *mut SPropTagArray,
13847        lppropsetguid: *mut windows_core::GUID,
13848        ulflags: u32,
13849        lpcpropnames: *mut u32,
13850        lppppropnames: *mut *mut *mut MAPINAMEID,
13851    ) -> windows_core::Result<()> {
13852        unsafe {
13853            (windows_core::Interface::vtable(self).GetNamesFromIDs)(
13854                windows_core::Interface::as_raw(self),
13855                lppproptags as _,
13856                lppropsetguid as _,
13857                ulflags,
13858                lpcpropnames as _,
13859                lppppropnames as _,
13860            )
13861            .ok()
13862        }
13863    }
13864    pub unsafe fn GetIDsFromNames(
13865        &self,
13866        cpropnames: u32,
13867        lpppropnames: *mut *mut MAPINAMEID,
13868        ulflags: u32,
13869        lppproptags: *mut *mut SPropTagArray,
13870    ) -> windows_core::Result<()> {
13871        unsafe {
13872            (windows_core::Interface::vtable(self).GetIDsFromNames)(
13873                windows_core::Interface::as_raw(self),
13874                cpropnames,
13875                lpppropnames as _,
13876                ulflags,
13877                lppproptags as _,
13878            )
13879            .ok()
13880        }
13881    }
13882}
13883#[repr(C)]
13884pub struct IMAPIProp_Vtbl {
13885    pub base__: windows_core::IUnknown_Vtbl,
13886    pub GetLastError: unsafe extern "system" fn(
13887        *mut core::ffi::c_void,
13888        windows_core::HRESULT,
13889        u32,
13890        *mut *mut MAPIERROR,
13891    ) -> windows_core::HRESULT,
13892    pub SaveChanges:
13893        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
13894    pub GetProps: unsafe extern "system" fn(
13895        *mut core::ffi::c_void,
13896        *mut SPropTagArray,
13897        u32,
13898        *mut u32,
13899        *mut *mut SPropValue,
13900    ) -> windows_core::HRESULT,
13901    pub GetPropList: unsafe extern "system" fn(
13902        *mut core::ffi::c_void,
13903        u32,
13904        *mut *mut SPropTagArray,
13905    ) -> windows_core::HRESULT,
13906    pub OpenProperty: unsafe extern "system" fn(
13907        *mut core::ffi::c_void,
13908        u32,
13909        *mut windows_core::GUID,
13910        u32,
13911        u32,
13912        *mut *mut core::ffi::c_void,
13913    ) -> windows_core::HRESULT,
13914    pub SetProps: unsafe extern "system" fn(
13915        *mut core::ffi::c_void,
13916        u32,
13917        *mut SPropValue,
13918        *mut *mut SPropProblemArray,
13919    ) -> windows_core::HRESULT,
13920    pub DeleteProps: unsafe extern "system" fn(
13921        *mut core::ffi::c_void,
13922        *mut SPropTagArray,
13923        *mut *mut SPropProblemArray,
13924    ) -> windows_core::HRESULT,
13925    pub CopyTo: unsafe extern "system" fn(
13926        *mut core::ffi::c_void,
13927        u32,
13928        *mut windows_core::GUID,
13929        *mut SPropTagArray,
13930        usize,
13931        *mut core::ffi::c_void,
13932        *mut windows_core::GUID,
13933        *mut core::ffi::c_void,
13934        u32,
13935        *mut *mut SPropProblemArray,
13936    ) -> windows_core::HRESULT,
13937    pub CopyProps: unsafe extern "system" fn(
13938        *mut core::ffi::c_void,
13939        *mut SPropTagArray,
13940        usize,
13941        *mut core::ffi::c_void,
13942        *mut windows_core::GUID,
13943        *mut core::ffi::c_void,
13944        u32,
13945        *mut *mut SPropProblemArray,
13946    ) -> windows_core::HRESULT,
13947    pub GetNamesFromIDs: unsafe extern "system" fn(
13948        *mut core::ffi::c_void,
13949        *mut *mut SPropTagArray,
13950        *mut windows_core::GUID,
13951        u32,
13952        *mut u32,
13953        *mut *mut *mut MAPINAMEID,
13954    ) -> windows_core::HRESULT,
13955    pub GetIDsFromNames: unsafe extern "system" fn(
13956        *mut core::ffi::c_void,
13957        u32,
13958        *mut *mut MAPINAMEID,
13959        u32,
13960        *mut *mut SPropTagArray,
13961    ) -> windows_core::HRESULT,
13962}
13963pub trait IMAPIProp_Impl: windows_core::IUnknownImpl {
13964    fn GetLastError(
13965        &self,
13966        hresult: windows_core::HRESULT,
13967        ulflags: u32,
13968        lppmapierror: *mut *mut MAPIERROR,
13969    ) -> windows_core::Result<()>;
13970    fn SaveChanges(&self, ulflags: u32) -> windows_core::Result<()>;
13971    fn GetProps(
13972        &self,
13973        lpproptagarray: *mut SPropTagArray,
13974        ulflags: u32,
13975        lpcvalues: *mut u32,
13976        lppproparray: *mut *mut SPropValue,
13977    ) -> windows_core::Result<()>;
13978    fn GetPropList(
13979        &self,
13980        ulflags: u32,
13981        lppproptagarray: *mut *mut SPropTagArray,
13982    ) -> windows_core::Result<()>;
13983    fn OpenProperty(
13984        &self,
13985        ulproptag: u32,
13986        lpiid: *mut windows_core::GUID,
13987        ulinterfaceoptions: u32,
13988        ulflags: u32,
13989        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
13990    ) -> windows_core::Result<()>;
13991    fn SetProps(
13992        &self,
13993        cvalues: u32,
13994        lpproparray: *mut SPropValue,
13995        lppproblems: *mut *mut SPropProblemArray,
13996    ) -> windows_core::Result<()>;
13997    fn DeleteProps(
13998        &self,
13999        lpproptagarray: *mut SPropTagArray,
14000        lppproblems: *mut *mut SPropProblemArray,
14001    ) -> windows_core::Result<()>;
14002    fn CopyTo(
14003        &self,
14004        ciidexclude: u32,
14005        rgiidexclude: *mut windows_core::GUID,
14006        lpexcludeprops: *mut SPropTagArray,
14007        uluiparam: usize,
14008        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
14009        lpinterface: *mut windows_core::GUID,
14010        lpdestobj: *mut core::ffi::c_void,
14011        ulflags: u32,
14012        lppproblems: *mut *mut SPropProblemArray,
14013    ) -> windows_core::Result<()>;
14014    fn CopyProps(
14015        &self,
14016        lpincludeprops: *mut SPropTagArray,
14017        uluiparam: usize,
14018        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
14019        lpinterface: *mut windows_core::GUID,
14020        lpdestobj: *mut core::ffi::c_void,
14021        ulflags: u32,
14022        lppproblems: *mut *mut SPropProblemArray,
14023    ) -> windows_core::Result<()>;
14024    fn GetNamesFromIDs(
14025        &self,
14026        lppproptags: *mut *mut SPropTagArray,
14027        lppropsetguid: *mut windows_core::GUID,
14028        ulflags: u32,
14029        lpcpropnames: *mut u32,
14030        lppppropnames: *mut *mut *mut MAPINAMEID,
14031    ) -> windows_core::Result<()>;
14032    fn GetIDsFromNames(
14033        &self,
14034        cpropnames: u32,
14035        lpppropnames: *mut *mut MAPINAMEID,
14036        ulflags: u32,
14037        lppproptags: *mut *mut SPropTagArray,
14038    ) -> windows_core::Result<()>;
14039}
14040impl IMAPIProp_Vtbl {
14041    pub const fn new<Identity: IMAPIProp_Impl, const OFFSET: isize>() -> Self {
14042        unsafe extern "system" fn GetLastError<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14043            this: *mut core::ffi::c_void,
14044            hresult: windows_core::HRESULT,
14045            ulflags: u32,
14046            lppmapierror: *mut *mut MAPIERROR,
14047        ) -> windows_core::HRESULT {
14048            unsafe {
14049                let this: &Identity =
14050                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14051                IMAPIProp_Impl::GetLastError(
14052                    this,
14053                    core::mem::transmute_copy(&hresult),
14054                    core::mem::transmute_copy(&ulflags),
14055                    core::mem::transmute_copy(&lppmapierror),
14056                )
14057                .into()
14058            }
14059        }
14060        unsafe extern "system" fn SaveChanges<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14061            this: *mut core::ffi::c_void,
14062            ulflags: u32,
14063        ) -> windows_core::HRESULT {
14064            unsafe {
14065                let this: &Identity =
14066                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14067                IMAPIProp_Impl::SaveChanges(this, core::mem::transmute_copy(&ulflags)).into()
14068            }
14069        }
14070        unsafe extern "system" fn GetProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14071            this: *mut core::ffi::c_void,
14072            lpproptagarray: *mut SPropTagArray,
14073            ulflags: u32,
14074            lpcvalues: *mut u32,
14075            lppproparray: *mut *mut SPropValue,
14076        ) -> windows_core::HRESULT {
14077            unsafe {
14078                let this: &Identity =
14079                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14080                IMAPIProp_Impl::GetProps(
14081                    this,
14082                    core::mem::transmute_copy(&lpproptagarray),
14083                    core::mem::transmute_copy(&ulflags),
14084                    core::mem::transmute_copy(&lpcvalues),
14085                    core::mem::transmute_copy(&lppproparray),
14086                )
14087                .into()
14088            }
14089        }
14090        unsafe extern "system" fn GetPropList<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14091            this: *mut core::ffi::c_void,
14092            ulflags: u32,
14093            lppproptagarray: *mut *mut SPropTagArray,
14094        ) -> windows_core::HRESULT {
14095            unsafe {
14096                let this: &Identity =
14097                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14098                IMAPIProp_Impl::GetPropList(
14099                    this,
14100                    core::mem::transmute_copy(&ulflags),
14101                    core::mem::transmute_copy(&lppproptagarray),
14102                )
14103                .into()
14104            }
14105        }
14106        unsafe extern "system" fn OpenProperty<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14107            this: *mut core::ffi::c_void,
14108            ulproptag: u32,
14109            lpiid: *mut windows_core::GUID,
14110            ulinterfaceoptions: u32,
14111            ulflags: u32,
14112            lppunk: *mut *mut core::ffi::c_void,
14113        ) -> windows_core::HRESULT {
14114            unsafe {
14115                let this: &Identity =
14116                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14117                IMAPIProp_Impl::OpenProperty(
14118                    this,
14119                    core::mem::transmute_copy(&ulproptag),
14120                    core::mem::transmute_copy(&lpiid),
14121                    core::mem::transmute_copy(&ulinterfaceoptions),
14122                    core::mem::transmute_copy(&ulflags),
14123                    core::mem::transmute_copy(&lppunk),
14124                )
14125                .into()
14126            }
14127        }
14128        unsafe extern "system" fn SetProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14129            this: *mut core::ffi::c_void,
14130            cvalues: u32,
14131            lpproparray: *mut SPropValue,
14132            lppproblems: *mut *mut SPropProblemArray,
14133        ) -> windows_core::HRESULT {
14134            unsafe {
14135                let this: &Identity =
14136                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14137                IMAPIProp_Impl::SetProps(
14138                    this,
14139                    core::mem::transmute_copy(&cvalues),
14140                    core::mem::transmute_copy(&lpproparray),
14141                    core::mem::transmute_copy(&lppproblems),
14142                )
14143                .into()
14144            }
14145        }
14146        unsafe extern "system" fn DeleteProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14147            this: *mut core::ffi::c_void,
14148            lpproptagarray: *mut SPropTagArray,
14149            lppproblems: *mut *mut SPropProblemArray,
14150        ) -> windows_core::HRESULT {
14151            unsafe {
14152                let this: &Identity =
14153                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14154                IMAPIProp_Impl::DeleteProps(
14155                    this,
14156                    core::mem::transmute_copy(&lpproptagarray),
14157                    core::mem::transmute_copy(&lppproblems),
14158                )
14159                .into()
14160            }
14161        }
14162        unsafe extern "system" fn CopyTo<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14163            this: *mut core::ffi::c_void,
14164            ciidexclude: u32,
14165            rgiidexclude: *mut windows_core::GUID,
14166            lpexcludeprops: *mut SPropTagArray,
14167            uluiparam: usize,
14168            lpprogress: *mut core::ffi::c_void,
14169            lpinterface: *mut windows_core::GUID,
14170            lpdestobj: *mut core::ffi::c_void,
14171            ulflags: u32,
14172            lppproblems: *mut *mut SPropProblemArray,
14173        ) -> windows_core::HRESULT {
14174            unsafe {
14175                let this: &Identity =
14176                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14177                IMAPIProp_Impl::CopyTo(
14178                    this,
14179                    core::mem::transmute_copy(&ciidexclude),
14180                    core::mem::transmute_copy(&rgiidexclude),
14181                    core::mem::transmute_copy(&lpexcludeprops),
14182                    core::mem::transmute_copy(&uluiparam),
14183                    core::mem::transmute_copy(&lpprogress),
14184                    core::mem::transmute_copy(&lpinterface),
14185                    core::mem::transmute_copy(&lpdestobj),
14186                    core::mem::transmute_copy(&ulflags),
14187                    core::mem::transmute_copy(&lppproblems),
14188                )
14189                .into()
14190            }
14191        }
14192        unsafe extern "system" fn CopyProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14193            this: *mut core::ffi::c_void,
14194            lpincludeprops: *mut SPropTagArray,
14195            uluiparam: usize,
14196            lpprogress: *mut core::ffi::c_void,
14197            lpinterface: *mut windows_core::GUID,
14198            lpdestobj: *mut core::ffi::c_void,
14199            ulflags: u32,
14200            lppproblems: *mut *mut SPropProblemArray,
14201        ) -> windows_core::HRESULT {
14202            unsafe {
14203                let this: &Identity =
14204                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14205                IMAPIProp_Impl::CopyProps(
14206                    this,
14207                    core::mem::transmute_copy(&lpincludeprops),
14208                    core::mem::transmute_copy(&uluiparam),
14209                    core::mem::transmute_copy(&lpprogress),
14210                    core::mem::transmute_copy(&lpinterface),
14211                    core::mem::transmute_copy(&lpdestobj),
14212                    core::mem::transmute_copy(&ulflags),
14213                    core::mem::transmute_copy(&lppproblems),
14214                )
14215                .into()
14216            }
14217        }
14218        unsafe extern "system" fn GetNamesFromIDs<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14219            this: *mut core::ffi::c_void,
14220            lppproptags: *mut *mut SPropTagArray,
14221            lppropsetguid: *mut windows_core::GUID,
14222            ulflags: u32,
14223            lpcpropnames: *mut u32,
14224            lppppropnames: *mut *mut *mut MAPINAMEID,
14225        ) -> windows_core::HRESULT {
14226            unsafe {
14227                let this: &Identity =
14228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14229                IMAPIProp_Impl::GetNamesFromIDs(
14230                    this,
14231                    core::mem::transmute_copy(&lppproptags),
14232                    core::mem::transmute_copy(&lppropsetguid),
14233                    core::mem::transmute_copy(&ulflags),
14234                    core::mem::transmute_copy(&lpcpropnames),
14235                    core::mem::transmute_copy(&lppppropnames),
14236                )
14237                .into()
14238            }
14239        }
14240        unsafe extern "system" fn GetIDsFromNames<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14241            this: *mut core::ffi::c_void,
14242            cpropnames: u32,
14243            lpppropnames: *mut *mut MAPINAMEID,
14244            ulflags: u32,
14245            lppproptags: *mut *mut SPropTagArray,
14246        ) -> windows_core::HRESULT {
14247            unsafe {
14248                let this: &Identity =
14249                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14250                IMAPIProp_Impl::GetIDsFromNames(
14251                    this,
14252                    core::mem::transmute_copy(&cpropnames),
14253                    core::mem::transmute_copy(&lpppropnames),
14254                    core::mem::transmute_copy(&ulflags),
14255                    core::mem::transmute_copy(&lppproptags),
14256                )
14257                .into()
14258            }
14259        }
14260        Self {
14261            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
14262            GetLastError: GetLastError::<Identity, OFFSET>,
14263            SaveChanges: SaveChanges::<Identity, OFFSET>,
14264            GetProps: GetProps::<Identity, OFFSET>,
14265            GetPropList: GetPropList::<Identity, OFFSET>,
14266            OpenProperty: OpenProperty::<Identity, OFFSET>,
14267            SetProps: SetProps::<Identity, OFFSET>,
14268            DeleteProps: DeleteProps::<Identity, OFFSET>,
14269            CopyTo: CopyTo::<Identity, OFFSET>,
14270            CopyProps: CopyProps::<Identity, OFFSET>,
14271            GetNamesFromIDs: GetNamesFromIDs::<Identity, OFFSET>,
14272            GetIDsFromNames: GetIDsFromNames::<Identity, OFFSET>,
14273        }
14274    }
14275    pub fn matches(iid: &windows_core::GUID) -> bool {
14276        iid == &<IMAPIProp as windows_core::Interface>::IID
14277    }
14278}
14279impl windows_core::RuntimeName for IMAPIProp {}
14280pub const IMAPIProp_CopyProps: METHODS = METHODS(11i32);
14281pub const IMAPIProp_CopyTo: METHODS = METHODS(10i32);
14282pub const IMAPIProp_DeleteProps: METHODS = METHODS(9i32);
14283pub const IMAPIProp_GetIDsFromNames: METHODS = METHODS(13i32);
14284pub const IMAPIProp_GetLastError: METHODS = METHODS(3i32);
14285pub const IMAPIProp_GetNamesFromIDs: METHODS = METHODS(12i32);
14286pub const IMAPIProp_GetPropList: METHODS = METHODS(6i32);
14287pub const IMAPIProp_GetProps: METHODS = METHODS(5i32);
14288pub const IMAPIProp_OpenProperty: METHODS = METHODS(7i32);
14289pub const IMAPIProp_SaveChanges: METHODS = METHODS(4i32);
14290pub const IMAPIProp_SetProps: METHODS = METHODS(8i32);
14291windows_core::imp::define_interface!(
14292    IMAPIProviderShutdown,
14293    IMAPIProviderShutdown_Vtbl,
14294    0x00020398_0000_0000_c000_000000000046
14295);
14296windows_core::imp::interface_hierarchy!(IMAPIProviderShutdown, windows_core::IUnknown);
14297impl IMAPIProviderShutdown {
14298    pub unsafe fn QueryFastShutdown(&self) -> windows_core::Result<()> {
14299        unsafe {
14300            (windows_core::Interface::vtable(self).QueryFastShutdown)(
14301                windows_core::Interface::as_raw(self),
14302            )
14303            .ok()
14304        }
14305    }
14306    pub unsafe fn NotifyProcessShutdown(&self) -> windows_core::Result<()> {
14307        unsafe {
14308            (windows_core::Interface::vtable(self).NotifyProcessShutdown)(
14309                windows_core::Interface::as_raw(self),
14310            )
14311            .ok()
14312        }
14313    }
14314    pub unsafe fn DoFastShutdown(&self) -> windows_core::Result<()> {
14315        unsafe {
14316            (windows_core::Interface::vtable(self).DoFastShutdown)(windows_core::Interface::as_raw(
14317                self,
14318            ))
14319            .ok()
14320        }
14321    }
14322}
14323#[repr(C)]
14324pub struct IMAPIProviderShutdown_Vtbl {
14325    pub base__: windows_core::IUnknown_Vtbl,
14326    pub QueryFastShutdown:
14327        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
14328    pub NotifyProcessShutdown:
14329        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
14330    pub DoFastShutdown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
14331}
14332pub trait IMAPIProviderShutdown_Impl: windows_core::IUnknownImpl {
14333    fn QueryFastShutdown(&self) -> windows_core::Result<()>;
14334    fn NotifyProcessShutdown(&self) -> windows_core::Result<()>;
14335    fn DoFastShutdown(&self) -> windows_core::Result<()>;
14336}
14337impl IMAPIProviderShutdown_Vtbl {
14338    pub const fn new<Identity: IMAPIProviderShutdown_Impl, const OFFSET: isize>() -> Self {
14339        unsafe extern "system" fn QueryFastShutdown<
14340            Identity: IMAPIProviderShutdown_Impl,
14341            const OFFSET: isize,
14342        >(
14343            this: *mut core::ffi::c_void,
14344        ) -> windows_core::HRESULT {
14345            unsafe {
14346                let this: &Identity =
14347                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14348                IMAPIProviderShutdown_Impl::QueryFastShutdown(this).into()
14349            }
14350        }
14351        unsafe extern "system" fn NotifyProcessShutdown<
14352            Identity: IMAPIProviderShutdown_Impl,
14353            const OFFSET: isize,
14354        >(
14355            this: *mut core::ffi::c_void,
14356        ) -> windows_core::HRESULT {
14357            unsafe {
14358                let this: &Identity =
14359                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14360                IMAPIProviderShutdown_Impl::NotifyProcessShutdown(this).into()
14361            }
14362        }
14363        unsafe extern "system" fn DoFastShutdown<
14364            Identity: IMAPIProviderShutdown_Impl,
14365            const OFFSET: isize,
14366        >(
14367            this: *mut core::ffi::c_void,
14368        ) -> windows_core::HRESULT {
14369            unsafe {
14370                let this: &Identity =
14371                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14372                IMAPIProviderShutdown_Impl::DoFastShutdown(this).into()
14373            }
14374        }
14375        Self {
14376            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
14377            QueryFastShutdown: QueryFastShutdown::<Identity, OFFSET>,
14378            NotifyProcessShutdown: NotifyProcessShutdown::<Identity, OFFSET>,
14379            DoFastShutdown: DoFastShutdown::<Identity, OFFSET>,
14380        }
14381    }
14382    pub fn matches(iid: &windows_core::GUID) -> bool {
14383        iid == &<IMAPIProviderShutdown as windows_core::Interface>::IID
14384    }
14385}
14386impl windows_core::RuntimeName for IMAPIProviderShutdown {}
14387windows_core::imp::define_interface!(
14388    IMAPISession,
14389    IMAPISession_Vtbl,
14390    0x00020300_0000_0000_c000_000000000046
14391);
14392windows_core::imp::interface_hierarchy!(IMAPISession, windows_core::IUnknown);
14393impl IMAPISession {
14394    pub unsafe fn GetLastError(
14395        &self,
14396        hresult: windows_core::HRESULT,
14397        ulflags: u32,
14398        lppmapierror: *mut *mut MAPIERROR,
14399    ) -> windows_core::Result<()> {
14400        unsafe {
14401            (windows_core::Interface::vtable(self).GetLastError)(
14402                windows_core::Interface::as_raw(self),
14403                hresult,
14404                ulflags,
14405                lppmapierror as _,
14406            )
14407            .ok()
14408        }
14409    }
14410    pub unsafe fn GetMsgStoresTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
14411        unsafe {
14412            let mut result__ = core::mem::zeroed();
14413            (windows_core::Interface::vtable(self).GetMsgStoresTable)(
14414                windows_core::Interface::as_raw(self),
14415                ulflags,
14416                &mut result__,
14417            )
14418            .and_then(|| windows_core::Type::from_abi(result__))
14419        }
14420    }
14421    pub unsafe fn OpenMsgStore(
14422        &self,
14423        uluiparam: usize,
14424        cbentryid: u32,
14425        lpentryid: *mut ENTRYID,
14426        lpinterface: *mut windows_core::GUID,
14427        ulflags: u32,
14428        lppmdb: *mut Option<IMsgStore>,
14429    ) -> windows_core::Result<()> {
14430        unsafe {
14431            (windows_core::Interface::vtable(self).OpenMsgStore)(
14432                windows_core::Interface::as_raw(self),
14433                uluiparam,
14434                cbentryid,
14435                lpentryid as _,
14436                lpinterface as _,
14437                ulflags,
14438                core::mem::transmute(lppmdb),
14439            )
14440            .ok()
14441        }
14442    }
14443    pub unsafe fn OpenAddressBook(
14444        &self,
14445        uluiparam: usize,
14446        lpinterface: *mut windows_core::GUID,
14447        ulflags: u32,
14448        lppadrbook: *mut Option<IAddrBook>,
14449    ) -> windows_core::Result<()> {
14450        unsafe {
14451            (windows_core::Interface::vtable(self).OpenAddressBook)(
14452                windows_core::Interface::as_raw(self),
14453                uluiparam,
14454                lpinterface as _,
14455                ulflags,
14456                core::mem::transmute(lppadrbook),
14457            )
14458            .ok()
14459        }
14460    }
14461    pub unsafe fn OpenProfileSection(
14462        &self,
14463        lpuid: *mut MAPIUID,
14464        lpinterface: *mut windows_core::GUID,
14465        ulflags: u32,
14466        lppprofsect: *mut Option<IProfSect>,
14467    ) -> windows_core::Result<()> {
14468        unsafe {
14469            (windows_core::Interface::vtable(self).OpenProfileSection)(
14470                windows_core::Interface::as_raw(self),
14471                lpuid as _,
14472                lpinterface as _,
14473                ulflags,
14474                core::mem::transmute(lppprofsect),
14475            )
14476            .ok()
14477        }
14478    }
14479    pub unsafe fn GetStatusTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
14480        unsafe {
14481            let mut result__ = core::mem::zeroed();
14482            (windows_core::Interface::vtable(self).GetStatusTable)(
14483                windows_core::Interface::as_raw(self),
14484                ulflags,
14485                &mut result__,
14486            )
14487            .and_then(|| windows_core::Type::from_abi(result__))
14488        }
14489    }
14490    pub unsafe fn OpenEntry(
14491        &self,
14492        cbentryid: u32,
14493        lpentryid: *mut ENTRYID,
14494        lpinterface: *mut windows_core::GUID,
14495        ulflags: u32,
14496        lpulobjtype: *mut u32,
14497        lppunk: *mut Option<windows_core::IUnknown>,
14498    ) -> windows_core::Result<()> {
14499        unsafe {
14500            (windows_core::Interface::vtable(self).OpenEntry)(
14501                windows_core::Interface::as_raw(self),
14502                cbentryid,
14503                lpentryid as _,
14504                lpinterface as _,
14505                ulflags,
14506                lpulobjtype as _,
14507                core::mem::transmute(lppunk),
14508            )
14509            .ok()
14510        }
14511    }
14512    pub unsafe fn CompareEntryIDs(
14513        &self,
14514        cbentryid1: u32,
14515        lpentryid1: *mut ENTRYID,
14516        cbentryid2: u32,
14517        lpentryid2: *mut ENTRYID,
14518        ulflags: u32,
14519        lpulresult: *mut u32,
14520    ) -> windows_core::Result<()> {
14521        unsafe {
14522            (windows_core::Interface::vtable(self).CompareEntryIDs)(
14523                windows_core::Interface::as_raw(self),
14524                cbentryid1,
14525                lpentryid1 as _,
14526                cbentryid2,
14527                lpentryid2 as _,
14528                ulflags,
14529                lpulresult as _,
14530            )
14531            .ok()
14532        }
14533    }
14534    pub unsafe fn Advise<P3>(
14535        &self,
14536        cbentryid: u32,
14537        lpentryid: *mut ENTRYID,
14538        uleventmask: u32,
14539        lpadvisesink: P3,
14540        lpulconnection: *mut usize,
14541    ) -> windows_core::Result<()>
14542    where
14543        P3: windows_core::Param<IMAPIAdviseSink>,
14544    {
14545        unsafe {
14546            (windows_core::Interface::vtable(self).Advise)(
14547                windows_core::Interface::as_raw(self),
14548                cbentryid,
14549                lpentryid as _,
14550                uleventmask,
14551                lpadvisesink.param().abi(),
14552                lpulconnection as _,
14553            )
14554            .ok()
14555        }
14556    }
14557    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
14558        unsafe {
14559            (windows_core::Interface::vtable(self).Unadvise)(
14560                windows_core::Interface::as_raw(self),
14561                ulconnection,
14562            )
14563            .ok()
14564        }
14565    }
14566    pub unsafe fn MessageOptions<P3>(
14567        &self,
14568        uluiparam: usize,
14569        ulflags: u32,
14570        lpszadrtype: *mut i8,
14571        lpmessage: P3,
14572    ) -> windows_core::Result<()>
14573    where
14574        P3: windows_core::Param<IMessage>,
14575    {
14576        unsafe {
14577            (windows_core::Interface::vtable(self).MessageOptions)(
14578                windows_core::Interface::as_raw(self),
14579                uluiparam,
14580                ulflags,
14581                lpszadrtype as _,
14582                lpmessage.param().abi(),
14583            )
14584            .ok()
14585        }
14586    }
14587    pub unsafe fn QueryDefaultMessageOpt(
14588        &self,
14589        lpszadrtype: *mut i8,
14590        ulflags: u32,
14591        lpcvalues: *mut u32,
14592        lppoptions: *mut *mut SPropValue,
14593    ) -> windows_core::Result<()> {
14594        unsafe {
14595            (windows_core::Interface::vtable(self).QueryDefaultMessageOpt)(
14596                windows_core::Interface::as_raw(self),
14597                lpszadrtype as _,
14598                ulflags,
14599                lpcvalues as _,
14600                lppoptions as _,
14601            )
14602            .ok()
14603        }
14604    }
14605    pub unsafe fn EnumAdrTypes(
14606        &self,
14607        ulflags: u32,
14608        lpcadrtypes: *mut u32,
14609        lpppszadrtypes: *mut *mut *mut i8,
14610    ) -> windows_core::Result<()> {
14611        unsafe {
14612            (windows_core::Interface::vtable(self).EnumAdrTypes)(
14613                windows_core::Interface::as_raw(self),
14614                ulflags,
14615                lpcadrtypes as _,
14616                lpppszadrtypes as _,
14617            )
14618            .ok()
14619        }
14620    }
14621    pub unsafe fn QueryIdentity(
14622        &self,
14623        lpcbentryid: *mut u32,
14624        lppentryid: *mut *mut ENTRYID,
14625    ) -> windows_core::Result<()> {
14626        unsafe {
14627            (windows_core::Interface::vtable(self).QueryIdentity)(
14628                windows_core::Interface::as_raw(self),
14629                lpcbentryid as _,
14630                lppentryid as _,
14631            )
14632            .ok()
14633        }
14634    }
14635    pub unsafe fn Logoff(
14636        &self,
14637        uluiparam: usize,
14638        ulflags: u32,
14639        ulreserved: u32,
14640    ) -> windows_core::Result<()> {
14641        unsafe {
14642            (windows_core::Interface::vtable(self).Logoff)(
14643                windows_core::Interface::as_raw(self),
14644                uluiparam,
14645                ulflags,
14646                ulreserved,
14647            )
14648            .ok()
14649        }
14650    }
14651    pub unsafe fn SetDefaultStore(
14652        &self,
14653        ulflags: u32,
14654        cbentryid: u32,
14655        lpentryid: *mut ENTRYID,
14656    ) -> windows_core::Result<()> {
14657        unsafe {
14658            (windows_core::Interface::vtable(self).SetDefaultStore)(
14659                windows_core::Interface::as_raw(self),
14660                ulflags,
14661                cbentryid,
14662                lpentryid as _,
14663            )
14664            .ok()
14665        }
14666    }
14667    pub unsafe fn AdminServices(&self, ulflags: u32) -> windows_core::Result<IMsgServiceAdmin> {
14668        unsafe {
14669            let mut result__ = core::mem::zeroed();
14670            (windows_core::Interface::vtable(self).AdminServices)(
14671                windows_core::Interface::as_raw(self),
14672                ulflags,
14673                &mut result__,
14674            )
14675            .and_then(|| windows_core::Type::from_abi(result__))
14676        }
14677    }
14678    pub unsafe fn ShowForm<P1, P2, P5, P10>(
14679        &self,
14680        uluiparam: usize,
14681        lpmsgstore: P1,
14682        lpparentfolder: P2,
14683        lpinterface: *mut windows_core::GUID,
14684        ulmessagetoken: usize,
14685        lpmessagesent: P5,
14686        ulflags: u32,
14687        ulmessagestatus: u32,
14688        ulmessageflags: u32,
14689        ulaccess: u32,
14690        lpszmessageclass: P10,
14691    ) -> windows_core::Result<()>
14692    where
14693        P1: windows_core::Param<IMsgStore>,
14694        P2: windows_core::Param<IMAPIFolder>,
14695        P5: windows_core::Param<IMessage>,
14696        P10: windows_core::Param<windows_core::PCSTR>,
14697    {
14698        unsafe {
14699            (windows_core::Interface::vtable(self).ShowForm)(
14700                windows_core::Interface::as_raw(self),
14701                uluiparam,
14702                lpmsgstore.param().abi(),
14703                lpparentfolder.param().abi(),
14704                lpinterface as _,
14705                ulmessagetoken,
14706                lpmessagesent.param().abi(),
14707                ulflags,
14708                ulmessagestatus,
14709                ulmessageflags,
14710                ulaccess,
14711                lpszmessageclass.param().abi(),
14712            )
14713            .ok()
14714        }
14715    }
14716    pub unsafe fn PrepareForm<P1>(
14717        &self,
14718        lpinterface: *mut windows_core::GUID,
14719        lpmessage: P1,
14720        lpulmessagetoken: *mut usize,
14721    ) -> windows_core::Result<()>
14722    where
14723        P1: windows_core::Param<IMessage>,
14724    {
14725        unsafe {
14726            (windows_core::Interface::vtable(self).PrepareForm)(
14727                windows_core::Interface::as_raw(self),
14728                lpinterface as _,
14729                lpmessage.param().abi(),
14730                lpulmessagetoken as _,
14731            )
14732            .ok()
14733        }
14734    }
14735}
14736#[repr(C)]
14737pub struct IMAPISession_Vtbl {
14738    pub base__: windows_core::IUnknown_Vtbl,
14739    pub GetLastError: unsafe extern "system" fn(
14740        *mut core::ffi::c_void,
14741        windows_core::HRESULT,
14742        u32,
14743        *mut *mut MAPIERROR,
14744    ) -> windows_core::HRESULT,
14745    pub GetMsgStoresTable: unsafe extern "system" fn(
14746        *mut core::ffi::c_void,
14747        u32,
14748        *mut *mut core::ffi::c_void,
14749    ) -> windows_core::HRESULT,
14750    pub OpenMsgStore: unsafe extern "system" fn(
14751        *mut core::ffi::c_void,
14752        usize,
14753        u32,
14754        *mut ENTRYID,
14755        *mut windows_core::GUID,
14756        u32,
14757        *mut *mut core::ffi::c_void,
14758    ) -> windows_core::HRESULT,
14759    pub OpenAddressBook: unsafe extern "system" fn(
14760        *mut core::ffi::c_void,
14761        usize,
14762        *mut windows_core::GUID,
14763        u32,
14764        *mut *mut core::ffi::c_void,
14765    ) -> windows_core::HRESULT,
14766    pub OpenProfileSection: unsafe extern "system" fn(
14767        *mut core::ffi::c_void,
14768        *mut MAPIUID,
14769        *mut windows_core::GUID,
14770        u32,
14771        *mut *mut core::ffi::c_void,
14772    ) -> windows_core::HRESULT,
14773    pub GetStatusTable: unsafe extern "system" fn(
14774        *mut core::ffi::c_void,
14775        u32,
14776        *mut *mut core::ffi::c_void,
14777    ) -> windows_core::HRESULT,
14778    pub OpenEntry: unsafe extern "system" fn(
14779        *mut core::ffi::c_void,
14780        u32,
14781        *mut ENTRYID,
14782        *mut windows_core::GUID,
14783        u32,
14784        *mut u32,
14785        *mut *mut core::ffi::c_void,
14786    ) -> windows_core::HRESULT,
14787    pub CompareEntryIDs: unsafe extern "system" fn(
14788        *mut core::ffi::c_void,
14789        u32,
14790        *mut ENTRYID,
14791        u32,
14792        *mut ENTRYID,
14793        u32,
14794        *mut u32,
14795    ) -> windows_core::HRESULT,
14796    pub Advise: unsafe extern "system" fn(
14797        *mut core::ffi::c_void,
14798        u32,
14799        *mut ENTRYID,
14800        u32,
14801        *mut core::ffi::c_void,
14802        *mut usize,
14803    ) -> windows_core::HRESULT,
14804    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
14805    pub MessageOptions: unsafe extern "system" fn(
14806        *mut core::ffi::c_void,
14807        usize,
14808        u32,
14809        *mut i8,
14810        *mut core::ffi::c_void,
14811    ) -> windows_core::HRESULT,
14812    pub QueryDefaultMessageOpt: unsafe extern "system" fn(
14813        *mut core::ffi::c_void,
14814        *mut i8,
14815        u32,
14816        *mut u32,
14817        *mut *mut SPropValue,
14818    ) -> windows_core::HRESULT,
14819    pub EnumAdrTypes: unsafe extern "system" fn(
14820        *mut core::ffi::c_void,
14821        u32,
14822        *mut u32,
14823        *mut *mut *mut i8,
14824    ) -> windows_core::HRESULT,
14825    pub QueryIdentity: unsafe extern "system" fn(
14826        *mut core::ffi::c_void,
14827        *mut u32,
14828        *mut *mut ENTRYID,
14829    ) -> windows_core::HRESULT,
14830    pub Logoff:
14831        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32, u32) -> windows_core::HRESULT,
14832    pub SetDefaultStore: unsafe extern "system" fn(
14833        *mut core::ffi::c_void,
14834        u32,
14835        u32,
14836        *mut ENTRYID,
14837    ) -> windows_core::HRESULT,
14838    pub AdminServices: unsafe extern "system" fn(
14839        *mut core::ffi::c_void,
14840        u32,
14841        *mut *mut core::ffi::c_void,
14842    ) -> windows_core::HRESULT,
14843    pub ShowForm: unsafe extern "system" fn(
14844        *mut core::ffi::c_void,
14845        usize,
14846        *mut core::ffi::c_void,
14847        *mut core::ffi::c_void,
14848        *mut windows_core::GUID,
14849        usize,
14850        *mut core::ffi::c_void,
14851        u32,
14852        u32,
14853        u32,
14854        u32,
14855        windows_core::PCSTR,
14856    ) -> windows_core::HRESULT,
14857    pub PrepareForm: unsafe extern "system" fn(
14858        *mut core::ffi::c_void,
14859        *mut windows_core::GUID,
14860        *mut core::ffi::c_void,
14861        *mut usize,
14862    ) -> windows_core::HRESULT,
14863}
14864pub trait IMAPISession_Impl: windows_core::IUnknownImpl {
14865    fn GetLastError(
14866        &self,
14867        hresult: windows_core::HRESULT,
14868        ulflags: u32,
14869        lppmapierror: *mut *mut MAPIERROR,
14870    ) -> windows_core::Result<()>;
14871    fn GetMsgStoresTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
14872    fn OpenMsgStore(
14873        &self,
14874        uluiparam: usize,
14875        cbentryid: u32,
14876        lpentryid: *mut ENTRYID,
14877        lpinterface: *mut windows_core::GUID,
14878        ulflags: u32,
14879        lppmdb: windows_core::OutRef<'_, IMsgStore>,
14880    ) -> windows_core::Result<()>;
14881    fn OpenAddressBook(
14882        &self,
14883        uluiparam: usize,
14884        lpinterface: *mut windows_core::GUID,
14885        ulflags: u32,
14886        lppadrbook: windows_core::OutRef<'_, IAddrBook>,
14887    ) -> windows_core::Result<()>;
14888    fn OpenProfileSection(
14889        &self,
14890        lpuid: *mut MAPIUID,
14891        lpinterface: *mut windows_core::GUID,
14892        ulflags: u32,
14893        lppprofsect: windows_core::OutRef<'_, IProfSect>,
14894    ) -> windows_core::Result<()>;
14895    fn GetStatusTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
14896    fn OpenEntry(
14897        &self,
14898        cbentryid: u32,
14899        lpentryid: *mut ENTRYID,
14900        lpinterface: *mut windows_core::GUID,
14901        ulflags: u32,
14902        lpulobjtype: *mut u32,
14903        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
14904    ) -> windows_core::Result<()>;
14905    fn CompareEntryIDs(
14906        &self,
14907        cbentryid1: u32,
14908        lpentryid1: *mut ENTRYID,
14909        cbentryid2: u32,
14910        lpentryid2: *mut ENTRYID,
14911        ulflags: u32,
14912        lpulresult: *mut u32,
14913    ) -> windows_core::Result<()>;
14914    fn Advise(
14915        &self,
14916        cbentryid: u32,
14917        lpentryid: *mut ENTRYID,
14918        uleventmask: u32,
14919        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
14920        lpulconnection: *mut usize,
14921    ) -> windows_core::Result<()>;
14922    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
14923    fn MessageOptions(
14924        &self,
14925        uluiparam: usize,
14926        ulflags: u32,
14927        lpszadrtype: *mut i8,
14928        lpmessage: windows_core::Ref<'_, IMessage>,
14929    ) -> windows_core::Result<()>;
14930    fn QueryDefaultMessageOpt(
14931        &self,
14932        lpszadrtype: *mut i8,
14933        ulflags: u32,
14934        lpcvalues: *mut u32,
14935        lppoptions: *mut *mut SPropValue,
14936    ) -> windows_core::Result<()>;
14937    fn EnumAdrTypes(
14938        &self,
14939        ulflags: u32,
14940        lpcadrtypes: *mut u32,
14941        lpppszadrtypes: *mut *mut *mut i8,
14942    ) -> windows_core::Result<()>;
14943    fn QueryIdentity(
14944        &self,
14945        lpcbentryid: *mut u32,
14946        lppentryid: *mut *mut ENTRYID,
14947    ) -> windows_core::Result<()>;
14948    fn Logoff(&self, uluiparam: usize, ulflags: u32, ulreserved: u32) -> windows_core::Result<()>;
14949    fn SetDefaultStore(
14950        &self,
14951        ulflags: u32,
14952        cbentryid: u32,
14953        lpentryid: *mut ENTRYID,
14954    ) -> windows_core::Result<()>;
14955    fn AdminServices(&self, ulflags: u32) -> windows_core::Result<IMsgServiceAdmin>;
14956    fn ShowForm(
14957        &self,
14958        uluiparam: usize,
14959        lpmsgstore: windows_core::Ref<'_, IMsgStore>,
14960        lpparentfolder: windows_core::Ref<'_, IMAPIFolder>,
14961        lpinterface: *mut windows_core::GUID,
14962        ulmessagetoken: usize,
14963        lpmessagesent: windows_core::Ref<'_, IMessage>,
14964        ulflags: u32,
14965        ulmessagestatus: u32,
14966        ulmessageflags: u32,
14967        ulaccess: u32,
14968        lpszmessageclass: &windows_core::PCSTR,
14969    ) -> windows_core::Result<()>;
14970    fn PrepareForm(
14971        &self,
14972        lpinterface: *mut windows_core::GUID,
14973        lpmessage: windows_core::Ref<'_, IMessage>,
14974        lpulmessagetoken: *mut usize,
14975    ) -> windows_core::Result<()>;
14976}
14977impl IMAPISession_Vtbl {
14978    pub const fn new<Identity: IMAPISession_Impl, const OFFSET: isize>() -> Self {
14979        unsafe extern "system" fn GetLastError<Identity: IMAPISession_Impl, const OFFSET: isize>(
14980            this: *mut core::ffi::c_void,
14981            hresult: windows_core::HRESULT,
14982            ulflags: u32,
14983            lppmapierror: *mut *mut MAPIERROR,
14984        ) -> windows_core::HRESULT {
14985            unsafe {
14986                let this: &Identity =
14987                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14988                IMAPISession_Impl::GetLastError(
14989                    this,
14990                    core::mem::transmute_copy(&hresult),
14991                    core::mem::transmute_copy(&ulflags),
14992                    core::mem::transmute_copy(&lppmapierror),
14993                )
14994                .into()
14995            }
14996        }
14997        unsafe extern "system" fn GetMsgStoresTable<
14998            Identity: IMAPISession_Impl,
14999            const OFFSET: isize,
15000        >(
15001            this: *mut core::ffi::c_void,
15002            ulflags: u32,
15003            lpptable: *mut *mut core::ffi::c_void,
15004        ) -> windows_core::HRESULT {
15005            unsafe {
15006                let this: &Identity =
15007                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15008                match IMAPISession_Impl::GetMsgStoresTable(
15009                    this,
15010                    core::mem::transmute_copy(&ulflags),
15011                ) {
15012                    Ok(ok__) => {
15013                        lpptable.write(core::mem::transmute(ok__));
15014                        windows_core::HRESULT(0)
15015                    }
15016                    Err(err) => err.into(),
15017                }
15018            }
15019        }
15020        unsafe extern "system" fn OpenMsgStore<Identity: IMAPISession_Impl, const OFFSET: isize>(
15021            this: *mut core::ffi::c_void,
15022            uluiparam: usize,
15023            cbentryid: u32,
15024            lpentryid: *mut ENTRYID,
15025            lpinterface: *mut windows_core::GUID,
15026            ulflags: u32,
15027            lppmdb: *mut *mut core::ffi::c_void,
15028        ) -> windows_core::HRESULT {
15029            unsafe {
15030                let this: &Identity =
15031                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15032                IMAPISession_Impl::OpenMsgStore(
15033                    this,
15034                    core::mem::transmute_copy(&uluiparam),
15035                    core::mem::transmute_copy(&cbentryid),
15036                    core::mem::transmute_copy(&lpentryid),
15037                    core::mem::transmute_copy(&lpinterface),
15038                    core::mem::transmute_copy(&ulflags),
15039                    core::mem::transmute_copy(&lppmdb),
15040                )
15041                .into()
15042            }
15043        }
15044        unsafe extern "system" fn OpenAddressBook<
15045            Identity: IMAPISession_Impl,
15046            const OFFSET: isize,
15047        >(
15048            this: *mut core::ffi::c_void,
15049            uluiparam: usize,
15050            lpinterface: *mut windows_core::GUID,
15051            ulflags: u32,
15052            lppadrbook: *mut *mut core::ffi::c_void,
15053        ) -> windows_core::HRESULT {
15054            unsafe {
15055                let this: &Identity =
15056                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15057                IMAPISession_Impl::OpenAddressBook(
15058                    this,
15059                    core::mem::transmute_copy(&uluiparam),
15060                    core::mem::transmute_copy(&lpinterface),
15061                    core::mem::transmute_copy(&ulflags),
15062                    core::mem::transmute_copy(&lppadrbook),
15063                )
15064                .into()
15065            }
15066        }
15067        unsafe extern "system" fn OpenProfileSection<
15068            Identity: IMAPISession_Impl,
15069            const OFFSET: isize,
15070        >(
15071            this: *mut core::ffi::c_void,
15072            lpuid: *mut MAPIUID,
15073            lpinterface: *mut windows_core::GUID,
15074            ulflags: u32,
15075            lppprofsect: *mut *mut core::ffi::c_void,
15076        ) -> windows_core::HRESULT {
15077            unsafe {
15078                let this: &Identity =
15079                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15080                IMAPISession_Impl::OpenProfileSection(
15081                    this,
15082                    core::mem::transmute_copy(&lpuid),
15083                    core::mem::transmute_copy(&lpinterface),
15084                    core::mem::transmute_copy(&ulflags),
15085                    core::mem::transmute_copy(&lppprofsect),
15086                )
15087                .into()
15088            }
15089        }
15090        unsafe extern "system" fn GetStatusTable<
15091            Identity: IMAPISession_Impl,
15092            const OFFSET: isize,
15093        >(
15094            this: *mut core::ffi::c_void,
15095            ulflags: u32,
15096            lpptable: *mut *mut core::ffi::c_void,
15097        ) -> windows_core::HRESULT {
15098            unsafe {
15099                let this: &Identity =
15100                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15101                match IMAPISession_Impl::GetStatusTable(this, core::mem::transmute_copy(&ulflags)) {
15102                    Ok(ok__) => {
15103                        lpptable.write(core::mem::transmute(ok__));
15104                        windows_core::HRESULT(0)
15105                    }
15106                    Err(err) => err.into(),
15107                }
15108            }
15109        }
15110        unsafe extern "system" fn OpenEntry<Identity: IMAPISession_Impl, const OFFSET: isize>(
15111            this: *mut core::ffi::c_void,
15112            cbentryid: u32,
15113            lpentryid: *mut ENTRYID,
15114            lpinterface: *mut windows_core::GUID,
15115            ulflags: u32,
15116            lpulobjtype: *mut u32,
15117            lppunk: *mut *mut core::ffi::c_void,
15118        ) -> windows_core::HRESULT {
15119            unsafe {
15120                let this: &Identity =
15121                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15122                IMAPISession_Impl::OpenEntry(
15123                    this,
15124                    core::mem::transmute_copy(&cbentryid),
15125                    core::mem::transmute_copy(&lpentryid),
15126                    core::mem::transmute_copy(&lpinterface),
15127                    core::mem::transmute_copy(&ulflags),
15128                    core::mem::transmute_copy(&lpulobjtype),
15129                    core::mem::transmute_copy(&lppunk),
15130                )
15131                .into()
15132            }
15133        }
15134        unsafe extern "system" fn CompareEntryIDs<
15135            Identity: IMAPISession_Impl,
15136            const OFFSET: isize,
15137        >(
15138            this: *mut core::ffi::c_void,
15139            cbentryid1: u32,
15140            lpentryid1: *mut ENTRYID,
15141            cbentryid2: u32,
15142            lpentryid2: *mut ENTRYID,
15143            ulflags: u32,
15144            lpulresult: *mut u32,
15145        ) -> windows_core::HRESULT {
15146            unsafe {
15147                let this: &Identity =
15148                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15149                IMAPISession_Impl::CompareEntryIDs(
15150                    this,
15151                    core::mem::transmute_copy(&cbentryid1),
15152                    core::mem::transmute_copy(&lpentryid1),
15153                    core::mem::transmute_copy(&cbentryid2),
15154                    core::mem::transmute_copy(&lpentryid2),
15155                    core::mem::transmute_copy(&ulflags),
15156                    core::mem::transmute_copy(&lpulresult),
15157                )
15158                .into()
15159            }
15160        }
15161        unsafe extern "system" fn Advise<Identity: IMAPISession_Impl, const OFFSET: isize>(
15162            this: *mut core::ffi::c_void,
15163            cbentryid: u32,
15164            lpentryid: *mut ENTRYID,
15165            uleventmask: u32,
15166            lpadvisesink: *mut core::ffi::c_void,
15167            lpulconnection: *mut usize,
15168        ) -> windows_core::HRESULT {
15169            unsafe {
15170                let this: &Identity =
15171                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15172                IMAPISession_Impl::Advise(
15173                    this,
15174                    core::mem::transmute_copy(&cbentryid),
15175                    core::mem::transmute_copy(&lpentryid),
15176                    core::mem::transmute_copy(&uleventmask),
15177                    core::mem::transmute_copy(&lpadvisesink),
15178                    core::mem::transmute_copy(&lpulconnection),
15179                )
15180                .into()
15181            }
15182        }
15183        unsafe extern "system" fn Unadvise<Identity: IMAPISession_Impl, const OFFSET: isize>(
15184            this: *mut core::ffi::c_void,
15185            ulconnection: usize,
15186        ) -> windows_core::HRESULT {
15187            unsafe {
15188                let this: &Identity =
15189                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15190                IMAPISession_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
15191            }
15192        }
15193        unsafe extern "system" fn MessageOptions<
15194            Identity: IMAPISession_Impl,
15195            const OFFSET: isize,
15196        >(
15197            this: *mut core::ffi::c_void,
15198            uluiparam: usize,
15199            ulflags: u32,
15200            lpszadrtype: *mut i8,
15201            lpmessage: *mut core::ffi::c_void,
15202        ) -> windows_core::HRESULT {
15203            unsafe {
15204                let this: &Identity =
15205                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15206                IMAPISession_Impl::MessageOptions(
15207                    this,
15208                    core::mem::transmute_copy(&uluiparam),
15209                    core::mem::transmute_copy(&ulflags),
15210                    core::mem::transmute_copy(&lpszadrtype),
15211                    core::mem::transmute_copy(&lpmessage),
15212                )
15213                .into()
15214            }
15215        }
15216        unsafe extern "system" fn QueryDefaultMessageOpt<
15217            Identity: IMAPISession_Impl,
15218            const OFFSET: isize,
15219        >(
15220            this: *mut core::ffi::c_void,
15221            lpszadrtype: *mut i8,
15222            ulflags: u32,
15223            lpcvalues: *mut u32,
15224            lppoptions: *mut *mut SPropValue,
15225        ) -> windows_core::HRESULT {
15226            unsafe {
15227                let this: &Identity =
15228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15229                IMAPISession_Impl::QueryDefaultMessageOpt(
15230                    this,
15231                    core::mem::transmute_copy(&lpszadrtype),
15232                    core::mem::transmute_copy(&ulflags),
15233                    core::mem::transmute_copy(&lpcvalues),
15234                    core::mem::transmute_copy(&lppoptions),
15235                )
15236                .into()
15237            }
15238        }
15239        unsafe extern "system" fn EnumAdrTypes<Identity: IMAPISession_Impl, const OFFSET: isize>(
15240            this: *mut core::ffi::c_void,
15241            ulflags: u32,
15242            lpcadrtypes: *mut u32,
15243            lpppszadrtypes: *mut *mut *mut i8,
15244        ) -> windows_core::HRESULT {
15245            unsafe {
15246                let this: &Identity =
15247                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15248                IMAPISession_Impl::EnumAdrTypes(
15249                    this,
15250                    core::mem::transmute_copy(&ulflags),
15251                    core::mem::transmute_copy(&lpcadrtypes),
15252                    core::mem::transmute_copy(&lpppszadrtypes),
15253                )
15254                .into()
15255            }
15256        }
15257        unsafe extern "system" fn QueryIdentity<
15258            Identity: IMAPISession_Impl,
15259            const OFFSET: isize,
15260        >(
15261            this: *mut core::ffi::c_void,
15262            lpcbentryid: *mut u32,
15263            lppentryid: *mut *mut ENTRYID,
15264        ) -> windows_core::HRESULT {
15265            unsafe {
15266                let this: &Identity =
15267                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15268                IMAPISession_Impl::QueryIdentity(
15269                    this,
15270                    core::mem::transmute_copy(&lpcbentryid),
15271                    core::mem::transmute_copy(&lppentryid),
15272                )
15273                .into()
15274            }
15275        }
15276        unsafe extern "system" fn Logoff<Identity: IMAPISession_Impl, const OFFSET: isize>(
15277            this: *mut core::ffi::c_void,
15278            uluiparam: usize,
15279            ulflags: u32,
15280            ulreserved: u32,
15281        ) -> windows_core::HRESULT {
15282            unsafe {
15283                let this: &Identity =
15284                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15285                IMAPISession_Impl::Logoff(
15286                    this,
15287                    core::mem::transmute_copy(&uluiparam),
15288                    core::mem::transmute_copy(&ulflags),
15289                    core::mem::transmute_copy(&ulreserved),
15290                )
15291                .into()
15292            }
15293        }
15294        unsafe extern "system" fn SetDefaultStore<
15295            Identity: IMAPISession_Impl,
15296            const OFFSET: isize,
15297        >(
15298            this: *mut core::ffi::c_void,
15299            ulflags: u32,
15300            cbentryid: u32,
15301            lpentryid: *mut ENTRYID,
15302        ) -> windows_core::HRESULT {
15303            unsafe {
15304                let this: &Identity =
15305                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15306                IMAPISession_Impl::SetDefaultStore(
15307                    this,
15308                    core::mem::transmute_copy(&ulflags),
15309                    core::mem::transmute_copy(&cbentryid),
15310                    core::mem::transmute_copy(&lpentryid),
15311                )
15312                .into()
15313            }
15314        }
15315        unsafe extern "system" fn AdminServices<
15316            Identity: IMAPISession_Impl,
15317            const OFFSET: isize,
15318        >(
15319            this: *mut core::ffi::c_void,
15320            ulflags: u32,
15321            lppserviceadmin: *mut *mut core::ffi::c_void,
15322        ) -> windows_core::HRESULT {
15323            unsafe {
15324                let this: &Identity =
15325                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15326                match IMAPISession_Impl::AdminServices(this, core::mem::transmute_copy(&ulflags)) {
15327                    Ok(ok__) => {
15328                        lppserviceadmin.write(core::mem::transmute(ok__));
15329                        windows_core::HRESULT(0)
15330                    }
15331                    Err(err) => err.into(),
15332                }
15333            }
15334        }
15335        unsafe extern "system" fn ShowForm<Identity: IMAPISession_Impl, const OFFSET: isize>(
15336            this: *mut core::ffi::c_void,
15337            uluiparam: usize,
15338            lpmsgstore: *mut core::ffi::c_void,
15339            lpparentfolder: *mut core::ffi::c_void,
15340            lpinterface: *mut windows_core::GUID,
15341            ulmessagetoken: usize,
15342            lpmessagesent: *mut core::ffi::c_void,
15343            ulflags: u32,
15344            ulmessagestatus: u32,
15345            ulmessageflags: u32,
15346            ulaccess: u32,
15347            lpszmessageclass: windows_core::PCSTR,
15348        ) -> windows_core::HRESULT {
15349            unsafe {
15350                let this: &Identity =
15351                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15352                IMAPISession_Impl::ShowForm(
15353                    this,
15354                    core::mem::transmute_copy(&uluiparam),
15355                    core::mem::transmute_copy(&lpmsgstore),
15356                    core::mem::transmute_copy(&lpparentfolder),
15357                    core::mem::transmute_copy(&lpinterface),
15358                    core::mem::transmute_copy(&ulmessagetoken),
15359                    core::mem::transmute_copy(&lpmessagesent),
15360                    core::mem::transmute_copy(&ulflags),
15361                    core::mem::transmute_copy(&ulmessagestatus),
15362                    core::mem::transmute_copy(&ulmessageflags),
15363                    core::mem::transmute_copy(&ulaccess),
15364                    core::mem::transmute(&lpszmessageclass),
15365                )
15366                .into()
15367            }
15368        }
15369        unsafe extern "system" fn PrepareForm<Identity: IMAPISession_Impl, const OFFSET: isize>(
15370            this: *mut core::ffi::c_void,
15371            lpinterface: *mut windows_core::GUID,
15372            lpmessage: *mut core::ffi::c_void,
15373            lpulmessagetoken: *mut usize,
15374        ) -> windows_core::HRESULT {
15375            unsafe {
15376                let this: &Identity =
15377                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15378                IMAPISession_Impl::PrepareForm(
15379                    this,
15380                    core::mem::transmute_copy(&lpinterface),
15381                    core::mem::transmute_copy(&lpmessage),
15382                    core::mem::transmute_copy(&lpulmessagetoken),
15383                )
15384                .into()
15385            }
15386        }
15387        Self {
15388            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
15389            GetLastError: GetLastError::<Identity, OFFSET>,
15390            GetMsgStoresTable: GetMsgStoresTable::<Identity, OFFSET>,
15391            OpenMsgStore: OpenMsgStore::<Identity, OFFSET>,
15392            OpenAddressBook: OpenAddressBook::<Identity, OFFSET>,
15393            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
15394            GetStatusTable: GetStatusTable::<Identity, OFFSET>,
15395            OpenEntry: OpenEntry::<Identity, OFFSET>,
15396            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
15397            Advise: Advise::<Identity, OFFSET>,
15398            Unadvise: Unadvise::<Identity, OFFSET>,
15399            MessageOptions: MessageOptions::<Identity, OFFSET>,
15400            QueryDefaultMessageOpt: QueryDefaultMessageOpt::<Identity, OFFSET>,
15401            EnumAdrTypes: EnumAdrTypes::<Identity, OFFSET>,
15402            QueryIdentity: QueryIdentity::<Identity, OFFSET>,
15403            Logoff: Logoff::<Identity, OFFSET>,
15404            SetDefaultStore: SetDefaultStore::<Identity, OFFSET>,
15405            AdminServices: AdminServices::<Identity, OFFSET>,
15406            ShowForm: ShowForm::<Identity, OFFSET>,
15407            PrepareForm: PrepareForm::<Identity, OFFSET>,
15408        }
15409    }
15410    pub fn matches(iid: &windows_core::GUID) -> bool {
15411        iid == &<IMAPISession as windows_core::Interface>::IID
15412    }
15413}
15414impl windows_core::RuntimeName for IMAPISession {}
15415windows_core::imp::define_interface!(
15416    IMAPIStatus,
15417    IMAPIStatus_Vtbl,
15418    0x00020305_0000_0000_c000_000000000046
15419);
15420impl core::ops::Deref for IMAPIStatus {
15421    type Target = IMAPIProp;
15422    fn deref(&self) -> &Self::Target {
15423        unsafe { core::mem::transmute(self) }
15424    }
15425}
15426windows_core::imp::interface_hierarchy!(IMAPIStatus, windows_core::IUnknown, IMAPIProp);
15427impl IMAPIStatus {
15428    pub unsafe fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()> {
15429        unsafe {
15430            (windows_core::Interface::vtable(self).ValidateState)(
15431                windows_core::Interface::as_raw(self),
15432                uluiparam,
15433                ulflags,
15434            )
15435            .ok()
15436        }
15437    }
15438    pub unsafe fn SettingsDialog(
15439        &self,
15440        uluiparam: usize,
15441        ulflags: u32,
15442    ) -> windows_core::Result<()> {
15443        unsafe {
15444            (windows_core::Interface::vtable(self).SettingsDialog)(
15445                windows_core::Interface::as_raw(self),
15446                uluiparam,
15447                ulflags,
15448            )
15449            .ok()
15450        }
15451    }
15452    pub unsafe fn ChangePassword(
15453        &self,
15454        lpoldpass: *mut i8,
15455        lpnewpass: *mut i8,
15456        ulflags: u32,
15457    ) -> windows_core::Result<()> {
15458        unsafe {
15459            (windows_core::Interface::vtable(self).ChangePassword)(
15460                windows_core::Interface::as_raw(self),
15461                lpoldpass as _,
15462                lpnewpass as _,
15463                ulflags,
15464            )
15465            .ok()
15466        }
15467    }
15468    pub unsafe fn FlushQueues(
15469        &self,
15470        uluiparam: usize,
15471        cbtargettransport: u32,
15472        lptargettransport: *mut ENTRYID,
15473        ulflags: u32,
15474    ) -> windows_core::Result<()> {
15475        unsafe {
15476            (windows_core::Interface::vtable(self).FlushQueues)(
15477                windows_core::Interface::as_raw(self),
15478                uluiparam,
15479                cbtargettransport,
15480                lptargettransport as _,
15481                ulflags,
15482            )
15483            .ok()
15484        }
15485    }
15486}
15487#[repr(C)]
15488pub struct IMAPIStatus_Vtbl {
15489    pub base__: IMAPIProp_Vtbl,
15490    pub ValidateState:
15491        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32) -> windows_core::HRESULT,
15492    pub SettingsDialog:
15493        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32) -> windows_core::HRESULT,
15494    pub ChangePassword: unsafe extern "system" fn(
15495        *mut core::ffi::c_void,
15496        *mut i8,
15497        *mut i8,
15498        u32,
15499    ) -> windows_core::HRESULT,
15500    pub FlushQueues: unsafe extern "system" fn(
15501        *mut core::ffi::c_void,
15502        usize,
15503        u32,
15504        *mut ENTRYID,
15505        u32,
15506    ) -> windows_core::HRESULT,
15507}
15508pub trait IMAPIStatus_Impl: IMAPIProp_Impl {
15509    fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()>;
15510    fn SettingsDialog(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()>;
15511    fn ChangePassword(
15512        &self,
15513        lpoldpass: *mut i8,
15514        lpnewpass: *mut i8,
15515        ulflags: u32,
15516    ) -> windows_core::Result<()>;
15517    fn FlushQueues(
15518        &self,
15519        uluiparam: usize,
15520        cbtargettransport: u32,
15521        lptargettransport: *mut ENTRYID,
15522        ulflags: u32,
15523    ) -> windows_core::Result<()>;
15524}
15525impl IMAPIStatus_Vtbl {
15526    pub const fn new<Identity: IMAPIStatus_Impl, const OFFSET: isize>() -> Self {
15527        unsafe extern "system" fn ValidateState<Identity: IMAPIStatus_Impl, const OFFSET: isize>(
15528            this: *mut core::ffi::c_void,
15529            uluiparam: usize,
15530            ulflags: u32,
15531        ) -> windows_core::HRESULT {
15532            unsafe {
15533                let this: &Identity =
15534                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15535                IMAPIStatus_Impl::ValidateState(
15536                    this,
15537                    core::mem::transmute_copy(&uluiparam),
15538                    core::mem::transmute_copy(&ulflags),
15539                )
15540                .into()
15541            }
15542        }
15543        unsafe extern "system" fn SettingsDialog<
15544            Identity: IMAPIStatus_Impl,
15545            const OFFSET: isize,
15546        >(
15547            this: *mut core::ffi::c_void,
15548            uluiparam: usize,
15549            ulflags: u32,
15550        ) -> windows_core::HRESULT {
15551            unsafe {
15552                let this: &Identity =
15553                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15554                IMAPIStatus_Impl::SettingsDialog(
15555                    this,
15556                    core::mem::transmute_copy(&uluiparam),
15557                    core::mem::transmute_copy(&ulflags),
15558                )
15559                .into()
15560            }
15561        }
15562        unsafe extern "system" fn ChangePassword<
15563            Identity: IMAPIStatus_Impl,
15564            const OFFSET: isize,
15565        >(
15566            this: *mut core::ffi::c_void,
15567            lpoldpass: *mut i8,
15568            lpnewpass: *mut i8,
15569            ulflags: u32,
15570        ) -> windows_core::HRESULT {
15571            unsafe {
15572                let this: &Identity =
15573                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15574                IMAPIStatus_Impl::ChangePassword(
15575                    this,
15576                    core::mem::transmute_copy(&lpoldpass),
15577                    core::mem::transmute_copy(&lpnewpass),
15578                    core::mem::transmute_copy(&ulflags),
15579                )
15580                .into()
15581            }
15582        }
15583        unsafe extern "system" fn FlushQueues<Identity: IMAPIStatus_Impl, const OFFSET: isize>(
15584            this: *mut core::ffi::c_void,
15585            uluiparam: usize,
15586            cbtargettransport: u32,
15587            lptargettransport: *mut ENTRYID,
15588            ulflags: u32,
15589        ) -> windows_core::HRESULT {
15590            unsafe {
15591                let this: &Identity =
15592                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15593                IMAPIStatus_Impl::FlushQueues(
15594                    this,
15595                    core::mem::transmute_copy(&uluiparam),
15596                    core::mem::transmute_copy(&cbtargettransport),
15597                    core::mem::transmute_copy(&lptargettransport),
15598                    core::mem::transmute_copy(&ulflags),
15599                )
15600                .into()
15601            }
15602        }
15603        Self {
15604            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
15605            ValidateState: ValidateState::<Identity, OFFSET>,
15606            SettingsDialog: SettingsDialog::<Identity, OFFSET>,
15607            ChangePassword: ChangePassword::<Identity, OFFSET>,
15608            FlushQueues: FlushQueues::<Identity, OFFSET>,
15609        }
15610    }
15611    pub fn matches(iid: &windows_core::GUID) -> bool {
15612        iid == &<IMAPIStatus as windows_core::Interface>::IID
15613            || iid == &<IMAPIProp as windows_core::Interface>::IID
15614    }
15615}
15616impl windows_core::RuntimeName for IMAPIStatus {}
15617pub const IMAPIStatus_ChangePassword: METHODS = METHODS(124i32);
15618pub const IMAPIStatus_FlushQueues: METHODS = METHODS(125i32);
15619pub const IMAPIStatus_SettingsDialog: METHODS = METHODS(123i32);
15620pub const IMAPIStatus_ValidateState: METHODS = METHODS(122i32);
15621windows_core::imp::define_interface!(IMAPISupport, IMAPISupport_Vtbl, 0);
15622windows_core::imp::interface_hierarchy!(IMAPISupport, windows_core::IUnknown);
15623impl IMAPISupport {
15624    pub unsafe fn GetLastError(
15625        &self,
15626        hresult: windows_core::HRESULT,
15627        ulflags: u32,
15628        lppmapierror: *mut *mut MAPIERROR,
15629    ) -> windows_core::Result<()> {
15630        unsafe {
15631            (windows_core::Interface::vtable(self).GetLastError)(
15632                windows_core::Interface::as_raw(self),
15633                hresult,
15634                ulflags,
15635                lppmapierror as _,
15636            )
15637            .ok()
15638        }
15639    }
15640    pub unsafe fn GetMemAllocRoutines(
15641        &self,
15642        lpallocatebuffer: *mut LPALLOCATEBUFFER,
15643        lpallocatemore: *mut LPALLOCATEMORE,
15644        lpfreebuffer: *mut LPFREEBUFFER,
15645    ) -> windows_core::Result<()> {
15646        unsafe {
15647            (windows_core::Interface::vtable(self).GetMemAllocRoutines)(
15648                windows_core::Interface::as_raw(self),
15649                lpallocatebuffer as _,
15650                lpallocatemore as _,
15651                lpfreebuffer as _,
15652            )
15653            .ok()
15654        }
15655    }
15656    pub unsafe fn Subscribe<P3>(
15657        &self,
15658        lpkey: *mut NOTIFKEY,
15659        uleventmask: u32,
15660        ulflags: u32,
15661        lpadvisesink: P3,
15662        lpulconnection: *mut usize,
15663    ) -> windows_core::Result<()>
15664    where
15665        P3: windows_core::Param<IMAPIAdviseSink>,
15666    {
15667        unsafe {
15668            (windows_core::Interface::vtable(self).Subscribe)(
15669                windows_core::Interface::as_raw(self),
15670                lpkey as _,
15671                uleventmask,
15672                ulflags,
15673                lpadvisesink.param().abi(),
15674                lpulconnection as _,
15675            )
15676            .ok()
15677        }
15678    }
15679    pub unsafe fn Unsubscribe(&self, ulconnection: usize) -> windows_core::Result<()> {
15680        unsafe {
15681            (windows_core::Interface::vtable(self).Unsubscribe)(
15682                windows_core::Interface::as_raw(self),
15683                ulconnection,
15684            )
15685            .ok()
15686        }
15687    }
15688    pub unsafe fn Notify(
15689        &self,
15690        lpkey: *mut NOTIFKEY,
15691        cnotification: u32,
15692        lpnotifications: *mut NOTIFICATION,
15693        lpulflags: *mut u32,
15694    ) -> windows_core::Result<()> {
15695        unsafe {
15696            (windows_core::Interface::vtable(self).Notify)(
15697                windows_core::Interface::as_raw(self),
15698                lpkey as _,
15699                cnotification,
15700                lpnotifications as _,
15701                lpulflags as _,
15702            )
15703            .ok()
15704        }
15705    }
15706    pub unsafe fn ModifyStatusRow(
15707        &self,
15708        cvalues: u32,
15709        lpcolumnvals: *mut SPropValue,
15710        ulflags: u32,
15711    ) -> windows_core::Result<()> {
15712        unsafe {
15713            (windows_core::Interface::vtable(self).ModifyStatusRow)(
15714                windows_core::Interface::as_raw(self),
15715                cvalues,
15716                lpcolumnvals as _,
15717                ulflags,
15718            )
15719            .ok()
15720        }
15721    }
15722    pub unsafe fn OpenProfileSection(
15723        &self,
15724        lpuid: *mut MAPIUID,
15725        ulflags: u32,
15726        lppprofileobj: *mut Option<IProfSect>,
15727    ) -> windows_core::Result<()> {
15728        unsafe {
15729            (windows_core::Interface::vtable(self).OpenProfileSection)(
15730                windows_core::Interface::as_raw(self),
15731                lpuid as _,
15732                ulflags,
15733                core::mem::transmute(lppprofileobj),
15734            )
15735            .ok()
15736        }
15737    }
15738    pub unsafe fn RegisterPreprocessor<P3, P4>(
15739        &self,
15740        lpmuid: *mut MAPIUID,
15741        lpszadrtype: *mut i8,
15742        lpszdllname: *mut i8,
15743        lpszpreprocess: P3,
15744        lpszremovepreprocessinfo: P4,
15745        ulflags: u32,
15746    ) -> windows_core::Result<()>
15747    where
15748        P3: windows_core::Param<windows_core::PCSTR>,
15749        P4: windows_core::Param<windows_core::PCSTR>,
15750    {
15751        unsafe {
15752            (windows_core::Interface::vtable(self).RegisterPreprocessor)(
15753                windows_core::Interface::as_raw(self),
15754                lpmuid as _,
15755                lpszadrtype as _,
15756                lpszdllname as _,
15757                lpszpreprocess.param().abi(),
15758                lpszremovepreprocessinfo.param().abi(),
15759                ulflags,
15760            )
15761            .ok()
15762        }
15763    }
15764    pub unsafe fn NewUID(&self, lpmuid: *mut MAPIUID) -> windows_core::Result<()> {
15765        unsafe {
15766            (windows_core::Interface::vtable(self).NewUID)(
15767                windows_core::Interface::as_raw(self),
15768                lpmuid as _,
15769            )
15770            .ok()
15771        }
15772    }
15773    pub unsafe fn MakeInvalid(
15774        &self,
15775        ulflags: u32,
15776        lpobject: *mut core::ffi::c_void,
15777        ulrefcount: u32,
15778        cmethods: u32,
15779    ) -> windows_core::Result<()> {
15780        unsafe {
15781            (windows_core::Interface::vtable(self).MakeInvalid)(
15782                windows_core::Interface::as_raw(self),
15783                ulflags,
15784                lpobject as _,
15785                ulrefcount,
15786                cmethods,
15787            )
15788            .ok()
15789        }
15790    }
15791    pub unsafe fn SpoolerYield(&self, ulflags: u32) -> windows_core::Result<()> {
15792        unsafe {
15793            (windows_core::Interface::vtable(self).SpoolerYield)(
15794                windows_core::Interface::as_raw(self),
15795                ulflags,
15796            )
15797            .ok()
15798        }
15799    }
15800    pub unsafe fn SpoolerNotify(
15801        &self,
15802        ulflags: u32,
15803        lpvdata: *mut core::ffi::c_void,
15804    ) -> windows_core::Result<()> {
15805        unsafe {
15806            (windows_core::Interface::vtable(self).SpoolerNotify)(
15807                windows_core::Interface::as_raw(self),
15808                ulflags,
15809                lpvdata as _,
15810            )
15811            .ok()
15812        }
15813    }
15814    pub unsafe fn CreateOneOff(
15815        &self,
15816        lpszname: *mut i8,
15817        lpszadrtype: *mut i8,
15818        lpszaddress: *mut i8,
15819        ulflags: u32,
15820        lpcbentryid: *mut u32,
15821        lppentryid: *mut *mut ENTRYID,
15822    ) -> windows_core::Result<()> {
15823        unsafe {
15824            (windows_core::Interface::vtable(self).CreateOneOff)(
15825                windows_core::Interface::as_raw(self),
15826                lpszname as _,
15827                lpszadrtype as _,
15828                lpszaddress as _,
15829                ulflags,
15830                lpcbentryid as _,
15831                lppentryid as _,
15832            )
15833            .ok()
15834        }
15835    }
15836    pub unsafe fn SetProviderUID(
15837        &self,
15838        lpproviderid: *mut MAPIUID,
15839        ulflags: u32,
15840    ) -> windows_core::Result<()> {
15841        unsafe {
15842            (windows_core::Interface::vtable(self).SetProviderUID)(
15843                windows_core::Interface::as_raw(self),
15844                lpproviderid as _,
15845                ulflags,
15846            )
15847            .ok()
15848        }
15849    }
15850    pub unsafe fn CompareEntryIDs(
15851        &self,
15852        cbentry1: u32,
15853        lpentry1: *mut ENTRYID,
15854        cbentry2: u32,
15855        lpentry2: *mut ENTRYID,
15856        ulcompareflags: u32,
15857        lpulresult: *mut u32,
15858    ) -> windows_core::Result<()> {
15859        unsafe {
15860            (windows_core::Interface::vtable(self).CompareEntryIDs)(
15861                windows_core::Interface::as_raw(self),
15862                cbentry1,
15863                lpentry1 as _,
15864                cbentry2,
15865                lpentry2 as _,
15866                ulcompareflags,
15867                lpulresult as _,
15868            )
15869            .ok()
15870        }
15871    }
15872    pub unsafe fn OpenTemplateID<P3, P6>(
15873        &self,
15874        cbtemplateid: u32,
15875        lptemplateid: *mut ENTRYID,
15876        ultemplateflags: u32,
15877        lpmapipropdata: P3,
15878        lpinterface: *mut windows_core::GUID,
15879        lppmapipropnew: *mut Option<IMAPIProp>,
15880        lpmapipropsibling: P6,
15881    ) -> windows_core::Result<()>
15882    where
15883        P3: windows_core::Param<IMAPIProp>,
15884        P6: windows_core::Param<IMAPIProp>,
15885    {
15886        unsafe {
15887            (windows_core::Interface::vtable(self).OpenTemplateID)(
15888                windows_core::Interface::as_raw(self),
15889                cbtemplateid,
15890                lptemplateid as _,
15891                ultemplateflags,
15892                lpmapipropdata.param().abi(),
15893                lpinterface as _,
15894                core::mem::transmute(lppmapipropnew),
15895                lpmapipropsibling.param().abi(),
15896            )
15897            .ok()
15898        }
15899    }
15900    pub unsafe fn OpenEntry(
15901        &self,
15902        cbentryid: u32,
15903        lpentryid: *mut ENTRYID,
15904        lpinterface: *mut windows_core::GUID,
15905        ulopenflags: u32,
15906        lpulobjtype: *mut u32,
15907        lppunk: *mut Option<windows_core::IUnknown>,
15908    ) -> windows_core::Result<()> {
15909        unsafe {
15910            (windows_core::Interface::vtable(self).OpenEntry)(
15911                windows_core::Interface::as_raw(self),
15912                cbentryid,
15913                lpentryid as _,
15914                lpinterface as _,
15915                ulopenflags,
15916                lpulobjtype as _,
15917                core::mem::transmute(lppunk),
15918            )
15919            .ok()
15920        }
15921    }
15922    pub unsafe fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
15923        unsafe {
15924            let mut result__ = core::mem::zeroed();
15925            (windows_core::Interface::vtable(self).GetOneOffTable)(
15926                windows_core::Interface::as_raw(self),
15927                ulflags,
15928                &mut result__,
15929            )
15930            .and_then(|| windows_core::Type::from_abi(result__))
15931        }
15932    }
15933    pub unsafe fn Address(
15934        &self,
15935        lpuluiparam: *mut usize,
15936        lpadrparms: *mut ADRPARM,
15937        lppadrlist: *mut *mut ADRLIST,
15938    ) -> windows_core::Result<()> {
15939        unsafe {
15940            (windows_core::Interface::vtable(self).Address)(
15941                windows_core::Interface::as_raw(self),
15942                lpuluiparam as _,
15943                lpadrparms as _,
15944                lppadrlist as _,
15945            )
15946            .ok()
15947        }
15948    }
15949    pub unsafe fn Details(
15950        &self,
15951        lpuluiparam: *mut usize,
15952        lpfndismiss: LPFNDISMISS,
15953        lpvdismisscontext: *mut core::ffi::c_void,
15954        cbentryid: u32,
15955        lpentryid: *mut ENTRYID,
15956        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
15957        lpvbuttoncontext: *mut core::ffi::c_void,
15958        lpszbuttontext: *mut i8,
15959        ulflags: u32,
15960    ) -> windows_core::Result<()> {
15961        unsafe {
15962            (windows_core::Interface::vtable(self).Details)(
15963                windows_core::Interface::as_raw(self),
15964                lpuluiparam as _,
15965                lpfndismiss,
15966                lpvdismisscontext as _,
15967                cbentryid,
15968                lpentryid as _,
15969                lpfbuttoncallback,
15970                lpvbuttoncontext as _,
15971                lpszbuttontext as _,
15972                ulflags,
15973            )
15974            .ok()
15975        }
15976    }
15977    pub unsafe fn NewEntry(
15978        &self,
15979        uluiparam: usize,
15980        ulflags: u32,
15981        cbeidcontainer: u32,
15982        lpeidcontainer: *mut ENTRYID,
15983        cbeidnewentrytpl: u32,
15984        lpeidnewentrytpl: *mut ENTRYID,
15985        lpcbeidnewentry: *mut u32,
15986        lppeidnewentry: *mut *mut ENTRYID,
15987    ) -> windows_core::Result<()> {
15988        unsafe {
15989            (windows_core::Interface::vtable(self).NewEntry)(
15990                windows_core::Interface::as_raw(self),
15991                uluiparam,
15992                ulflags,
15993                cbeidcontainer,
15994                lpeidcontainer as _,
15995                cbeidnewentrytpl,
15996                lpeidnewentrytpl as _,
15997                lpcbeidnewentry as _,
15998                lppeidnewentry as _,
15999            )
16000            .ok()
16001        }
16002    }
16003    pub unsafe fn DoConfigPropsheet<P3, P4>(
16004        &self,
16005        uluiparam: usize,
16006        ulflags: u32,
16007        lpsztitle: *mut i8,
16008        lpdisplaytable: P3,
16009        lpconfigdata: P4,
16010        ultoppage: u32,
16011    ) -> windows_core::Result<()>
16012    where
16013        P3: windows_core::Param<IMAPITable>,
16014        P4: windows_core::Param<IMAPIProp>,
16015    {
16016        unsafe {
16017            (windows_core::Interface::vtable(self).DoConfigPropsheet)(
16018                windows_core::Interface::as_raw(self),
16019                uluiparam,
16020                ulflags,
16021                lpsztitle as _,
16022                lpdisplaytable.param().abi(),
16023                lpconfigdata.param().abi(),
16024                ultoppage,
16025            )
16026            .ok()
16027        }
16028    }
16029    pub unsafe fn CopyMessages<P6>(
16030        &self,
16031        lpsrcinterface: *mut windows_core::GUID,
16032        lpsrcfolder: *mut core::ffi::c_void,
16033        lpmsglist: *mut SBinaryArray,
16034        lpdestinterface: *mut windows_core::GUID,
16035        lpdestfolder: *mut core::ffi::c_void,
16036        uluiparam: usize,
16037        lpprogress: P6,
16038        ulflags: u32,
16039    ) -> windows_core::Result<()>
16040    where
16041        P6: windows_core::Param<IMAPIProgress>,
16042    {
16043        unsafe {
16044            (windows_core::Interface::vtable(self).CopyMessages)(
16045                windows_core::Interface::as_raw(self),
16046                lpsrcinterface as _,
16047                lpsrcfolder as _,
16048                lpmsglist as _,
16049                lpdestinterface as _,
16050                lpdestfolder as _,
16051                uluiparam,
16052                lpprogress.param().abi(),
16053                ulflags,
16054            )
16055            .ok()
16056        }
16057    }
16058    pub unsafe fn CopyFolder<P8>(
16059        &self,
16060        lpsrcinterface: *mut windows_core::GUID,
16061        lpsrcfolder: *mut core::ffi::c_void,
16062        cbentryid: u32,
16063        lpentryid: *mut ENTRYID,
16064        lpdestinterface: *mut windows_core::GUID,
16065        lpdestfolder: *mut core::ffi::c_void,
16066        lsznewfoldername: *mut i8,
16067        uluiparam: usize,
16068        lpprogress: P8,
16069        ulflags: u32,
16070    ) -> windows_core::Result<()>
16071    where
16072        P8: windows_core::Param<IMAPIProgress>,
16073    {
16074        unsafe {
16075            (windows_core::Interface::vtable(self).CopyFolder)(
16076                windows_core::Interface::as_raw(self),
16077                lpsrcinterface as _,
16078                lpsrcfolder as _,
16079                cbentryid,
16080                lpentryid as _,
16081                lpdestinterface as _,
16082                lpdestfolder as _,
16083                lsznewfoldername as _,
16084                uluiparam,
16085                lpprogress.param().abi(),
16086                ulflags,
16087            )
16088            .ok()
16089        }
16090    }
16091    pub unsafe fn DoCopyTo<P6>(
16092        &self,
16093        lpsrcinterface: *mut windows_core::GUID,
16094        lpsrcobj: *mut core::ffi::c_void,
16095        ciidexclude: u32,
16096        rgiidexclude: *mut windows_core::GUID,
16097        lpexcludeprops: *mut SPropTagArray,
16098        uluiparam: usize,
16099        lpprogress: P6,
16100        lpdestinterface: *mut windows_core::GUID,
16101        lpdestobj: *mut core::ffi::c_void,
16102        ulflags: u32,
16103        lppproblems: *mut *mut SPropProblemArray,
16104    ) -> windows_core::Result<()>
16105    where
16106        P6: windows_core::Param<IMAPIProgress>,
16107    {
16108        unsafe {
16109            (windows_core::Interface::vtable(self).DoCopyTo)(
16110                windows_core::Interface::as_raw(self),
16111                lpsrcinterface as _,
16112                lpsrcobj as _,
16113                ciidexclude,
16114                rgiidexclude as _,
16115                lpexcludeprops as _,
16116                uluiparam,
16117                lpprogress.param().abi(),
16118                lpdestinterface as _,
16119                lpdestobj as _,
16120                ulflags,
16121                lppproblems as _,
16122            )
16123            .ok()
16124        }
16125    }
16126    pub unsafe fn DoCopyProps<P4>(
16127        &self,
16128        lpsrcinterface: *mut windows_core::GUID,
16129        lpsrcobj: *mut core::ffi::c_void,
16130        lpincludeprops: *mut SPropTagArray,
16131        uluiparam: usize,
16132        lpprogress: P4,
16133        lpdestinterface: *mut windows_core::GUID,
16134        lpdestobj: *mut core::ffi::c_void,
16135        ulflags: u32,
16136        lppproblems: *mut *mut SPropProblemArray,
16137    ) -> windows_core::Result<()>
16138    where
16139        P4: windows_core::Param<IMAPIProgress>,
16140    {
16141        unsafe {
16142            (windows_core::Interface::vtable(self).DoCopyProps)(
16143                windows_core::Interface::as_raw(self),
16144                lpsrcinterface as _,
16145                lpsrcobj as _,
16146                lpincludeprops as _,
16147                uluiparam,
16148                lpprogress.param().abi(),
16149                lpdestinterface as _,
16150                lpdestobj as _,
16151                ulflags,
16152                lppproblems as _,
16153            )
16154            .ok()
16155        }
16156    }
16157    pub unsafe fn DoProgressDialog(
16158        &self,
16159        uluiparam: usize,
16160        ulflags: u32,
16161    ) -> windows_core::Result<IMAPIProgress> {
16162        unsafe {
16163            let mut result__ = core::mem::zeroed();
16164            (windows_core::Interface::vtable(self).DoProgressDialog)(
16165                windows_core::Interface::as_raw(self),
16166                uluiparam,
16167                ulflags,
16168                &mut result__,
16169            )
16170            .and_then(|| windows_core::Type::from_abi(result__))
16171        }
16172    }
16173    pub unsafe fn ReadReceipt<P1>(
16174        &self,
16175        ulflags: u32,
16176        lpreadmessage: P1,
16177    ) -> windows_core::Result<IMessage>
16178    where
16179        P1: windows_core::Param<IMessage>,
16180    {
16181        unsafe {
16182            let mut result__ = core::mem::zeroed();
16183            (windows_core::Interface::vtable(self).ReadReceipt)(
16184                windows_core::Interface::as_raw(self),
16185                ulflags,
16186                lpreadmessage.param().abi(),
16187                &mut result__,
16188            )
16189            .and_then(|| windows_core::Type::from_abi(result__))
16190        }
16191    }
16192    pub unsafe fn PrepareSubmit<P0>(
16193        &self,
16194        lpmessage: P0,
16195        lpulflags: *mut u32,
16196    ) -> windows_core::Result<()>
16197    where
16198        P0: windows_core::Param<IMessage>,
16199    {
16200        unsafe {
16201            (windows_core::Interface::vtable(self).PrepareSubmit)(
16202                windows_core::Interface::as_raw(self),
16203                lpmessage.param().abi(),
16204                lpulflags as _,
16205            )
16206            .ok()
16207        }
16208    }
16209    pub unsafe fn ExpandRecips<P0>(
16210        &self,
16211        lpmessage: P0,
16212        lpulflags: *mut u32,
16213    ) -> windows_core::Result<()>
16214    where
16215        P0: windows_core::Param<IMessage>,
16216    {
16217        unsafe {
16218            (windows_core::Interface::vtable(self).ExpandRecips)(
16219                windows_core::Interface::as_raw(self),
16220                lpmessage.param().abi(),
16221                lpulflags as _,
16222            )
16223            .ok()
16224        }
16225    }
16226    pub unsafe fn UpdatePAB<P1>(&self, ulflags: u32, lpmessage: P1) -> windows_core::Result<()>
16227    where
16228        P1: windows_core::Param<IMessage>,
16229    {
16230        unsafe {
16231            (windows_core::Interface::vtable(self).UpdatePAB)(
16232                windows_core::Interface::as_raw(self),
16233                ulflags,
16234                lpmessage.param().abi(),
16235            )
16236            .ok()
16237        }
16238    }
16239    pub unsafe fn DoSentMail<P1>(&self, ulflags: u32, lpmessage: P1) -> windows_core::Result<()>
16240    where
16241        P1: windows_core::Param<IMessage>,
16242    {
16243        unsafe {
16244            (windows_core::Interface::vtable(self).DoSentMail)(
16245                windows_core::Interface::as_raw(self),
16246                ulflags,
16247                lpmessage.param().abi(),
16248            )
16249            .ok()
16250        }
16251    }
16252    pub unsafe fn OpenAddressBook(
16253        &self,
16254        lpinterface: *mut windows_core::GUID,
16255        ulflags: u32,
16256        lppadrbook: *mut Option<IAddrBook>,
16257    ) -> windows_core::Result<()> {
16258        unsafe {
16259            (windows_core::Interface::vtable(self).OpenAddressBook)(
16260                windows_core::Interface::as_raw(self),
16261                lpinterface as _,
16262                ulflags,
16263                core::mem::transmute(lppadrbook),
16264            )
16265            .ok()
16266        }
16267    }
16268    pub unsafe fn Preprocess(
16269        &self,
16270        ulflags: u32,
16271        cbentryid: u32,
16272        lpentryid: *mut ENTRYID,
16273    ) -> windows_core::Result<()> {
16274        unsafe {
16275            (windows_core::Interface::vtable(self).Preprocess)(
16276                windows_core::Interface::as_raw(self),
16277                ulflags,
16278                cbentryid,
16279                lpentryid as _,
16280            )
16281            .ok()
16282        }
16283    }
16284    pub unsafe fn CompleteMsg(
16285        &self,
16286        ulflags: u32,
16287        cbentryid: u32,
16288        lpentryid: *mut ENTRYID,
16289    ) -> windows_core::Result<()> {
16290        unsafe {
16291            (windows_core::Interface::vtable(self).CompleteMsg)(
16292                windows_core::Interface::as_raw(self),
16293                ulflags,
16294                cbentryid,
16295                lpentryid as _,
16296            )
16297            .ok()
16298        }
16299    }
16300    pub unsafe fn StoreLogoffTransports(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
16301        unsafe {
16302            (windows_core::Interface::vtable(self).StoreLogoffTransports)(
16303                windows_core::Interface::as_raw(self),
16304                lpulflags as _,
16305            )
16306            .ok()
16307        }
16308    }
16309    pub unsafe fn StatusRecips<P0>(
16310        &self,
16311        lpmessage: P0,
16312        lpreciplist: *mut ADRLIST,
16313    ) -> windows_core::Result<()>
16314    where
16315        P0: windows_core::Param<IMessage>,
16316    {
16317        unsafe {
16318            (windows_core::Interface::vtable(self).StatusRecips)(
16319                windows_core::Interface::as_raw(self),
16320                lpmessage.param().abi(),
16321                lpreciplist as _,
16322            )
16323            .ok()
16324        }
16325    }
16326    pub unsafe fn WrapStoreEntryID(
16327        &self,
16328        cborigentry: u32,
16329        lporigentry: *mut ENTRYID,
16330        lpcbwrappedentry: *mut u32,
16331        lppwrappedentry: *mut *mut ENTRYID,
16332    ) -> windows_core::Result<()> {
16333        unsafe {
16334            (windows_core::Interface::vtable(self).WrapStoreEntryID)(
16335                windows_core::Interface::as_raw(self),
16336                cborigentry,
16337                lporigentry as _,
16338                lpcbwrappedentry as _,
16339                lppwrappedentry as _,
16340            )
16341            .ok()
16342        }
16343    }
16344    pub unsafe fn ModifyProfile(&self, ulflags: u32) -> windows_core::Result<()> {
16345        unsafe {
16346            (windows_core::Interface::vtable(self).ModifyProfile)(
16347                windows_core::Interface::as_raw(self),
16348                ulflags,
16349            )
16350            .ok()
16351        }
16352    }
16353    pub unsafe fn IStorageFromStream<P0>(
16354        &self,
16355        lpunkin: P0,
16356        lpinterface: *mut windows_core::GUID,
16357        ulflags: u32,
16358        lppstorageout: *mut Option<windows::Win32::System::Com::StructuredStorage::IStorage>,
16359    ) -> windows_core::Result<()>
16360    where
16361        P0: windows_core::Param<windows_core::IUnknown>,
16362    {
16363        unsafe {
16364            (windows_core::Interface::vtable(self).IStorageFromStream)(
16365                windows_core::Interface::as_raw(self),
16366                lpunkin.param().abi(),
16367                lpinterface as _,
16368                ulflags,
16369                core::mem::transmute(lppstorageout),
16370            )
16371            .ok()
16372        }
16373    }
16374    pub unsafe fn GetSvcConfigSupportObj(
16375        &self,
16376        ulflags: u32,
16377    ) -> windows_core::Result<IMAPISupport> {
16378        unsafe {
16379            let mut result__ = core::mem::zeroed();
16380            (windows_core::Interface::vtable(self).GetSvcConfigSupportObj)(
16381                windows_core::Interface::as_raw(self),
16382                ulflags,
16383                &mut result__,
16384            )
16385            .and_then(|| windows_core::Type::from_abi(result__))
16386        }
16387    }
16388}
16389#[repr(C)]
16390pub struct IMAPISupport_Vtbl {
16391    pub base__: windows_core::IUnknown_Vtbl,
16392    pub GetLastError: unsafe extern "system" fn(
16393        *mut core::ffi::c_void,
16394        windows_core::HRESULT,
16395        u32,
16396        *mut *mut MAPIERROR,
16397    ) -> windows_core::HRESULT,
16398    pub GetMemAllocRoutines: unsafe extern "system" fn(
16399        *mut core::ffi::c_void,
16400        *mut LPALLOCATEBUFFER,
16401        *mut LPALLOCATEMORE,
16402        *mut LPFREEBUFFER,
16403    ) -> windows_core::HRESULT,
16404    pub Subscribe: unsafe extern "system" fn(
16405        *mut core::ffi::c_void,
16406        *mut NOTIFKEY,
16407        u32,
16408        u32,
16409        *mut core::ffi::c_void,
16410        *mut usize,
16411    ) -> windows_core::HRESULT,
16412    pub Unsubscribe:
16413        unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
16414    pub Notify: unsafe extern "system" fn(
16415        *mut core::ffi::c_void,
16416        *mut NOTIFKEY,
16417        u32,
16418        *mut NOTIFICATION,
16419        *mut u32,
16420    ) -> windows_core::HRESULT,
16421    pub ModifyStatusRow: unsafe extern "system" fn(
16422        *mut core::ffi::c_void,
16423        u32,
16424        *mut SPropValue,
16425        u32,
16426    ) -> windows_core::HRESULT,
16427    pub OpenProfileSection: unsafe extern "system" fn(
16428        *mut core::ffi::c_void,
16429        *mut MAPIUID,
16430        u32,
16431        *mut *mut core::ffi::c_void,
16432    ) -> windows_core::HRESULT,
16433    pub RegisterPreprocessor: unsafe extern "system" fn(
16434        *mut core::ffi::c_void,
16435        *mut MAPIUID,
16436        *mut i8,
16437        *mut i8,
16438        windows_core::PCSTR,
16439        windows_core::PCSTR,
16440        u32,
16441    ) -> windows_core::HRESULT,
16442    pub NewUID:
16443        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
16444    pub MakeInvalid: unsafe extern "system" fn(
16445        *mut core::ffi::c_void,
16446        u32,
16447        *mut core::ffi::c_void,
16448        u32,
16449        u32,
16450    ) -> windows_core::HRESULT,
16451    pub SpoolerYield:
16452        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
16453    pub SpoolerNotify: unsafe extern "system" fn(
16454        *mut core::ffi::c_void,
16455        u32,
16456        *mut core::ffi::c_void,
16457    ) -> windows_core::HRESULT,
16458    pub CreateOneOff: unsafe extern "system" fn(
16459        *mut core::ffi::c_void,
16460        *mut i8,
16461        *mut i8,
16462        *mut i8,
16463        u32,
16464        *mut u32,
16465        *mut *mut ENTRYID,
16466    ) -> windows_core::HRESULT,
16467    pub SetProviderUID: unsafe extern "system" fn(
16468        *mut core::ffi::c_void,
16469        *mut MAPIUID,
16470        u32,
16471    ) -> windows_core::HRESULT,
16472    pub CompareEntryIDs: unsafe extern "system" fn(
16473        *mut core::ffi::c_void,
16474        u32,
16475        *mut ENTRYID,
16476        u32,
16477        *mut ENTRYID,
16478        u32,
16479        *mut u32,
16480    ) -> windows_core::HRESULT,
16481    pub OpenTemplateID: unsafe extern "system" fn(
16482        *mut core::ffi::c_void,
16483        u32,
16484        *mut ENTRYID,
16485        u32,
16486        *mut core::ffi::c_void,
16487        *mut windows_core::GUID,
16488        *mut *mut core::ffi::c_void,
16489        *mut core::ffi::c_void,
16490    ) -> windows_core::HRESULT,
16491    pub OpenEntry: unsafe extern "system" fn(
16492        *mut core::ffi::c_void,
16493        u32,
16494        *mut ENTRYID,
16495        *mut windows_core::GUID,
16496        u32,
16497        *mut u32,
16498        *mut *mut core::ffi::c_void,
16499    ) -> windows_core::HRESULT,
16500    pub GetOneOffTable: unsafe extern "system" fn(
16501        *mut core::ffi::c_void,
16502        u32,
16503        *mut *mut core::ffi::c_void,
16504    ) -> windows_core::HRESULT,
16505    pub Address: unsafe extern "system" fn(
16506        *mut core::ffi::c_void,
16507        *mut usize,
16508        *mut ADRPARM,
16509        *mut *mut ADRLIST,
16510    ) -> windows_core::HRESULT,
16511    pub Details: unsafe extern "system" fn(
16512        *mut core::ffi::c_void,
16513        *mut usize,
16514        LPFNDISMISS,
16515        *mut core::ffi::c_void,
16516        u32,
16517        *mut ENTRYID,
16518        windows::Win32::System::AddressBook::LPFNBUTTON,
16519        *mut core::ffi::c_void,
16520        *mut i8,
16521        u32,
16522    ) -> windows_core::HRESULT,
16523    pub NewEntry: unsafe extern "system" fn(
16524        *mut core::ffi::c_void,
16525        usize,
16526        u32,
16527        u32,
16528        *mut ENTRYID,
16529        u32,
16530        *mut ENTRYID,
16531        *mut u32,
16532        *mut *mut ENTRYID,
16533    ) -> windows_core::HRESULT,
16534    pub DoConfigPropsheet: unsafe extern "system" fn(
16535        *mut core::ffi::c_void,
16536        usize,
16537        u32,
16538        *mut i8,
16539        *mut core::ffi::c_void,
16540        *mut core::ffi::c_void,
16541        u32,
16542    ) -> windows_core::HRESULT,
16543    pub CopyMessages: unsafe extern "system" fn(
16544        *mut core::ffi::c_void,
16545        *mut windows_core::GUID,
16546        *mut core::ffi::c_void,
16547        *mut SBinaryArray,
16548        *mut windows_core::GUID,
16549        *mut core::ffi::c_void,
16550        usize,
16551        *mut core::ffi::c_void,
16552        u32,
16553    ) -> windows_core::HRESULT,
16554    pub CopyFolder: unsafe extern "system" fn(
16555        *mut core::ffi::c_void,
16556        *mut windows_core::GUID,
16557        *mut core::ffi::c_void,
16558        u32,
16559        *mut ENTRYID,
16560        *mut windows_core::GUID,
16561        *mut core::ffi::c_void,
16562        *mut i8,
16563        usize,
16564        *mut core::ffi::c_void,
16565        u32,
16566    ) -> windows_core::HRESULT,
16567    pub DoCopyTo: unsafe extern "system" fn(
16568        *mut core::ffi::c_void,
16569        *mut windows_core::GUID,
16570        *mut core::ffi::c_void,
16571        u32,
16572        *mut windows_core::GUID,
16573        *mut SPropTagArray,
16574        usize,
16575        *mut core::ffi::c_void,
16576        *mut windows_core::GUID,
16577        *mut core::ffi::c_void,
16578        u32,
16579        *mut *mut SPropProblemArray,
16580    ) -> windows_core::HRESULT,
16581    pub DoCopyProps: unsafe extern "system" fn(
16582        *mut core::ffi::c_void,
16583        *mut windows_core::GUID,
16584        *mut core::ffi::c_void,
16585        *mut SPropTagArray,
16586        usize,
16587        *mut core::ffi::c_void,
16588        *mut windows_core::GUID,
16589        *mut core::ffi::c_void,
16590        u32,
16591        *mut *mut SPropProblemArray,
16592    ) -> windows_core::HRESULT,
16593    pub DoProgressDialog: unsafe extern "system" fn(
16594        *mut core::ffi::c_void,
16595        usize,
16596        u32,
16597        *mut *mut core::ffi::c_void,
16598    ) -> windows_core::HRESULT,
16599    pub ReadReceipt: unsafe extern "system" fn(
16600        *mut core::ffi::c_void,
16601        u32,
16602        *mut core::ffi::c_void,
16603        *mut *mut core::ffi::c_void,
16604    ) -> windows_core::HRESULT,
16605    pub PrepareSubmit: unsafe extern "system" fn(
16606        *mut core::ffi::c_void,
16607        *mut core::ffi::c_void,
16608        *mut u32,
16609    ) -> windows_core::HRESULT,
16610    pub ExpandRecips: unsafe extern "system" fn(
16611        *mut core::ffi::c_void,
16612        *mut core::ffi::c_void,
16613        *mut u32,
16614    ) -> windows_core::HRESULT,
16615    pub UpdatePAB: unsafe extern "system" fn(
16616        *mut core::ffi::c_void,
16617        u32,
16618        *mut core::ffi::c_void,
16619    ) -> windows_core::HRESULT,
16620    pub DoSentMail: unsafe extern "system" fn(
16621        *mut core::ffi::c_void,
16622        u32,
16623        *mut core::ffi::c_void,
16624    ) -> windows_core::HRESULT,
16625    pub OpenAddressBook: unsafe extern "system" fn(
16626        *mut core::ffi::c_void,
16627        *mut windows_core::GUID,
16628        u32,
16629        *mut *mut core::ffi::c_void,
16630    ) -> windows_core::HRESULT,
16631    pub Preprocess: unsafe extern "system" fn(
16632        *mut core::ffi::c_void,
16633        u32,
16634        u32,
16635        *mut ENTRYID,
16636    ) -> windows_core::HRESULT,
16637    pub CompleteMsg: unsafe extern "system" fn(
16638        *mut core::ffi::c_void,
16639        u32,
16640        u32,
16641        *mut ENTRYID,
16642    ) -> windows_core::HRESULT,
16643    pub StoreLogoffTransports:
16644        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
16645    pub StatusRecips: unsafe extern "system" fn(
16646        *mut core::ffi::c_void,
16647        *mut core::ffi::c_void,
16648        *mut ADRLIST,
16649    ) -> windows_core::HRESULT,
16650    pub WrapStoreEntryID: unsafe extern "system" fn(
16651        *mut core::ffi::c_void,
16652        u32,
16653        *mut ENTRYID,
16654        *mut u32,
16655        *mut *mut ENTRYID,
16656    ) -> windows_core::HRESULT,
16657    pub ModifyProfile:
16658        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
16659    pub IStorageFromStream: unsafe extern "system" fn(
16660        *mut core::ffi::c_void,
16661        *mut core::ffi::c_void,
16662        *mut windows_core::GUID,
16663        u32,
16664        *mut *mut core::ffi::c_void,
16665    ) -> windows_core::HRESULT,
16666    pub GetSvcConfigSupportObj: unsafe extern "system" fn(
16667        *mut core::ffi::c_void,
16668        u32,
16669        *mut *mut core::ffi::c_void,
16670    ) -> windows_core::HRESULT,
16671}
16672pub trait IMAPISupport_Impl: windows_core::IUnknownImpl {
16673    fn GetLastError(
16674        &self,
16675        hresult: windows_core::HRESULT,
16676        ulflags: u32,
16677        lppmapierror: *mut *mut MAPIERROR,
16678    ) -> windows_core::Result<()>;
16679    fn GetMemAllocRoutines(
16680        &self,
16681        lpallocatebuffer: *mut LPALLOCATEBUFFER,
16682        lpallocatemore: *mut LPALLOCATEMORE,
16683        lpfreebuffer: *mut LPFREEBUFFER,
16684    ) -> windows_core::Result<()>;
16685    fn Subscribe(
16686        &self,
16687        lpkey: *mut NOTIFKEY,
16688        uleventmask: u32,
16689        ulflags: u32,
16690        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
16691        lpulconnection: *mut usize,
16692    ) -> windows_core::Result<()>;
16693    fn Unsubscribe(&self, ulconnection: usize) -> windows_core::Result<()>;
16694    fn Notify(
16695        &self,
16696        lpkey: *mut NOTIFKEY,
16697        cnotification: u32,
16698        lpnotifications: *mut NOTIFICATION,
16699        lpulflags: *mut u32,
16700    ) -> windows_core::Result<()>;
16701    fn ModifyStatusRow(
16702        &self,
16703        cvalues: u32,
16704        lpcolumnvals: *mut SPropValue,
16705        ulflags: u32,
16706    ) -> windows_core::Result<()>;
16707    fn OpenProfileSection(
16708        &self,
16709        lpuid: *mut MAPIUID,
16710        ulflags: u32,
16711        lppprofileobj: windows_core::OutRef<'_, IProfSect>,
16712    ) -> windows_core::Result<()>;
16713    fn RegisterPreprocessor(
16714        &self,
16715        lpmuid: *mut MAPIUID,
16716        lpszadrtype: *mut i8,
16717        lpszdllname: *mut i8,
16718        lpszpreprocess: &windows_core::PCSTR,
16719        lpszremovepreprocessinfo: &windows_core::PCSTR,
16720        ulflags: u32,
16721    ) -> windows_core::Result<()>;
16722    fn NewUID(&self, lpmuid: *mut MAPIUID) -> windows_core::Result<()>;
16723    fn MakeInvalid(
16724        &self,
16725        ulflags: u32,
16726        lpobject: *mut core::ffi::c_void,
16727        ulrefcount: u32,
16728        cmethods: u32,
16729    ) -> windows_core::Result<()>;
16730    fn SpoolerYield(&self, ulflags: u32) -> windows_core::Result<()>;
16731    fn SpoolerNotify(
16732        &self,
16733        ulflags: u32,
16734        lpvdata: *mut core::ffi::c_void,
16735    ) -> windows_core::Result<()>;
16736    fn CreateOneOff(
16737        &self,
16738        lpszname: *mut i8,
16739        lpszadrtype: *mut i8,
16740        lpszaddress: *mut i8,
16741        ulflags: u32,
16742        lpcbentryid: *mut u32,
16743        lppentryid: *mut *mut ENTRYID,
16744    ) -> windows_core::Result<()>;
16745    fn SetProviderUID(&self, lpproviderid: *mut MAPIUID, ulflags: u32) -> windows_core::Result<()>;
16746    fn CompareEntryIDs(
16747        &self,
16748        cbentry1: u32,
16749        lpentry1: *mut ENTRYID,
16750        cbentry2: u32,
16751        lpentry2: *mut ENTRYID,
16752        ulcompareflags: u32,
16753        lpulresult: *mut u32,
16754    ) -> windows_core::Result<()>;
16755    fn OpenTemplateID(
16756        &self,
16757        cbtemplateid: u32,
16758        lptemplateid: *mut ENTRYID,
16759        ultemplateflags: u32,
16760        lpmapipropdata: windows_core::Ref<'_, IMAPIProp>,
16761        lpinterface: *mut windows_core::GUID,
16762        lppmapipropnew: windows_core::OutRef<'_, IMAPIProp>,
16763        lpmapipropsibling: windows_core::Ref<'_, IMAPIProp>,
16764    ) -> windows_core::Result<()>;
16765    fn OpenEntry(
16766        &self,
16767        cbentryid: u32,
16768        lpentryid: *mut ENTRYID,
16769        lpinterface: *mut windows_core::GUID,
16770        ulopenflags: u32,
16771        lpulobjtype: *mut u32,
16772        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
16773    ) -> windows_core::Result<()>;
16774    fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
16775    fn Address(
16776        &self,
16777        lpuluiparam: *mut usize,
16778        lpadrparms: *mut ADRPARM,
16779        lppadrlist: *mut *mut ADRLIST,
16780    ) -> windows_core::Result<()>;
16781    fn Details(
16782        &self,
16783        lpuluiparam: *mut usize,
16784        lpfndismiss: LPFNDISMISS,
16785        lpvdismisscontext: *mut core::ffi::c_void,
16786        cbentryid: u32,
16787        lpentryid: *mut ENTRYID,
16788        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
16789        lpvbuttoncontext: *mut core::ffi::c_void,
16790        lpszbuttontext: *mut i8,
16791        ulflags: u32,
16792    ) -> windows_core::Result<()>;
16793    fn NewEntry(
16794        &self,
16795        uluiparam: usize,
16796        ulflags: u32,
16797        cbeidcontainer: u32,
16798        lpeidcontainer: *mut ENTRYID,
16799        cbeidnewentrytpl: u32,
16800        lpeidnewentrytpl: *mut ENTRYID,
16801        lpcbeidnewentry: *mut u32,
16802        lppeidnewentry: *mut *mut ENTRYID,
16803    ) -> windows_core::Result<()>;
16804    fn DoConfigPropsheet(
16805        &self,
16806        uluiparam: usize,
16807        ulflags: u32,
16808        lpsztitle: *mut i8,
16809        lpdisplaytable: windows_core::Ref<'_, IMAPITable>,
16810        lpconfigdata: windows_core::Ref<'_, IMAPIProp>,
16811        ultoppage: u32,
16812    ) -> windows_core::Result<()>;
16813    fn CopyMessages(
16814        &self,
16815        lpsrcinterface: *mut windows_core::GUID,
16816        lpsrcfolder: *mut core::ffi::c_void,
16817        lpmsglist: *mut SBinaryArray,
16818        lpdestinterface: *mut windows_core::GUID,
16819        lpdestfolder: *mut core::ffi::c_void,
16820        uluiparam: usize,
16821        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
16822        ulflags: u32,
16823    ) -> windows_core::Result<()>;
16824    fn CopyFolder(
16825        &self,
16826        lpsrcinterface: *mut windows_core::GUID,
16827        lpsrcfolder: *mut core::ffi::c_void,
16828        cbentryid: u32,
16829        lpentryid: *mut ENTRYID,
16830        lpdestinterface: *mut windows_core::GUID,
16831        lpdestfolder: *mut core::ffi::c_void,
16832        lsznewfoldername: *mut i8,
16833        uluiparam: usize,
16834        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
16835        ulflags: u32,
16836    ) -> windows_core::Result<()>;
16837    fn DoCopyTo(
16838        &self,
16839        lpsrcinterface: *mut windows_core::GUID,
16840        lpsrcobj: *mut core::ffi::c_void,
16841        ciidexclude: u32,
16842        rgiidexclude: *mut windows_core::GUID,
16843        lpexcludeprops: *mut SPropTagArray,
16844        uluiparam: usize,
16845        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
16846        lpdestinterface: *mut windows_core::GUID,
16847        lpdestobj: *mut core::ffi::c_void,
16848        ulflags: u32,
16849        lppproblems: *mut *mut SPropProblemArray,
16850    ) -> windows_core::Result<()>;
16851    fn DoCopyProps(
16852        &self,
16853        lpsrcinterface: *mut windows_core::GUID,
16854        lpsrcobj: *mut core::ffi::c_void,
16855        lpincludeprops: *mut SPropTagArray,
16856        uluiparam: usize,
16857        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
16858        lpdestinterface: *mut windows_core::GUID,
16859        lpdestobj: *mut core::ffi::c_void,
16860        ulflags: u32,
16861        lppproblems: *mut *mut SPropProblemArray,
16862    ) -> windows_core::Result<()>;
16863    fn DoProgressDialog(
16864        &self,
16865        uluiparam: usize,
16866        ulflags: u32,
16867    ) -> windows_core::Result<IMAPIProgress>;
16868    fn ReadReceipt(
16869        &self,
16870        ulflags: u32,
16871        lpreadmessage: windows_core::Ref<'_, IMessage>,
16872    ) -> windows_core::Result<IMessage>;
16873    fn PrepareSubmit(
16874        &self,
16875        lpmessage: windows_core::Ref<'_, IMessage>,
16876        lpulflags: *mut u32,
16877    ) -> windows_core::Result<()>;
16878    fn ExpandRecips(
16879        &self,
16880        lpmessage: windows_core::Ref<'_, IMessage>,
16881        lpulflags: *mut u32,
16882    ) -> windows_core::Result<()>;
16883    fn UpdatePAB(
16884        &self,
16885        ulflags: u32,
16886        lpmessage: windows_core::Ref<'_, IMessage>,
16887    ) -> windows_core::Result<()>;
16888    fn DoSentMail(
16889        &self,
16890        ulflags: u32,
16891        lpmessage: windows_core::Ref<'_, IMessage>,
16892    ) -> windows_core::Result<()>;
16893    fn OpenAddressBook(
16894        &self,
16895        lpinterface: *mut windows_core::GUID,
16896        ulflags: u32,
16897        lppadrbook: windows_core::OutRef<'_, IAddrBook>,
16898    ) -> windows_core::Result<()>;
16899    fn Preprocess(
16900        &self,
16901        ulflags: u32,
16902        cbentryid: u32,
16903        lpentryid: *mut ENTRYID,
16904    ) -> windows_core::Result<()>;
16905    fn CompleteMsg(
16906        &self,
16907        ulflags: u32,
16908        cbentryid: u32,
16909        lpentryid: *mut ENTRYID,
16910    ) -> windows_core::Result<()>;
16911    fn StoreLogoffTransports(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
16912    fn StatusRecips(
16913        &self,
16914        lpmessage: windows_core::Ref<'_, IMessage>,
16915        lpreciplist: *mut ADRLIST,
16916    ) -> windows_core::Result<()>;
16917    fn WrapStoreEntryID(
16918        &self,
16919        cborigentry: u32,
16920        lporigentry: *mut ENTRYID,
16921        lpcbwrappedentry: *mut u32,
16922        lppwrappedentry: *mut *mut ENTRYID,
16923    ) -> windows_core::Result<()>;
16924    fn ModifyProfile(&self, ulflags: u32) -> windows_core::Result<()>;
16925    fn IStorageFromStream(
16926        &self,
16927        lpunkin: windows_core::Ref<'_, windows_core::IUnknown>,
16928        lpinterface: *mut windows_core::GUID,
16929        ulflags: u32,
16930        lppstorageout: windows_core::OutRef<
16931            '_,
16932            windows::Win32::System::Com::StructuredStorage::IStorage,
16933        >,
16934    ) -> windows_core::Result<()>;
16935    fn GetSvcConfigSupportObj(&self, ulflags: u32) -> windows_core::Result<IMAPISupport>;
16936}
16937impl IMAPISupport_Vtbl {
16938    pub const fn new<Identity: IMAPISupport_Impl, const OFFSET: isize>() -> Self {
16939        unsafe extern "system" fn GetLastError<Identity: IMAPISupport_Impl, const OFFSET: isize>(
16940            this: *mut core::ffi::c_void,
16941            hresult: windows_core::HRESULT,
16942            ulflags: u32,
16943            lppmapierror: *mut *mut MAPIERROR,
16944        ) -> windows_core::HRESULT {
16945            unsafe {
16946                let this: &Identity =
16947                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16948                IMAPISupport_Impl::GetLastError(
16949                    this,
16950                    core::mem::transmute_copy(&hresult),
16951                    core::mem::transmute_copy(&ulflags),
16952                    core::mem::transmute_copy(&lppmapierror),
16953                )
16954                .into()
16955            }
16956        }
16957        unsafe extern "system" fn GetMemAllocRoutines<
16958            Identity: IMAPISupport_Impl,
16959            const OFFSET: isize,
16960        >(
16961            this: *mut core::ffi::c_void,
16962            lpallocatebuffer: *mut LPALLOCATEBUFFER,
16963            lpallocatemore: *mut LPALLOCATEMORE,
16964            lpfreebuffer: *mut LPFREEBUFFER,
16965        ) -> windows_core::HRESULT {
16966            unsafe {
16967                let this: &Identity =
16968                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16969                IMAPISupport_Impl::GetMemAllocRoutines(
16970                    this,
16971                    core::mem::transmute_copy(&lpallocatebuffer),
16972                    core::mem::transmute_copy(&lpallocatemore),
16973                    core::mem::transmute_copy(&lpfreebuffer),
16974                )
16975                .into()
16976            }
16977        }
16978        unsafe extern "system" fn Subscribe<Identity: IMAPISupport_Impl, const OFFSET: isize>(
16979            this: *mut core::ffi::c_void,
16980            lpkey: *mut NOTIFKEY,
16981            uleventmask: u32,
16982            ulflags: u32,
16983            lpadvisesink: *mut core::ffi::c_void,
16984            lpulconnection: *mut usize,
16985        ) -> windows_core::HRESULT {
16986            unsafe {
16987                let this: &Identity =
16988                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16989                IMAPISupport_Impl::Subscribe(
16990                    this,
16991                    core::mem::transmute_copy(&lpkey),
16992                    core::mem::transmute_copy(&uleventmask),
16993                    core::mem::transmute_copy(&ulflags),
16994                    core::mem::transmute_copy(&lpadvisesink),
16995                    core::mem::transmute_copy(&lpulconnection),
16996                )
16997                .into()
16998            }
16999        }
17000        unsafe extern "system" fn Unsubscribe<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17001            this: *mut core::ffi::c_void,
17002            ulconnection: usize,
17003        ) -> windows_core::HRESULT {
17004            unsafe {
17005                let this: &Identity =
17006                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17007                IMAPISupport_Impl::Unsubscribe(this, core::mem::transmute_copy(&ulconnection))
17008                    .into()
17009            }
17010        }
17011        unsafe extern "system" fn Notify<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17012            this: *mut core::ffi::c_void,
17013            lpkey: *mut NOTIFKEY,
17014            cnotification: u32,
17015            lpnotifications: *mut NOTIFICATION,
17016            lpulflags: *mut u32,
17017        ) -> windows_core::HRESULT {
17018            unsafe {
17019                let this: &Identity =
17020                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17021                IMAPISupport_Impl::Notify(
17022                    this,
17023                    core::mem::transmute_copy(&lpkey),
17024                    core::mem::transmute_copy(&cnotification),
17025                    core::mem::transmute_copy(&lpnotifications),
17026                    core::mem::transmute_copy(&lpulflags),
17027                )
17028                .into()
17029            }
17030        }
17031        unsafe extern "system" fn ModifyStatusRow<
17032            Identity: IMAPISupport_Impl,
17033            const OFFSET: isize,
17034        >(
17035            this: *mut core::ffi::c_void,
17036            cvalues: u32,
17037            lpcolumnvals: *mut SPropValue,
17038            ulflags: u32,
17039        ) -> windows_core::HRESULT {
17040            unsafe {
17041                let this: &Identity =
17042                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17043                IMAPISupport_Impl::ModifyStatusRow(
17044                    this,
17045                    core::mem::transmute_copy(&cvalues),
17046                    core::mem::transmute_copy(&lpcolumnvals),
17047                    core::mem::transmute_copy(&ulflags),
17048                )
17049                .into()
17050            }
17051        }
17052        unsafe extern "system" fn OpenProfileSection<
17053            Identity: IMAPISupport_Impl,
17054            const OFFSET: isize,
17055        >(
17056            this: *mut core::ffi::c_void,
17057            lpuid: *mut MAPIUID,
17058            ulflags: u32,
17059            lppprofileobj: *mut *mut core::ffi::c_void,
17060        ) -> windows_core::HRESULT {
17061            unsafe {
17062                let this: &Identity =
17063                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17064                IMAPISupport_Impl::OpenProfileSection(
17065                    this,
17066                    core::mem::transmute_copy(&lpuid),
17067                    core::mem::transmute_copy(&ulflags),
17068                    core::mem::transmute_copy(&lppprofileobj),
17069                )
17070                .into()
17071            }
17072        }
17073        unsafe extern "system" fn RegisterPreprocessor<
17074            Identity: IMAPISupport_Impl,
17075            const OFFSET: isize,
17076        >(
17077            this: *mut core::ffi::c_void,
17078            lpmuid: *mut MAPIUID,
17079            lpszadrtype: *mut i8,
17080            lpszdllname: *mut i8,
17081            lpszpreprocess: windows_core::PCSTR,
17082            lpszremovepreprocessinfo: windows_core::PCSTR,
17083            ulflags: u32,
17084        ) -> windows_core::HRESULT {
17085            unsafe {
17086                let this: &Identity =
17087                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17088                IMAPISupport_Impl::RegisterPreprocessor(
17089                    this,
17090                    core::mem::transmute_copy(&lpmuid),
17091                    core::mem::transmute_copy(&lpszadrtype),
17092                    core::mem::transmute_copy(&lpszdllname),
17093                    core::mem::transmute(&lpszpreprocess),
17094                    core::mem::transmute(&lpszremovepreprocessinfo),
17095                    core::mem::transmute_copy(&ulflags),
17096                )
17097                .into()
17098            }
17099        }
17100        unsafe extern "system" fn NewUID<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17101            this: *mut core::ffi::c_void,
17102            lpmuid: *mut MAPIUID,
17103        ) -> windows_core::HRESULT {
17104            unsafe {
17105                let this: &Identity =
17106                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17107                IMAPISupport_Impl::NewUID(this, core::mem::transmute_copy(&lpmuid)).into()
17108            }
17109        }
17110        unsafe extern "system" fn MakeInvalid<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17111            this: *mut core::ffi::c_void,
17112            ulflags: u32,
17113            lpobject: *mut core::ffi::c_void,
17114            ulrefcount: u32,
17115            cmethods: u32,
17116        ) -> windows_core::HRESULT {
17117            unsafe {
17118                let this: &Identity =
17119                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17120                IMAPISupport_Impl::MakeInvalid(
17121                    this,
17122                    core::mem::transmute_copy(&ulflags),
17123                    core::mem::transmute_copy(&lpobject),
17124                    core::mem::transmute_copy(&ulrefcount),
17125                    core::mem::transmute_copy(&cmethods),
17126                )
17127                .into()
17128            }
17129        }
17130        unsafe extern "system" fn SpoolerYield<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17131            this: *mut core::ffi::c_void,
17132            ulflags: u32,
17133        ) -> windows_core::HRESULT {
17134            unsafe {
17135                let this: &Identity =
17136                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17137                IMAPISupport_Impl::SpoolerYield(this, core::mem::transmute_copy(&ulflags)).into()
17138            }
17139        }
17140        unsafe extern "system" fn SpoolerNotify<
17141            Identity: IMAPISupport_Impl,
17142            const OFFSET: isize,
17143        >(
17144            this: *mut core::ffi::c_void,
17145            ulflags: u32,
17146            lpvdata: *mut core::ffi::c_void,
17147        ) -> windows_core::HRESULT {
17148            unsafe {
17149                let this: &Identity =
17150                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17151                IMAPISupport_Impl::SpoolerNotify(
17152                    this,
17153                    core::mem::transmute_copy(&ulflags),
17154                    core::mem::transmute_copy(&lpvdata),
17155                )
17156                .into()
17157            }
17158        }
17159        unsafe extern "system" fn CreateOneOff<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17160            this: *mut core::ffi::c_void,
17161            lpszname: *mut i8,
17162            lpszadrtype: *mut i8,
17163            lpszaddress: *mut i8,
17164            ulflags: u32,
17165            lpcbentryid: *mut u32,
17166            lppentryid: *mut *mut ENTRYID,
17167        ) -> windows_core::HRESULT {
17168            unsafe {
17169                let this: &Identity =
17170                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17171                IMAPISupport_Impl::CreateOneOff(
17172                    this,
17173                    core::mem::transmute_copy(&lpszname),
17174                    core::mem::transmute_copy(&lpszadrtype),
17175                    core::mem::transmute_copy(&lpszaddress),
17176                    core::mem::transmute_copy(&ulflags),
17177                    core::mem::transmute_copy(&lpcbentryid),
17178                    core::mem::transmute_copy(&lppentryid),
17179                )
17180                .into()
17181            }
17182        }
17183        unsafe extern "system" fn SetProviderUID<
17184            Identity: IMAPISupport_Impl,
17185            const OFFSET: isize,
17186        >(
17187            this: *mut core::ffi::c_void,
17188            lpproviderid: *mut MAPIUID,
17189            ulflags: u32,
17190        ) -> windows_core::HRESULT {
17191            unsafe {
17192                let this: &Identity =
17193                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17194                IMAPISupport_Impl::SetProviderUID(
17195                    this,
17196                    core::mem::transmute_copy(&lpproviderid),
17197                    core::mem::transmute_copy(&ulflags),
17198                )
17199                .into()
17200            }
17201        }
17202        unsafe extern "system" fn CompareEntryIDs<
17203            Identity: IMAPISupport_Impl,
17204            const OFFSET: isize,
17205        >(
17206            this: *mut core::ffi::c_void,
17207            cbentry1: u32,
17208            lpentry1: *mut ENTRYID,
17209            cbentry2: u32,
17210            lpentry2: *mut ENTRYID,
17211            ulcompareflags: u32,
17212            lpulresult: *mut u32,
17213        ) -> windows_core::HRESULT {
17214            unsafe {
17215                let this: &Identity =
17216                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17217                IMAPISupport_Impl::CompareEntryIDs(
17218                    this,
17219                    core::mem::transmute_copy(&cbentry1),
17220                    core::mem::transmute_copy(&lpentry1),
17221                    core::mem::transmute_copy(&cbentry2),
17222                    core::mem::transmute_copy(&lpentry2),
17223                    core::mem::transmute_copy(&ulcompareflags),
17224                    core::mem::transmute_copy(&lpulresult),
17225                )
17226                .into()
17227            }
17228        }
17229        unsafe extern "system" fn OpenTemplateID<
17230            Identity: IMAPISupport_Impl,
17231            const OFFSET: isize,
17232        >(
17233            this: *mut core::ffi::c_void,
17234            cbtemplateid: u32,
17235            lptemplateid: *mut ENTRYID,
17236            ultemplateflags: u32,
17237            lpmapipropdata: *mut core::ffi::c_void,
17238            lpinterface: *mut windows_core::GUID,
17239            lppmapipropnew: *mut *mut core::ffi::c_void,
17240            lpmapipropsibling: *mut core::ffi::c_void,
17241        ) -> windows_core::HRESULT {
17242            unsafe {
17243                let this: &Identity =
17244                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17245                IMAPISupport_Impl::OpenTemplateID(
17246                    this,
17247                    core::mem::transmute_copy(&cbtemplateid),
17248                    core::mem::transmute_copy(&lptemplateid),
17249                    core::mem::transmute_copy(&ultemplateflags),
17250                    core::mem::transmute_copy(&lpmapipropdata),
17251                    core::mem::transmute_copy(&lpinterface),
17252                    core::mem::transmute_copy(&lppmapipropnew),
17253                    core::mem::transmute_copy(&lpmapipropsibling),
17254                )
17255                .into()
17256            }
17257        }
17258        unsafe extern "system" fn OpenEntry<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17259            this: *mut core::ffi::c_void,
17260            cbentryid: u32,
17261            lpentryid: *mut ENTRYID,
17262            lpinterface: *mut windows_core::GUID,
17263            ulopenflags: u32,
17264            lpulobjtype: *mut u32,
17265            lppunk: *mut *mut core::ffi::c_void,
17266        ) -> windows_core::HRESULT {
17267            unsafe {
17268                let this: &Identity =
17269                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17270                IMAPISupport_Impl::OpenEntry(
17271                    this,
17272                    core::mem::transmute_copy(&cbentryid),
17273                    core::mem::transmute_copy(&lpentryid),
17274                    core::mem::transmute_copy(&lpinterface),
17275                    core::mem::transmute_copy(&ulopenflags),
17276                    core::mem::transmute_copy(&lpulobjtype),
17277                    core::mem::transmute_copy(&lppunk),
17278                )
17279                .into()
17280            }
17281        }
17282        unsafe extern "system" fn GetOneOffTable<
17283            Identity: IMAPISupport_Impl,
17284            const OFFSET: isize,
17285        >(
17286            this: *mut core::ffi::c_void,
17287            ulflags: u32,
17288            lpptable: *mut *mut core::ffi::c_void,
17289        ) -> windows_core::HRESULT {
17290            unsafe {
17291                let this: &Identity =
17292                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17293                match IMAPISupport_Impl::GetOneOffTable(this, core::mem::transmute_copy(&ulflags)) {
17294                    Ok(ok__) => {
17295                        lpptable.write(core::mem::transmute(ok__));
17296                        windows_core::HRESULT(0)
17297                    }
17298                    Err(err) => err.into(),
17299                }
17300            }
17301        }
17302        unsafe extern "system" fn Address<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17303            this: *mut core::ffi::c_void,
17304            lpuluiparam: *mut usize,
17305            lpadrparms: *mut ADRPARM,
17306            lppadrlist: *mut *mut ADRLIST,
17307        ) -> windows_core::HRESULT {
17308            unsafe {
17309                let this: &Identity =
17310                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17311                IMAPISupport_Impl::Address(
17312                    this,
17313                    core::mem::transmute_copy(&lpuluiparam),
17314                    core::mem::transmute_copy(&lpadrparms),
17315                    core::mem::transmute_copy(&lppadrlist),
17316                )
17317                .into()
17318            }
17319        }
17320        unsafe extern "system" fn Details<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17321            this: *mut core::ffi::c_void,
17322            lpuluiparam: *mut usize,
17323            lpfndismiss: LPFNDISMISS,
17324            lpvdismisscontext: *mut core::ffi::c_void,
17325            cbentryid: u32,
17326            lpentryid: *mut ENTRYID,
17327            lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
17328            lpvbuttoncontext: *mut core::ffi::c_void,
17329            lpszbuttontext: *mut i8,
17330            ulflags: u32,
17331        ) -> windows_core::HRESULT {
17332            unsafe {
17333                let this: &Identity =
17334                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17335                IMAPISupport_Impl::Details(
17336                    this,
17337                    core::mem::transmute_copy(&lpuluiparam),
17338                    core::mem::transmute_copy(&lpfndismiss),
17339                    core::mem::transmute_copy(&lpvdismisscontext),
17340                    core::mem::transmute_copy(&cbentryid),
17341                    core::mem::transmute_copy(&lpentryid),
17342                    core::mem::transmute_copy(&lpfbuttoncallback),
17343                    core::mem::transmute_copy(&lpvbuttoncontext),
17344                    core::mem::transmute_copy(&lpszbuttontext),
17345                    core::mem::transmute_copy(&ulflags),
17346                )
17347                .into()
17348            }
17349        }
17350        unsafe extern "system" fn NewEntry<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17351            this: *mut core::ffi::c_void,
17352            uluiparam: usize,
17353            ulflags: u32,
17354            cbeidcontainer: u32,
17355            lpeidcontainer: *mut ENTRYID,
17356            cbeidnewentrytpl: u32,
17357            lpeidnewentrytpl: *mut ENTRYID,
17358            lpcbeidnewentry: *mut u32,
17359            lppeidnewentry: *mut *mut ENTRYID,
17360        ) -> windows_core::HRESULT {
17361            unsafe {
17362                let this: &Identity =
17363                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17364                IMAPISupport_Impl::NewEntry(
17365                    this,
17366                    core::mem::transmute_copy(&uluiparam),
17367                    core::mem::transmute_copy(&ulflags),
17368                    core::mem::transmute_copy(&cbeidcontainer),
17369                    core::mem::transmute_copy(&lpeidcontainer),
17370                    core::mem::transmute_copy(&cbeidnewentrytpl),
17371                    core::mem::transmute_copy(&lpeidnewentrytpl),
17372                    core::mem::transmute_copy(&lpcbeidnewentry),
17373                    core::mem::transmute_copy(&lppeidnewentry),
17374                )
17375                .into()
17376            }
17377        }
17378        unsafe extern "system" fn DoConfigPropsheet<
17379            Identity: IMAPISupport_Impl,
17380            const OFFSET: isize,
17381        >(
17382            this: *mut core::ffi::c_void,
17383            uluiparam: usize,
17384            ulflags: u32,
17385            lpsztitle: *mut i8,
17386            lpdisplaytable: *mut core::ffi::c_void,
17387            lpconfigdata: *mut core::ffi::c_void,
17388            ultoppage: u32,
17389        ) -> windows_core::HRESULT {
17390            unsafe {
17391                let this: &Identity =
17392                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17393                IMAPISupport_Impl::DoConfigPropsheet(
17394                    this,
17395                    core::mem::transmute_copy(&uluiparam),
17396                    core::mem::transmute_copy(&ulflags),
17397                    core::mem::transmute_copy(&lpsztitle),
17398                    core::mem::transmute_copy(&lpdisplaytable),
17399                    core::mem::transmute_copy(&lpconfigdata),
17400                    core::mem::transmute_copy(&ultoppage),
17401                )
17402                .into()
17403            }
17404        }
17405        unsafe extern "system" fn CopyMessages<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17406            this: *mut core::ffi::c_void,
17407            lpsrcinterface: *mut windows_core::GUID,
17408            lpsrcfolder: *mut core::ffi::c_void,
17409            lpmsglist: *mut SBinaryArray,
17410            lpdestinterface: *mut windows_core::GUID,
17411            lpdestfolder: *mut core::ffi::c_void,
17412            uluiparam: usize,
17413            lpprogress: *mut core::ffi::c_void,
17414            ulflags: u32,
17415        ) -> windows_core::HRESULT {
17416            unsafe {
17417                let this: &Identity =
17418                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17419                IMAPISupport_Impl::CopyMessages(
17420                    this,
17421                    core::mem::transmute_copy(&lpsrcinterface),
17422                    core::mem::transmute_copy(&lpsrcfolder),
17423                    core::mem::transmute_copy(&lpmsglist),
17424                    core::mem::transmute_copy(&lpdestinterface),
17425                    core::mem::transmute_copy(&lpdestfolder),
17426                    core::mem::transmute_copy(&uluiparam),
17427                    core::mem::transmute_copy(&lpprogress),
17428                    core::mem::transmute_copy(&ulflags),
17429                )
17430                .into()
17431            }
17432        }
17433        unsafe extern "system" fn CopyFolder<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17434            this: *mut core::ffi::c_void,
17435            lpsrcinterface: *mut windows_core::GUID,
17436            lpsrcfolder: *mut core::ffi::c_void,
17437            cbentryid: u32,
17438            lpentryid: *mut ENTRYID,
17439            lpdestinterface: *mut windows_core::GUID,
17440            lpdestfolder: *mut core::ffi::c_void,
17441            lsznewfoldername: *mut i8,
17442            uluiparam: usize,
17443            lpprogress: *mut core::ffi::c_void,
17444            ulflags: u32,
17445        ) -> windows_core::HRESULT {
17446            unsafe {
17447                let this: &Identity =
17448                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17449                IMAPISupport_Impl::CopyFolder(
17450                    this,
17451                    core::mem::transmute_copy(&lpsrcinterface),
17452                    core::mem::transmute_copy(&lpsrcfolder),
17453                    core::mem::transmute_copy(&cbentryid),
17454                    core::mem::transmute_copy(&lpentryid),
17455                    core::mem::transmute_copy(&lpdestinterface),
17456                    core::mem::transmute_copy(&lpdestfolder),
17457                    core::mem::transmute_copy(&lsznewfoldername),
17458                    core::mem::transmute_copy(&uluiparam),
17459                    core::mem::transmute_copy(&lpprogress),
17460                    core::mem::transmute_copy(&ulflags),
17461                )
17462                .into()
17463            }
17464        }
17465        unsafe extern "system" fn DoCopyTo<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17466            this: *mut core::ffi::c_void,
17467            lpsrcinterface: *mut windows_core::GUID,
17468            lpsrcobj: *mut core::ffi::c_void,
17469            ciidexclude: u32,
17470            rgiidexclude: *mut windows_core::GUID,
17471            lpexcludeprops: *mut SPropTagArray,
17472            uluiparam: usize,
17473            lpprogress: *mut core::ffi::c_void,
17474            lpdestinterface: *mut windows_core::GUID,
17475            lpdestobj: *mut core::ffi::c_void,
17476            ulflags: u32,
17477            lppproblems: *mut *mut SPropProblemArray,
17478        ) -> windows_core::HRESULT {
17479            unsafe {
17480                let this: &Identity =
17481                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17482                IMAPISupport_Impl::DoCopyTo(
17483                    this,
17484                    core::mem::transmute_copy(&lpsrcinterface),
17485                    core::mem::transmute_copy(&lpsrcobj),
17486                    core::mem::transmute_copy(&ciidexclude),
17487                    core::mem::transmute_copy(&rgiidexclude),
17488                    core::mem::transmute_copy(&lpexcludeprops),
17489                    core::mem::transmute_copy(&uluiparam),
17490                    core::mem::transmute_copy(&lpprogress),
17491                    core::mem::transmute_copy(&lpdestinterface),
17492                    core::mem::transmute_copy(&lpdestobj),
17493                    core::mem::transmute_copy(&ulflags),
17494                    core::mem::transmute_copy(&lppproblems),
17495                )
17496                .into()
17497            }
17498        }
17499        unsafe extern "system" fn DoCopyProps<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17500            this: *mut core::ffi::c_void,
17501            lpsrcinterface: *mut windows_core::GUID,
17502            lpsrcobj: *mut core::ffi::c_void,
17503            lpincludeprops: *mut SPropTagArray,
17504            uluiparam: usize,
17505            lpprogress: *mut core::ffi::c_void,
17506            lpdestinterface: *mut windows_core::GUID,
17507            lpdestobj: *mut core::ffi::c_void,
17508            ulflags: u32,
17509            lppproblems: *mut *mut SPropProblemArray,
17510        ) -> windows_core::HRESULT {
17511            unsafe {
17512                let this: &Identity =
17513                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17514                IMAPISupport_Impl::DoCopyProps(
17515                    this,
17516                    core::mem::transmute_copy(&lpsrcinterface),
17517                    core::mem::transmute_copy(&lpsrcobj),
17518                    core::mem::transmute_copy(&lpincludeprops),
17519                    core::mem::transmute_copy(&uluiparam),
17520                    core::mem::transmute_copy(&lpprogress),
17521                    core::mem::transmute_copy(&lpdestinterface),
17522                    core::mem::transmute_copy(&lpdestobj),
17523                    core::mem::transmute_copy(&ulflags),
17524                    core::mem::transmute_copy(&lppproblems),
17525                )
17526                .into()
17527            }
17528        }
17529        unsafe extern "system" fn DoProgressDialog<
17530            Identity: IMAPISupport_Impl,
17531            const OFFSET: isize,
17532        >(
17533            this: *mut core::ffi::c_void,
17534            uluiparam: usize,
17535            ulflags: u32,
17536            lppprogress: *mut *mut core::ffi::c_void,
17537        ) -> windows_core::HRESULT {
17538            unsafe {
17539                let this: &Identity =
17540                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17541                match IMAPISupport_Impl::DoProgressDialog(
17542                    this,
17543                    core::mem::transmute_copy(&uluiparam),
17544                    core::mem::transmute_copy(&ulflags),
17545                ) {
17546                    Ok(ok__) => {
17547                        lppprogress.write(core::mem::transmute(ok__));
17548                        windows_core::HRESULT(0)
17549                    }
17550                    Err(err) => err.into(),
17551                }
17552            }
17553        }
17554        unsafe extern "system" fn ReadReceipt<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17555            this: *mut core::ffi::c_void,
17556            ulflags: u32,
17557            lpreadmessage: *mut core::ffi::c_void,
17558            lppemptymessage: *mut *mut core::ffi::c_void,
17559        ) -> windows_core::HRESULT {
17560            unsafe {
17561                let this: &Identity =
17562                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17563                match IMAPISupport_Impl::ReadReceipt(
17564                    this,
17565                    core::mem::transmute_copy(&ulflags),
17566                    core::mem::transmute_copy(&lpreadmessage),
17567                ) {
17568                    Ok(ok__) => {
17569                        lppemptymessage.write(core::mem::transmute(ok__));
17570                        windows_core::HRESULT(0)
17571                    }
17572                    Err(err) => err.into(),
17573                }
17574            }
17575        }
17576        unsafe extern "system" fn PrepareSubmit<
17577            Identity: IMAPISupport_Impl,
17578            const OFFSET: isize,
17579        >(
17580            this: *mut core::ffi::c_void,
17581            lpmessage: *mut core::ffi::c_void,
17582            lpulflags: *mut u32,
17583        ) -> windows_core::HRESULT {
17584            unsafe {
17585                let this: &Identity =
17586                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17587                IMAPISupport_Impl::PrepareSubmit(
17588                    this,
17589                    core::mem::transmute_copy(&lpmessage),
17590                    core::mem::transmute_copy(&lpulflags),
17591                )
17592                .into()
17593            }
17594        }
17595        unsafe extern "system" fn ExpandRecips<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17596            this: *mut core::ffi::c_void,
17597            lpmessage: *mut core::ffi::c_void,
17598            lpulflags: *mut u32,
17599        ) -> windows_core::HRESULT {
17600            unsafe {
17601                let this: &Identity =
17602                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17603                IMAPISupport_Impl::ExpandRecips(
17604                    this,
17605                    core::mem::transmute_copy(&lpmessage),
17606                    core::mem::transmute_copy(&lpulflags),
17607                )
17608                .into()
17609            }
17610        }
17611        unsafe extern "system" fn UpdatePAB<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17612            this: *mut core::ffi::c_void,
17613            ulflags: u32,
17614            lpmessage: *mut core::ffi::c_void,
17615        ) -> windows_core::HRESULT {
17616            unsafe {
17617                let this: &Identity =
17618                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17619                IMAPISupport_Impl::UpdatePAB(
17620                    this,
17621                    core::mem::transmute_copy(&ulflags),
17622                    core::mem::transmute_copy(&lpmessage),
17623                )
17624                .into()
17625            }
17626        }
17627        unsafe extern "system" fn DoSentMail<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17628            this: *mut core::ffi::c_void,
17629            ulflags: u32,
17630            lpmessage: *mut core::ffi::c_void,
17631        ) -> windows_core::HRESULT {
17632            unsafe {
17633                let this: &Identity =
17634                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17635                IMAPISupport_Impl::DoSentMail(
17636                    this,
17637                    core::mem::transmute_copy(&ulflags),
17638                    core::mem::transmute_copy(&lpmessage),
17639                )
17640                .into()
17641            }
17642        }
17643        unsafe extern "system" fn OpenAddressBook<
17644            Identity: IMAPISupport_Impl,
17645            const OFFSET: isize,
17646        >(
17647            this: *mut core::ffi::c_void,
17648            lpinterface: *mut windows_core::GUID,
17649            ulflags: u32,
17650            lppadrbook: *mut *mut core::ffi::c_void,
17651        ) -> windows_core::HRESULT {
17652            unsafe {
17653                let this: &Identity =
17654                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17655                IMAPISupport_Impl::OpenAddressBook(
17656                    this,
17657                    core::mem::transmute_copy(&lpinterface),
17658                    core::mem::transmute_copy(&ulflags),
17659                    core::mem::transmute_copy(&lppadrbook),
17660                )
17661                .into()
17662            }
17663        }
17664        unsafe extern "system" fn Preprocess<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17665            this: *mut core::ffi::c_void,
17666            ulflags: u32,
17667            cbentryid: u32,
17668            lpentryid: *mut ENTRYID,
17669        ) -> windows_core::HRESULT {
17670            unsafe {
17671                let this: &Identity =
17672                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17673                IMAPISupport_Impl::Preprocess(
17674                    this,
17675                    core::mem::transmute_copy(&ulflags),
17676                    core::mem::transmute_copy(&cbentryid),
17677                    core::mem::transmute_copy(&lpentryid),
17678                )
17679                .into()
17680            }
17681        }
17682        unsafe extern "system" fn CompleteMsg<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17683            this: *mut core::ffi::c_void,
17684            ulflags: u32,
17685            cbentryid: u32,
17686            lpentryid: *mut ENTRYID,
17687        ) -> windows_core::HRESULT {
17688            unsafe {
17689                let this: &Identity =
17690                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17691                IMAPISupport_Impl::CompleteMsg(
17692                    this,
17693                    core::mem::transmute_copy(&ulflags),
17694                    core::mem::transmute_copy(&cbentryid),
17695                    core::mem::transmute_copy(&lpentryid),
17696                )
17697                .into()
17698            }
17699        }
17700        unsafe extern "system" fn StoreLogoffTransports<
17701            Identity: IMAPISupport_Impl,
17702            const OFFSET: isize,
17703        >(
17704            this: *mut core::ffi::c_void,
17705            lpulflags: *mut u32,
17706        ) -> windows_core::HRESULT {
17707            unsafe {
17708                let this: &Identity =
17709                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17710                IMAPISupport_Impl::StoreLogoffTransports(
17711                    this,
17712                    core::mem::transmute_copy(&lpulflags),
17713                )
17714                .into()
17715            }
17716        }
17717        unsafe extern "system" fn StatusRecips<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17718            this: *mut core::ffi::c_void,
17719            lpmessage: *mut core::ffi::c_void,
17720            lpreciplist: *mut ADRLIST,
17721        ) -> windows_core::HRESULT {
17722            unsafe {
17723                let this: &Identity =
17724                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17725                IMAPISupport_Impl::StatusRecips(
17726                    this,
17727                    core::mem::transmute_copy(&lpmessage),
17728                    core::mem::transmute_copy(&lpreciplist),
17729                )
17730                .into()
17731            }
17732        }
17733        unsafe extern "system" fn WrapStoreEntryID<
17734            Identity: IMAPISupport_Impl,
17735            const OFFSET: isize,
17736        >(
17737            this: *mut core::ffi::c_void,
17738            cborigentry: u32,
17739            lporigentry: *mut ENTRYID,
17740            lpcbwrappedentry: *mut u32,
17741            lppwrappedentry: *mut *mut ENTRYID,
17742        ) -> windows_core::HRESULT {
17743            unsafe {
17744                let this: &Identity =
17745                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17746                IMAPISupport_Impl::WrapStoreEntryID(
17747                    this,
17748                    core::mem::transmute_copy(&cborigentry),
17749                    core::mem::transmute_copy(&lporigentry),
17750                    core::mem::transmute_copy(&lpcbwrappedentry),
17751                    core::mem::transmute_copy(&lppwrappedentry),
17752                )
17753                .into()
17754            }
17755        }
17756        unsafe extern "system" fn ModifyProfile<
17757            Identity: IMAPISupport_Impl,
17758            const OFFSET: isize,
17759        >(
17760            this: *mut core::ffi::c_void,
17761            ulflags: u32,
17762        ) -> windows_core::HRESULT {
17763            unsafe {
17764                let this: &Identity =
17765                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17766                IMAPISupport_Impl::ModifyProfile(this, core::mem::transmute_copy(&ulflags)).into()
17767            }
17768        }
17769        unsafe extern "system" fn IStorageFromStream<
17770            Identity: IMAPISupport_Impl,
17771            const OFFSET: isize,
17772        >(
17773            this: *mut core::ffi::c_void,
17774            lpunkin: *mut core::ffi::c_void,
17775            lpinterface: *mut windows_core::GUID,
17776            ulflags: u32,
17777            lppstorageout: *mut *mut core::ffi::c_void,
17778        ) -> windows_core::HRESULT {
17779            unsafe {
17780                let this: &Identity =
17781                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17782                IMAPISupport_Impl::IStorageFromStream(
17783                    this,
17784                    core::mem::transmute_copy(&lpunkin),
17785                    core::mem::transmute_copy(&lpinterface),
17786                    core::mem::transmute_copy(&ulflags),
17787                    core::mem::transmute_copy(&lppstorageout),
17788                )
17789                .into()
17790            }
17791        }
17792        unsafe extern "system" fn GetSvcConfigSupportObj<
17793            Identity: IMAPISupport_Impl,
17794            const OFFSET: isize,
17795        >(
17796            this: *mut core::ffi::c_void,
17797            ulflags: u32,
17798            lppsvcsupport: *mut *mut core::ffi::c_void,
17799        ) -> windows_core::HRESULT {
17800            unsafe {
17801                let this: &Identity =
17802                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17803                match IMAPISupport_Impl::GetSvcConfigSupportObj(
17804                    this,
17805                    core::mem::transmute_copy(&ulflags),
17806                ) {
17807                    Ok(ok__) => {
17808                        lppsvcsupport.write(core::mem::transmute(ok__));
17809                        windows_core::HRESULT(0)
17810                    }
17811                    Err(err) => err.into(),
17812                }
17813            }
17814        }
17815        Self {
17816            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17817            GetLastError: GetLastError::<Identity, OFFSET>,
17818            GetMemAllocRoutines: GetMemAllocRoutines::<Identity, OFFSET>,
17819            Subscribe: Subscribe::<Identity, OFFSET>,
17820            Unsubscribe: Unsubscribe::<Identity, OFFSET>,
17821            Notify: Notify::<Identity, OFFSET>,
17822            ModifyStatusRow: ModifyStatusRow::<Identity, OFFSET>,
17823            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
17824            RegisterPreprocessor: RegisterPreprocessor::<Identity, OFFSET>,
17825            NewUID: NewUID::<Identity, OFFSET>,
17826            MakeInvalid: MakeInvalid::<Identity, OFFSET>,
17827            SpoolerYield: SpoolerYield::<Identity, OFFSET>,
17828            SpoolerNotify: SpoolerNotify::<Identity, OFFSET>,
17829            CreateOneOff: CreateOneOff::<Identity, OFFSET>,
17830            SetProviderUID: SetProviderUID::<Identity, OFFSET>,
17831            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
17832            OpenTemplateID: OpenTemplateID::<Identity, OFFSET>,
17833            OpenEntry: OpenEntry::<Identity, OFFSET>,
17834            GetOneOffTable: GetOneOffTable::<Identity, OFFSET>,
17835            Address: Address::<Identity, OFFSET>,
17836            Details: Details::<Identity, OFFSET>,
17837            NewEntry: NewEntry::<Identity, OFFSET>,
17838            DoConfigPropsheet: DoConfigPropsheet::<Identity, OFFSET>,
17839            CopyMessages: CopyMessages::<Identity, OFFSET>,
17840            CopyFolder: CopyFolder::<Identity, OFFSET>,
17841            DoCopyTo: DoCopyTo::<Identity, OFFSET>,
17842            DoCopyProps: DoCopyProps::<Identity, OFFSET>,
17843            DoProgressDialog: DoProgressDialog::<Identity, OFFSET>,
17844            ReadReceipt: ReadReceipt::<Identity, OFFSET>,
17845            PrepareSubmit: PrepareSubmit::<Identity, OFFSET>,
17846            ExpandRecips: ExpandRecips::<Identity, OFFSET>,
17847            UpdatePAB: UpdatePAB::<Identity, OFFSET>,
17848            DoSentMail: DoSentMail::<Identity, OFFSET>,
17849            OpenAddressBook: OpenAddressBook::<Identity, OFFSET>,
17850            Preprocess: Preprocess::<Identity, OFFSET>,
17851            CompleteMsg: CompleteMsg::<Identity, OFFSET>,
17852            StoreLogoffTransports: StoreLogoffTransports::<Identity, OFFSET>,
17853            StatusRecips: StatusRecips::<Identity, OFFSET>,
17854            WrapStoreEntryID: WrapStoreEntryID::<Identity, OFFSET>,
17855            ModifyProfile: ModifyProfile::<Identity, OFFSET>,
17856            IStorageFromStream: IStorageFromStream::<Identity, OFFSET>,
17857            GetSvcConfigSupportObj: GetSvcConfigSupportObj::<Identity, OFFSET>,
17858        }
17859    }
17860    pub fn matches(iid: &windows_core::GUID) -> bool {
17861        iid == &<IMAPISupport as windows_core::Interface>::IID
17862    }
17863}
17864impl windows_core::RuntimeName for IMAPISupport {}
17865windows_core::imp::define_interface!(
17866    IMAPITable,
17867    IMAPITable_Vtbl,
17868    0x00020301_0000_0000_c000_000000000046
17869);
17870windows_core::imp::interface_hierarchy!(IMAPITable, windows_core::IUnknown);
17871impl IMAPITable {
17872    pub unsafe fn GetLastError(
17873        &self,
17874        hresult: windows_core::HRESULT,
17875        ulflags: u32,
17876        lppmapierror: *mut *mut MAPIERROR,
17877    ) -> windows_core::Result<()> {
17878        unsafe {
17879            (windows_core::Interface::vtable(self).GetLastError)(
17880                windows_core::Interface::as_raw(self),
17881                hresult,
17882                ulflags,
17883                lppmapierror as _,
17884            )
17885            .ok()
17886        }
17887    }
17888    pub unsafe fn Advise<P1>(
17889        &self,
17890        uleventmask: u32,
17891        lpadvisesink: P1,
17892        lpulconnection: *mut usize,
17893    ) -> windows_core::Result<()>
17894    where
17895        P1: windows_core::Param<IMAPIAdviseSink>,
17896    {
17897        unsafe {
17898            (windows_core::Interface::vtable(self).Advise)(
17899                windows_core::Interface::as_raw(self),
17900                uleventmask,
17901                lpadvisesink.param().abi(),
17902                lpulconnection as _,
17903            )
17904            .ok()
17905        }
17906    }
17907    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
17908        unsafe {
17909            (windows_core::Interface::vtable(self).Unadvise)(
17910                windows_core::Interface::as_raw(self),
17911                ulconnection,
17912            )
17913            .ok()
17914        }
17915    }
17916    pub unsafe fn GetStatus(
17917        &self,
17918        lpultablestatus: *mut u32,
17919        lpultabletype: *mut u32,
17920    ) -> windows_core::Result<()> {
17921        unsafe {
17922            (windows_core::Interface::vtable(self).GetStatus)(
17923                windows_core::Interface::as_raw(self),
17924                lpultablestatus as _,
17925                lpultabletype as _,
17926            )
17927            .ok()
17928        }
17929    }
17930    pub unsafe fn SetColumns(
17931        &self,
17932        lpproptagarray: *mut SPropTagArray,
17933        ulflags: u32,
17934    ) -> windows_core::Result<()> {
17935        unsafe {
17936            (windows_core::Interface::vtable(self).SetColumns)(
17937                windows_core::Interface::as_raw(self),
17938                lpproptagarray as _,
17939                ulflags,
17940            )
17941            .ok()
17942        }
17943    }
17944    pub unsafe fn QueryColumns(
17945        &self,
17946        ulflags: u32,
17947        lpproptagarray: *mut *mut SPropTagArray,
17948    ) -> windows_core::Result<()> {
17949        unsafe {
17950            (windows_core::Interface::vtable(self).QueryColumns)(
17951                windows_core::Interface::as_raw(self),
17952                ulflags,
17953                lpproptagarray as _,
17954            )
17955            .ok()
17956        }
17957    }
17958    pub unsafe fn GetRowCount(
17959        &self,
17960        ulflags: u32,
17961        lpulcount: *mut u32,
17962    ) -> windows_core::Result<()> {
17963        unsafe {
17964            (windows_core::Interface::vtable(self).GetRowCount)(
17965                windows_core::Interface::as_raw(self),
17966                ulflags,
17967                lpulcount as _,
17968            )
17969            .ok()
17970        }
17971    }
17972    pub unsafe fn SeekRow(
17973        &self,
17974        bkorigin: usize,
17975        lrowcount: i32,
17976        lplrowssought: *mut i32,
17977    ) -> windows_core::Result<()> {
17978        unsafe {
17979            (windows_core::Interface::vtable(self).SeekRow)(
17980                windows_core::Interface::as_raw(self),
17981                bkorigin,
17982                lrowcount,
17983                lplrowssought as _,
17984            )
17985            .ok()
17986        }
17987    }
17988    pub unsafe fn SeekRowApprox(
17989        &self,
17990        ulnumerator: u32,
17991        uldenominator: u32,
17992    ) -> windows_core::Result<()> {
17993        unsafe {
17994            (windows_core::Interface::vtable(self).SeekRowApprox)(
17995                windows_core::Interface::as_raw(self),
17996                ulnumerator,
17997                uldenominator,
17998            )
17999            .ok()
18000        }
18001    }
18002    pub unsafe fn QueryPosition(
18003        &self,
18004        lpulrow: *mut u32,
18005        lpulnumerator: *mut u32,
18006        lpuldenominator: *mut u32,
18007    ) -> windows_core::Result<()> {
18008        unsafe {
18009            (windows_core::Interface::vtable(self).QueryPosition)(
18010                windows_core::Interface::as_raw(self),
18011                lpulrow as _,
18012                lpulnumerator as _,
18013                lpuldenominator as _,
18014            )
18015            .ok()
18016        }
18017    }
18018    pub unsafe fn FindRow(
18019        &self,
18020        lprestriction: *mut SRestriction,
18021        bkorigin: usize,
18022        ulflags: u32,
18023    ) -> windows_core::Result<()> {
18024        unsafe {
18025            (windows_core::Interface::vtable(self).FindRow)(
18026                windows_core::Interface::as_raw(self),
18027                lprestriction as _,
18028                bkorigin,
18029                ulflags,
18030            )
18031            .ok()
18032        }
18033    }
18034    pub unsafe fn Restrict(
18035        &self,
18036        lprestriction: *mut SRestriction,
18037        ulflags: u32,
18038    ) -> windows_core::Result<()> {
18039        unsafe {
18040            (windows_core::Interface::vtable(self).Restrict)(
18041                windows_core::Interface::as_raw(self),
18042                lprestriction as _,
18043                ulflags,
18044            )
18045            .ok()
18046        }
18047    }
18048    pub unsafe fn CreateBookmark(&self, lpbkposition: *mut usize) -> windows_core::Result<()> {
18049        unsafe {
18050            (windows_core::Interface::vtable(self).CreateBookmark)(
18051                windows_core::Interface::as_raw(self),
18052                lpbkposition as _,
18053            )
18054            .ok()
18055        }
18056    }
18057    pub unsafe fn FreeBookmark(&self, bkposition: usize) -> windows_core::Result<()> {
18058        unsafe {
18059            (windows_core::Interface::vtable(self).FreeBookmark)(
18060                windows_core::Interface::as_raw(self),
18061                bkposition,
18062            )
18063            .ok()
18064        }
18065    }
18066    pub unsafe fn SortTable(
18067        &self,
18068        lpsortcriteria: *mut SSortOrderSet,
18069        ulflags: u32,
18070    ) -> windows_core::Result<()> {
18071        unsafe {
18072            (windows_core::Interface::vtable(self).SortTable)(
18073                windows_core::Interface::as_raw(self),
18074                lpsortcriteria as _,
18075                ulflags,
18076            )
18077            .ok()
18078        }
18079    }
18080    pub unsafe fn QuerySortOrder(
18081        &self,
18082        lppsortcriteria: *mut *mut SSortOrderSet,
18083    ) -> windows_core::Result<()> {
18084        unsafe {
18085            (windows_core::Interface::vtable(self).QuerySortOrder)(
18086                windows_core::Interface::as_raw(self),
18087                lppsortcriteria as _,
18088            )
18089            .ok()
18090        }
18091    }
18092    pub unsafe fn QueryRows(
18093        &self,
18094        lrowcount: i32,
18095        ulflags: u32,
18096        lpprows: *mut *mut SRowSet,
18097    ) -> windows_core::Result<()> {
18098        unsafe {
18099            (windows_core::Interface::vtable(self).QueryRows)(
18100                windows_core::Interface::as_raw(self),
18101                lrowcount,
18102                ulflags,
18103                lpprows as _,
18104            )
18105            .ok()
18106        }
18107    }
18108    pub unsafe fn Abort(&self) -> windows_core::Result<()> {
18109        unsafe {
18110            (windows_core::Interface::vtable(self).Abort)(windows_core::Interface::as_raw(self))
18111                .ok()
18112        }
18113    }
18114    pub unsafe fn ExpandRow(
18115        &self,
18116        cbinstancekey: u32,
18117        pbinstancekey: *mut u8,
18118        ulrowcount: u32,
18119        ulflags: u32,
18120        lpprows: *mut *mut SRowSet,
18121        lpulmorerows: *mut u32,
18122    ) -> windows_core::Result<()> {
18123        unsafe {
18124            (windows_core::Interface::vtable(self).ExpandRow)(
18125                windows_core::Interface::as_raw(self),
18126                cbinstancekey,
18127                pbinstancekey as _,
18128                ulrowcount,
18129                ulflags,
18130                lpprows as _,
18131                lpulmorerows as _,
18132            )
18133            .ok()
18134        }
18135    }
18136    pub unsafe fn CollapseRow(
18137        &self,
18138        cbinstancekey: u32,
18139        pbinstancekey: *mut u8,
18140        ulflags: u32,
18141        lpulrowcount: *mut u32,
18142    ) -> windows_core::Result<()> {
18143        unsafe {
18144            (windows_core::Interface::vtable(self).CollapseRow)(
18145                windows_core::Interface::as_raw(self),
18146                cbinstancekey,
18147                pbinstancekey as _,
18148                ulflags,
18149                lpulrowcount as _,
18150            )
18151            .ok()
18152        }
18153    }
18154    pub unsafe fn WaitForCompletion(
18155        &self,
18156        ulflags: u32,
18157        ultimeout: u32,
18158        lpultablestatus: *mut u32,
18159    ) -> windows_core::Result<()> {
18160        unsafe {
18161            (windows_core::Interface::vtable(self).WaitForCompletion)(
18162                windows_core::Interface::as_raw(self),
18163                ulflags,
18164                ultimeout,
18165                lpultablestatus as _,
18166            )
18167            .ok()
18168        }
18169    }
18170    pub unsafe fn GetCollapseState(
18171        &self,
18172        ulflags: u32,
18173        cbinstancekey: u32,
18174        lpbinstancekey: *mut u8,
18175        lpcbcollapsestate: *mut u32,
18176        lppbcollapsestate: *mut *mut u8,
18177    ) -> windows_core::Result<()> {
18178        unsafe {
18179            (windows_core::Interface::vtable(self).GetCollapseState)(
18180                windows_core::Interface::as_raw(self),
18181                ulflags,
18182                cbinstancekey,
18183                lpbinstancekey as _,
18184                lpcbcollapsestate as _,
18185                lppbcollapsestate as _,
18186            )
18187            .ok()
18188        }
18189    }
18190    pub unsafe fn SetCollapseState(
18191        &self,
18192        ulflags: u32,
18193        pbcollapsestate: &mut [u8],
18194        lpbklocation: *mut usize,
18195    ) -> windows_core::Result<()> {
18196        unsafe {
18197            (windows_core::Interface::vtable(self).SetCollapseState)(
18198                windows_core::Interface::as_raw(self),
18199                ulflags,
18200                pbcollapsestate.len().try_into().unwrap(),
18201                core::mem::transmute(pbcollapsestate.as_ptr()),
18202                lpbklocation as _,
18203            )
18204            .ok()
18205        }
18206    }
18207}
18208#[repr(C)]
18209pub struct IMAPITable_Vtbl {
18210    pub base__: windows_core::IUnknown_Vtbl,
18211    pub GetLastError: unsafe extern "system" fn(
18212        *mut core::ffi::c_void,
18213        windows_core::HRESULT,
18214        u32,
18215        *mut *mut MAPIERROR,
18216    ) -> windows_core::HRESULT,
18217    pub Advise: unsafe extern "system" fn(
18218        *mut core::ffi::c_void,
18219        u32,
18220        *mut core::ffi::c_void,
18221        *mut usize,
18222    ) -> windows_core::HRESULT,
18223    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
18224    pub GetStatus: unsafe extern "system" fn(
18225        *mut core::ffi::c_void,
18226        *mut u32,
18227        *mut u32,
18228    ) -> windows_core::HRESULT,
18229    pub SetColumns: unsafe extern "system" fn(
18230        *mut core::ffi::c_void,
18231        *mut SPropTagArray,
18232        u32,
18233    ) -> windows_core::HRESULT,
18234    pub QueryColumns: unsafe extern "system" fn(
18235        *mut core::ffi::c_void,
18236        u32,
18237        *mut *mut SPropTagArray,
18238    ) -> windows_core::HRESULT,
18239    pub GetRowCount:
18240        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
18241    pub SeekRow: unsafe extern "system" fn(
18242        *mut core::ffi::c_void,
18243        usize,
18244        i32,
18245        *mut i32,
18246    ) -> windows_core::HRESULT,
18247    pub SeekRowApprox:
18248        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
18249    pub QueryPosition: unsafe extern "system" fn(
18250        *mut core::ffi::c_void,
18251        *mut u32,
18252        *mut u32,
18253        *mut u32,
18254    ) -> windows_core::HRESULT,
18255    pub FindRow: unsafe extern "system" fn(
18256        *mut core::ffi::c_void,
18257        *mut SRestriction,
18258        usize,
18259        u32,
18260    ) -> windows_core::HRESULT,
18261    pub Restrict: unsafe extern "system" fn(
18262        *mut core::ffi::c_void,
18263        *mut SRestriction,
18264        u32,
18265    ) -> windows_core::HRESULT,
18266    pub CreateBookmark:
18267        unsafe extern "system" fn(*mut core::ffi::c_void, *mut usize) -> windows_core::HRESULT,
18268    pub FreeBookmark:
18269        unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
18270    pub SortTable: unsafe extern "system" fn(
18271        *mut core::ffi::c_void,
18272        *mut SSortOrderSet,
18273        u32,
18274    ) -> windows_core::HRESULT,
18275    pub QuerySortOrder: unsafe extern "system" fn(
18276        *mut core::ffi::c_void,
18277        *mut *mut SSortOrderSet,
18278    ) -> windows_core::HRESULT,
18279    pub QueryRows: unsafe extern "system" fn(
18280        *mut core::ffi::c_void,
18281        i32,
18282        u32,
18283        *mut *mut SRowSet,
18284    ) -> windows_core::HRESULT,
18285    pub Abort: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18286    pub ExpandRow: unsafe extern "system" fn(
18287        *mut core::ffi::c_void,
18288        u32,
18289        *mut u8,
18290        u32,
18291        u32,
18292        *mut *mut SRowSet,
18293        *mut u32,
18294    ) -> windows_core::HRESULT,
18295    pub CollapseRow: unsafe extern "system" fn(
18296        *mut core::ffi::c_void,
18297        u32,
18298        *mut u8,
18299        u32,
18300        *mut u32,
18301    ) -> windows_core::HRESULT,
18302    pub WaitForCompletion: unsafe extern "system" fn(
18303        *mut core::ffi::c_void,
18304        u32,
18305        u32,
18306        *mut u32,
18307    ) -> windows_core::HRESULT,
18308    pub GetCollapseState: unsafe extern "system" fn(
18309        *mut core::ffi::c_void,
18310        u32,
18311        u32,
18312        *mut u8,
18313        *mut u32,
18314        *mut *mut u8,
18315    ) -> windows_core::HRESULT,
18316    pub SetCollapseState: unsafe extern "system" fn(
18317        *mut core::ffi::c_void,
18318        u32,
18319        u32,
18320        *mut u8,
18321        *mut usize,
18322    ) -> windows_core::HRESULT,
18323}
18324pub trait IMAPITable_Impl: windows_core::IUnknownImpl {
18325    fn GetLastError(
18326        &self,
18327        hresult: windows_core::HRESULT,
18328        ulflags: u32,
18329        lppmapierror: *mut *mut MAPIERROR,
18330    ) -> windows_core::Result<()>;
18331    fn Advise(
18332        &self,
18333        uleventmask: u32,
18334        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
18335        lpulconnection: *mut usize,
18336    ) -> windows_core::Result<()>;
18337    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
18338    fn GetStatus(
18339        &self,
18340        lpultablestatus: *mut u32,
18341        lpultabletype: *mut u32,
18342    ) -> windows_core::Result<()>;
18343    fn SetColumns(
18344        &self,
18345        lpproptagarray: *mut SPropTagArray,
18346        ulflags: u32,
18347    ) -> windows_core::Result<()>;
18348    fn QueryColumns(
18349        &self,
18350        ulflags: u32,
18351        lpproptagarray: *mut *mut SPropTagArray,
18352    ) -> windows_core::Result<()>;
18353    fn GetRowCount(&self, ulflags: u32, lpulcount: *mut u32) -> windows_core::Result<()>;
18354    fn SeekRow(
18355        &self,
18356        bkorigin: usize,
18357        lrowcount: i32,
18358        lplrowssought: *mut i32,
18359    ) -> windows_core::Result<()>;
18360    fn SeekRowApprox(&self, ulnumerator: u32, uldenominator: u32) -> windows_core::Result<()>;
18361    fn QueryPosition(
18362        &self,
18363        lpulrow: *mut u32,
18364        lpulnumerator: *mut u32,
18365        lpuldenominator: *mut u32,
18366    ) -> windows_core::Result<()>;
18367    fn FindRow(
18368        &self,
18369        lprestriction: *mut SRestriction,
18370        bkorigin: usize,
18371        ulflags: u32,
18372    ) -> windows_core::Result<()>;
18373    fn Restrict(&self, lprestriction: *mut SRestriction, ulflags: u32) -> windows_core::Result<()>;
18374    fn CreateBookmark(&self, lpbkposition: *mut usize) -> windows_core::Result<()>;
18375    fn FreeBookmark(&self, bkposition: usize) -> windows_core::Result<()>;
18376    fn SortTable(
18377        &self,
18378        lpsortcriteria: *mut SSortOrderSet,
18379        ulflags: u32,
18380    ) -> windows_core::Result<()>;
18381    fn QuerySortOrder(&self, lppsortcriteria: *mut *mut SSortOrderSet) -> windows_core::Result<()>;
18382    fn QueryRows(
18383        &self,
18384        lrowcount: i32,
18385        ulflags: u32,
18386        lpprows: *mut *mut SRowSet,
18387    ) -> windows_core::Result<()>;
18388    fn Abort(&self) -> windows_core::Result<()>;
18389    fn ExpandRow(
18390        &self,
18391        cbinstancekey: u32,
18392        pbinstancekey: *mut u8,
18393        ulrowcount: u32,
18394        ulflags: u32,
18395        lpprows: *mut *mut SRowSet,
18396        lpulmorerows: *mut u32,
18397    ) -> windows_core::Result<()>;
18398    fn CollapseRow(
18399        &self,
18400        cbinstancekey: u32,
18401        pbinstancekey: *mut u8,
18402        ulflags: u32,
18403        lpulrowcount: *mut u32,
18404    ) -> windows_core::Result<()>;
18405    fn WaitForCompletion(
18406        &self,
18407        ulflags: u32,
18408        ultimeout: u32,
18409        lpultablestatus: *mut u32,
18410    ) -> windows_core::Result<()>;
18411    fn GetCollapseState(
18412        &self,
18413        ulflags: u32,
18414        cbinstancekey: u32,
18415        lpbinstancekey: *mut u8,
18416        lpcbcollapsestate: *mut u32,
18417        lppbcollapsestate: *mut *mut u8,
18418    ) -> windows_core::Result<()>;
18419    fn SetCollapseState(
18420        &self,
18421        ulflags: u32,
18422        cbcollapsestate: u32,
18423        pbcollapsestate: *mut u8,
18424        lpbklocation: *mut usize,
18425    ) -> windows_core::Result<()>;
18426}
18427impl IMAPITable_Vtbl {
18428    pub const fn new<Identity: IMAPITable_Impl, const OFFSET: isize>() -> Self {
18429        unsafe extern "system" fn GetLastError<Identity: IMAPITable_Impl, const OFFSET: isize>(
18430            this: *mut core::ffi::c_void,
18431            hresult: windows_core::HRESULT,
18432            ulflags: u32,
18433            lppmapierror: *mut *mut MAPIERROR,
18434        ) -> windows_core::HRESULT {
18435            unsafe {
18436                let this: &Identity =
18437                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18438                IMAPITable_Impl::GetLastError(
18439                    this,
18440                    core::mem::transmute_copy(&hresult),
18441                    core::mem::transmute_copy(&ulflags),
18442                    core::mem::transmute_copy(&lppmapierror),
18443                )
18444                .into()
18445            }
18446        }
18447        unsafe extern "system" fn Advise<Identity: IMAPITable_Impl, const OFFSET: isize>(
18448            this: *mut core::ffi::c_void,
18449            uleventmask: u32,
18450            lpadvisesink: *mut core::ffi::c_void,
18451            lpulconnection: *mut usize,
18452        ) -> windows_core::HRESULT {
18453            unsafe {
18454                let this: &Identity =
18455                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18456                IMAPITable_Impl::Advise(
18457                    this,
18458                    core::mem::transmute_copy(&uleventmask),
18459                    core::mem::transmute_copy(&lpadvisesink),
18460                    core::mem::transmute_copy(&lpulconnection),
18461                )
18462                .into()
18463            }
18464        }
18465        unsafe extern "system" fn Unadvise<Identity: IMAPITable_Impl, const OFFSET: isize>(
18466            this: *mut core::ffi::c_void,
18467            ulconnection: usize,
18468        ) -> windows_core::HRESULT {
18469            unsafe {
18470                let this: &Identity =
18471                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18472                IMAPITable_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
18473            }
18474        }
18475        unsafe extern "system" fn GetStatus<Identity: IMAPITable_Impl, const OFFSET: isize>(
18476            this: *mut core::ffi::c_void,
18477            lpultablestatus: *mut u32,
18478            lpultabletype: *mut u32,
18479        ) -> windows_core::HRESULT {
18480            unsafe {
18481                let this: &Identity =
18482                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18483                IMAPITable_Impl::GetStatus(
18484                    this,
18485                    core::mem::transmute_copy(&lpultablestatus),
18486                    core::mem::transmute_copy(&lpultabletype),
18487                )
18488                .into()
18489            }
18490        }
18491        unsafe extern "system" fn SetColumns<Identity: IMAPITable_Impl, const OFFSET: isize>(
18492            this: *mut core::ffi::c_void,
18493            lpproptagarray: *mut SPropTagArray,
18494            ulflags: u32,
18495        ) -> windows_core::HRESULT {
18496            unsafe {
18497                let this: &Identity =
18498                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18499                IMAPITable_Impl::SetColumns(
18500                    this,
18501                    core::mem::transmute_copy(&lpproptagarray),
18502                    core::mem::transmute_copy(&ulflags),
18503                )
18504                .into()
18505            }
18506        }
18507        unsafe extern "system" fn QueryColumns<Identity: IMAPITable_Impl, const OFFSET: isize>(
18508            this: *mut core::ffi::c_void,
18509            ulflags: u32,
18510            lpproptagarray: *mut *mut SPropTagArray,
18511        ) -> windows_core::HRESULT {
18512            unsafe {
18513                let this: &Identity =
18514                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18515                IMAPITable_Impl::QueryColumns(
18516                    this,
18517                    core::mem::transmute_copy(&ulflags),
18518                    core::mem::transmute_copy(&lpproptagarray),
18519                )
18520                .into()
18521            }
18522        }
18523        unsafe extern "system" fn GetRowCount<Identity: IMAPITable_Impl, const OFFSET: isize>(
18524            this: *mut core::ffi::c_void,
18525            ulflags: u32,
18526            lpulcount: *mut u32,
18527        ) -> windows_core::HRESULT {
18528            unsafe {
18529                let this: &Identity =
18530                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18531                IMAPITable_Impl::GetRowCount(
18532                    this,
18533                    core::mem::transmute_copy(&ulflags),
18534                    core::mem::transmute_copy(&lpulcount),
18535                )
18536                .into()
18537            }
18538        }
18539        unsafe extern "system" fn SeekRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18540            this: *mut core::ffi::c_void,
18541            bkorigin: usize,
18542            lrowcount: i32,
18543            lplrowssought: *mut i32,
18544        ) -> windows_core::HRESULT {
18545            unsafe {
18546                let this: &Identity =
18547                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18548                IMAPITable_Impl::SeekRow(
18549                    this,
18550                    core::mem::transmute_copy(&bkorigin),
18551                    core::mem::transmute_copy(&lrowcount),
18552                    core::mem::transmute_copy(&lplrowssought),
18553                )
18554                .into()
18555            }
18556        }
18557        unsafe extern "system" fn SeekRowApprox<Identity: IMAPITable_Impl, const OFFSET: isize>(
18558            this: *mut core::ffi::c_void,
18559            ulnumerator: u32,
18560            uldenominator: u32,
18561        ) -> windows_core::HRESULT {
18562            unsafe {
18563                let this: &Identity =
18564                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18565                IMAPITable_Impl::SeekRowApprox(
18566                    this,
18567                    core::mem::transmute_copy(&ulnumerator),
18568                    core::mem::transmute_copy(&uldenominator),
18569                )
18570                .into()
18571            }
18572        }
18573        unsafe extern "system" fn QueryPosition<Identity: IMAPITable_Impl, const OFFSET: isize>(
18574            this: *mut core::ffi::c_void,
18575            lpulrow: *mut u32,
18576            lpulnumerator: *mut u32,
18577            lpuldenominator: *mut u32,
18578        ) -> windows_core::HRESULT {
18579            unsafe {
18580                let this: &Identity =
18581                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18582                IMAPITable_Impl::QueryPosition(
18583                    this,
18584                    core::mem::transmute_copy(&lpulrow),
18585                    core::mem::transmute_copy(&lpulnumerator),
18586                    core::mem::transmute_copy(&lpuldenominator),
18587                )
18588                .into()
18589            }
18590        }
18591        unsafe extern "system" fn FindRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18592            this: *mut core::ffi::c_void,
18593            lprestriction: *mut SRestriction,
18594            bkorigin: usize,
18595            ulflags: u32,
18596        ) -> windows_core::HRESULT {
18597            unsafe {
18598                let this: &Identity =
18599                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18600                IMAPITable_Impl::FindRow(
18601                    this,
18602                    core::mem::transmute_copy(&lprestriction),
18603                    core::mem::transmute_copy(&bkorigin),
18604                    core::mem::transmute_copy(&ulflags),
18605                )
18606                .into()
18607            }
18608        }
18609        unsafe extern "system" fn Restrict<Identity: IMAPITable_Impl, const OFFSET: isize>(
18610            this: *mut core::ffi::c_void,
18611            lprestriction: *mut SRestriction,
18612            ulflags: u32,
18613        ) -> windows_core::HRESULT {
18614            unsafe {
18615                let this: &Identity =
18616                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18617                IMAPITable_Impl::Restrict(
18618                    this,
18619                    core::mem::transmute_copy(&lprestriction),
18620                    core::mem::transmute_copy(&ulflags),
18621                )
18622                .into()
18623            }
18624        }
18625        unsafe extern "system" fn CreateBookmark<Identity: IMAPITable_Impl, const OFFSET: isize>(
18626            this: *mut core::ffi::c_void,
18627            lpbkposition: *mut usize,
18628        ) -> windows_core::HRESULT {
18629            unsafe {
18630                let this: &Identity =
18631                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18632                IMAPITable_Impl::CreateBookmark(this, core::mem::transmute_copy(&lpbkposition))
18633                    .into()
18634            }
18635        }
18636        unsafe extern "system" fn FreeBookmark<Identity: IMAPITable_Impl, const OFFSET: isize>(
18637            this: *mut core::ffi::c_void,
18638            bkposition: usize,
18639        ) -> windows_core::HRESULT {
18640            unsafe {
18641                let this: &Identity =
18642                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18643                IMAPITable_Impl::FreeBookmark(this, core::mem::transmute_copy(&bkposition)).into()
18644            }
18645        }
18646        unsafe extern "system" fn SortTable<Identity: IMAPITable_Impl, const OFFSET: isize>(
18647            this: *mut core::ffi::c_void,
18648            lpsortcriteria: *mut SSortOrderSet,
18649            ulflags: u32,
18650        ) -> windows_core::HRESULT {
18651            unsafe {
18652                let this: &Identity =
18653                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18654                IMAPITable_Impl::SortTable(
18655                    this,
18656                    core::mem::transmute_copy(&lpsortcriteria),
18657                    core::mem::transmute_copy(&ulflags),
18658                )
18659                .into()
18660            }
18661        }
18662        unsafe extern "system" fn QuerySortOrder<Identity: IMAPITable_Impl, const OFFSET: isize>(
18663            this: *mut core::ffi::c_void,
18664            lppsortcriteria: *mut *mut SSortOrderSet,
18665        ) -> windows_core::HRESULT {
18666            unsafe {
18667                let this: &Identity =
18668                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18669                IMAPITable_Impl::QuerySortOrder(this, core::mem::transmute_copy(&lppsortcriteria))
18670                    .into()
18671            }
18672        }
18673        unsafe extern "system" fn QueryRows<Identity: IMAPITable_Impl, const OFFSET: isize>(
18674            this: *mut core::ffi::c_void,
18675            lrowcount: i32,
18676            ulflags: u32,
18677            lpprows: *mut *mut SRowSet,
18678        ) -> windows_core::HRESULT {
18679            unsafe {
18680                let this: &Identity =
18681                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18682                IMAPITable_Impl::QueryRows(
18683                    this,
18684                    core::mem::transmute_copy(&lrowcount),
18685                    core::mem::transmute_copy(&ulflags),
18686                    core::mem::transmute_copy(&lpprows),
18687                )
18688                .into()
18689            }
18690        }
18691        unsafe extern "system" fn Abort<Identity: IMAPITable_Impl, const OFFSET: isize>(
18692            this: *mut core::ffi::c_void,
18693        ) -> windows_core::HRESULT {
18694            unsafe {
18695                let this: &Identity =
18696                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18697                IMAPITable_Impl::Abort(this).into()
18698            }
18699        }
18700        unsafe extern "system" fn ExpandRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18701            this: *mut core::ffi::c_void,
18702            cbinstancekey: u32,
18703            pbinstancekey: *mut u8,
18704            ulrowcount: u32,
18705            ulflags: u32,
18706            lpprows: *mut *mut SRowSet,
18707            lpulmorerows: *mut u32,
18708        ) -> windows_core::HRESULT {
18709            unsafe {
18710                let this: &Identity =
18711                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18712                IMAPITable_Impl::ExpandRow(
18713                    this,
18714                    core::mem::transmute_copy(&cbinstancekey),
18715                    core::mem::transmute_copy(&pbinstancekey),
18716                    core::mem::transmute_copy(&ulrowcount),
18717                    core::mem::transmute_copy(&ulflags),
18718                    core::mem::transmute_copy(&lpprows),
18719                    core::mem::transmute_copy(&lpulmorerows),
18720                )
18721                .into()
18722            }
18723        }
18724        unsafe extern "system" fn CollapseRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18725            this: *mut core::ffi::c_void,
18726            cbinstancekey: u32,
18727            pbinstancekey: *mut u8,
18728            ulflags: u32,
18729            lpulrowcount: *mut u32,
18730        ) -> windows_core::HRESULT {
18731            unsafe {
18732                let this: &Identity =
18733                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18734                IMAPITable_Impl::CollapseRow(
18735                    this,
18736                    core::mem::transmute_copy(&cbinstancekey),
18737                    core::mem::transmute_copy(&pbinstancekey),
18738                    core::mem::transmute_copy(&ulflags),
18739                    core::mem::transmute_copy(&lpulrowcount),
18740                )
18741                .into()
18742            }
18743        }
18744        unsafe extern "system" fn WaitForCompletion<
18745            Identity: IMAPITable_Impl,
18746            const OFFSET: isize,
18747        >(
18748            this: *mut core::ffi::c_void,
18749            ulflags: u32,
18750            ultimeout: u32,
18751            lpultablestatus: *mut u32,
18752        ) -> windows_core::HRESULT {
18753            unsafe {
18754                let this: &Identity =
18755                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18756                IMAPITable_Impl::WaitForCompletion(
18757                    this,
18758                    core::mem::transmute_copy(&ulflags),
18759                    core::mem::transmute_copy(&ultimeout),
18760                    core::mem::transmute_copy(&lpultablestatus),
18761                )
18762                .into()
18763            }
18764        }
18765        unsafe extern "system" fn GetCollapseState<
18766            Identity: IMAPITable_Impl,
18767            const OFFSET: isize,
18768        >(
18769            this: *mut core::ffi::c_void,
18770            ulflags: u32,
18771            cbinstancekey: u32,
18772            lpbinstancekey: *mut u8,
18773            lpcbcollapsestate: *mut u32,
18774            lppbcollapsestate: *mut *mut u8,
18775        ) -> windows_core::HRESULT {
18776            unsafe {
18777                let this: &Identity =
18778                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18779                IMAPITable_Impl::GetCollapseState(
18780                    this,
18781                    core::mem::transmute_copy(&ulflags),
18782                    core::mem::transmute_copy(&cbinstancekey),
18783                    core::mem::transmute_copy(&lpbinstancekey),
18784                    core::mem::transmute_copy(&lpcbcollapsestate),
18785                    core::mem::transmute_copy(&lppbcollapsestate),
18786                )
18787                .into()
18788            }
18789        }
18790        unsafe extern "system" fn SetCollapseState<
18791            Identity: IMAPITable_Impl,
18792            const OFFSET: isize,
18793        >(
18794            this: *mut core::ffi::c_void,
18795            ulflags: u32,
18796            cbcollapsestate: u32,
18797            pbcollapsestate: *mut u8,
18798            lpbklocation: *mut usize,
18799        ) -> windows_core::HRESULT {
18800            unsafe {
18801                let this: &Identity =
18802                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18803                IMAPITable_Impl::SetCollapseState(
18804                    this,
18805                    core::mem::transmute_copy(&ulflags),
18806                    core::mem::transmute_copy(&cbcollapsestate),
18807                    core::mem::transmute_copy(&pbcollapsestate),
18808                    core::mem::transmute_copy(&lpbklocation),
18809                )
18810                .into()
18811            }
18812        }
18813        Self {
18814            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
18815            GetLastError: GetLastError::<Identity, OFFSET>,
18816            Advise: Advise::<Identity, OFFSET>,
18817            Unadvise: Unadvise::<Identity, OFFSET>,
18818            GetStatus: GetStatus::<Identity, OFFSET>,
18819            SetColumns: SetColumns::<Identity, OFFSET>,
18820            QueryColumns: QueryColumns::<Identity, OFFSET>,
18821            GetRowCount: GetRowCount::<Identity, OFFSET>,
18822            SeekRow: SeekRow::<Identity, OFFSET>,
18823            SeekRowApprox: SeekRowApprox::<Identity, OFFSET>,
18824            QueryPosition: QueryPosition::<Identity, OFFSET>,
18825            FindRow: FindRow::<Identity, OFFSET>,
18826            Restrict: Restrict::<Identity, OFFSET>,
18827            CreateBookmark: CreateBookmark::<Identity, OFFSET>,
18828            FreeBookmark: FreeBookmark::<Identity, OFFSET>,
18829            SortTable: SortTable::<Identity, OFFSET>,
18830            QuerySortOrder: QuerySortOrder::<Identity, OFFSET>,
18831            QueryRows: QueryRows::<Identity, OFFSET>,
18832            Abort: Abort::<Identity, OFFSET>,
18833            ExpandRow: ExpandRow::<Identity, OFFSET>,
18834            CollapseRow: CollapseRow::<Identity, OFFSET>,
18835            WaitForCompletion: WaitForCompletion::<Identity, OFFSET>,
18836            GetCollapseState: GetCollapseState::<Identity, OFFSET>,
18837            SetCollapseState: SetCollapseState::<Identity, OFFSET>,
18838        }
18839    }
18840    pub fn matches(iid: &windows_core::GUID) -> bool {
18841        iid == &<IMAPITable as windows_core::Interface>::IID
18842    }
18843}
18844impl windows_core::RuntimeName for IMAPITable {}
18845pub const IMAPITable_Abort: METHODS = METHODS(31i32);
18846pub const IMAPITable_Advise: METHODS = METHODS(15i32);
18847pub const IMAPITable_CollapseRow: METHODS = METHODS(33i32);
18848pub const IMAPITable_CreateBookmark: METHODS = METHODS(26i32);
18849pub const IMAPITable_ExpandRow: METHODS = METHODS(32i32);
18850pub const IMAPITable_FindRow: METHODS = METHODS(24i32);
18851pub const IMAPITable_FreeBookmark: METHODS = METHODS(27i32);
18852pub const IMAPITable_GetCollapseState: METHODS = METHODS(35i32);
18853pub const IMAPITable_GetLastError: METHODS = METHODS(14i32);
18854pub const IMAPITable_GetRowCount: METHODS = METHODS(20i32);
18855pub const IMAPITable_GetStatus: METHODS = METHODS(17i32);
18856pub const IMAPITable_QueryColumns: METHODS = METHODS(19i32);
18857pub const IMAPITable_QueryPosition: METHODS = METHODS(23i32);
18858pub const IMAPITable_QueryRows: METHODS = METHODS(30i32);
18859pub const IMAPITable_QuerySortOrder: METHODS = METHODS(29i32);
18860pub const IMAPITable_Restrict: METHODS = METHODS(25i32);
18861pub const IMAPITable_SeekRow: METHODS = METHODS(21i32);
18862pub const IMAPITable_SeekRowApprox: METHODS = METHODS(22i32);
18863pub const IMAPITable_SetCollapseState: METHODS = METHODS(36i32);
18864pub const IMAPITable_SetColumns: METHODS = METHODS(18i32);
18865pub const IMAPITable_SortTable: METHODS = METHODS(28i32);
18866pub const IMAPITable_Unadvise: METHODS = METHODS(16i32);
18867pub const IMAPITable_WaitForCompletion: METHODS = METHODS(34i32);
18868windows_core::imp::define_interface!(
18869    IMAPIViewAdviseSink,
18870    IMAPIViewAdviseSink_Vtbl,
18871    0x0002032b_0000_0000_c000_000000000046
18872);
18873windows_core::imp::interface_hierarchy!(IMAPIViewAdviseSink, windows_core::IUnknown);
18874impl IMAPIViewAdviseSink {
18875    pub unsafe fn OnShutdown(&self) -> windows_core::Result<()> {
18876        unsafe {
18877            (windows_core::Interface::vtable(self).OnShutdown)(windows_core::Interface::as_raw(
18878                self,
18879            ))
18880            .ok()
18881        }
18882    }
18883    pub unsafe fn OnNewMessage(&self) -> windows_core::Result<()> {
18884        unsafe {
18885            (windows_core::Interface::vtable(self).OnNewMessage)(windows_core::Interface::as_raw(
18886                self,
18887            ))
18888            .ok()
18889        }
18890    }
18891    pub unsafe fn OnPrint(
18892        &self,
18893        dwpagenumber: u32,
18894        hrstatus: windows_core::HRESULT,
18895    ) -> windows_core::Result<()> {
18896        unsafe {
18897            (windows_core::Interface::vtable(self).OnPrint)(
18898                windows_core::Interface::as_raw(self),
18899                dwpagenumber,
18900                hrstatus,
18901            )
18902            .ok()
18903        }
18904    }
18905    pub unsafe fn OnSubmitted(&self) -> windows_core::Result<()> {
18906        unsafe {
18907            (windows_core::Interface::vtable(self).OnSubmitted)(windows_core::Interface::as_raw(
18908                self,
18909            ))
18910            .ok()
18911        }
18912    }
18913    pub unsafe fn OnSaved(&self) -> windows_core::Result<()> {
18914        unsafe {
18915            (windows_core::Interface::vtable(self).OnSaved)(windows_core::Interface::as_raw(self))
18916                .ok()
18917        }
18918    }
18919}
18920#[repr(C)]
18921pub struct IMAPIViewAdviseSink_Vtbl {
18922    pub base__: windows_core::IUnknown_Vtbl,
18923    pub OnShutdown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18924    pub OnNewMessage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18925    pub OnPrint: unsafe extern "system" fn(
18926        *mut core::ffi::c_void,
18927        u32,
18928        windows_core::HRESULT,
18929    ) -> windows_core::HRESULT,
18930    pub OnSubmitted: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18931    pub OnSaved: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18932}
18933pub trait IMAPIViewAdviseSink_Impl: windows_core::IUnknownImpl {
18934    fn OnShutdown(&self) -> windows_core::Result<()>;
18935    fn OnNewMessage(&self) -> windows_core::Result<()>;
18936    fn OnPrint(
18937        &self,
18938        dwpagenumber: u32,
18939        hrstatus: windows_core::HRESULT,
18940    ) -> windows_core::Result<()>;
18941    fn OnSubmitted(&self) -> windows_core::Result<()>;
18942    fn OnSaved(&self) -> windows_core::Result<()>;
18943}
18944impl IMAPIViewAdviseSink_Vtbl {
18945    pub const fn new<Identity: IMAPIViewAdviseSink_Impl, const OFFSET: isize>() -> Self {
18946        unsafe extern "system" fn OnShutdown<
18947            Identity: IMAPIViewAdviseSink_Impl,
18948            const OFFSET: isize,
18949        >(
18950            this: *mut core::ffi::c_void,
18951        ) -> windows_core::HRESULT {
18952            unsafe {
18953                let this: &Identity =
18954                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18955                IMAPIViewAdviseSink_Impl::OnShutdown(this).into()
18956            }
18957        }
18958        unsafe extern "system" fn OnNewMessage<
18959            Identity: IMAPIViewAdviseSink_Impl,
18960            const OFFSET: isize,
18961        >(
18962            this: *mut core::ffi::c_void,
18963        ) -> windows_core::HRESULT {
18964            unsafe {
18965                let this: &Identity =
18966                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18967                IMAPIViewAdviseSink_Impl::OnNewMessage(this).into()
18968            }
18969        }
18970        unsafe extern "system" fn OnPrint<
18971            Identity: IMAPIViewAdviseSink_Impl,
18972            const OFFSET: isize,
18973        >(
18974            this: *mut core::ffi::c_void,
18975            dwpagenumber: u32,
18976            hrstatus: windows_core::HRESULT,
18977        ) -> windows_core::HRESULT {
18978            unsafe {
18979                let this: &Identity =
18980                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18981                IMAPIViewAdviseSink_Impl::OnPrint(
18982                    this,
18983                    core::mem::transmute_copy(&dwpagenumber),
18984                    core::mem::transmute_copy(&hrstatus),
18985                )
18986                .into()
18987            }
18988        }
18989        unsafe extern "system" fn OnSubmitted<
18990            Identity: IMAPIViewAdviseSink_Impl,
18991            const OFFSET: isize,
18992        >(
18993            this: *mut core::ffi::c_void,
18994        ) -> windows_core::HRESULT {
18995            unsafe {
18996                let this: &Identity =
18997                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18998                IMAPIViewAdviseSink_Impl::OnSubmitted(this).into()
18999            }
19000        }
19001        unsafe extern "system" fn OnSaved<
19002            Identity: IMAPIViewAdviseSink_Impl,
19003            const OFFSET: isize,
19004        >(
19005            this: *mut core::ffi::c_void,
19006        ) -> windows_core::HRESULT {
19007            unsafe {
19008                let this: &Identity =
19009                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19010                IMAPIViewAdviseSink_Impl::OnSaved(this).into()
19011            }
19012        }
19013        Self {
19014            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19015            OnShutdown: OnShutdown::<Identity, OFFSET>,
19016            OnNewMessage: OnNewMessage::<Identity, OFFSET>,
19017            OnPrint: OnPrint::<Identity, OFFSET>,
19018            OnSubmitted: OnSubmitted::<Identity, OFFSET>,
19019            OnSaved: OnSaved::<Identity, OFFSET>,
19020        }
19021    }
19022    pub fn matches(iid: &windows_core::GUID) -> bool {
19023        iid == &<IMAPIViewAdviseSink as windows_core::Interface>::IID
19024    }
19025}
19026impl windows_core::RuntimeName for IMAPIViewAdviseSink {}
19027windows_core::imp::define_interface!(
19028    IMAPIViewContext,
19029    IMAPIViewContext_Vtbl,
19030    0x00020321_0000_0000_c000_000000000046
19031);
19032windows_core::imp::interface_hierarchy!(IMAPIViewContext, windows_core::IUnknown);
19033impl IMAPIViewContext {
19034    pub unsafe fn GetLastError(
19035        &self,
19036        hresult: windows_core::HRESULT,
19037        ulflags: u32,
19038        lppmapierror: *mut *mut MAPIERROR,
19039    ) -> windows_core::Result<()> {
19040        unsafe {
19041            (windows_core::Interface::vtable(self).GetLastError)(
19042                windows_core::Interface::as_raw(self),
19043                hresult,
19044                ulflags,
19045                lppmapierror as _,
19046            )
19047            .ok()
19048        }
19049    }
19050    pub unsafe fn SetAdviseSink<P0>(&self, pmvns: P0) -> windows_core::Result<()>
19051    where
19052        P0: windows_core::Param<IMAPIFormAdviseSink>,
19053    {
19054        unsafe {
19055            (windows_core::Interface::vtable(self).SetAdviseSink)(
19056                windows_core::Interface::as_raw(self),
19057                pmvns.param().abi(),
19058            )
19059            .ok()
19060        }
19061    }
19062    pub unsafe fn ActivateNext(
19063        &self,
19064        uldir: u32,
19065        prcposrect: *mut windows::Win32::Foundation::RECT,
19066    ) -> windows_core::Result<()> {
19067        unsafe {
19068            (windows_core::Interface::vtable(self).ActivateNext)(
19069                windows_core::Interface::as_raw(self),
19070                uldir,
19071                prcposrect as _,
19072            )
19073            .ok()
19074        }
19075    }
19076    pub unsafe fn GetPrintSetup(
19077        &self,
19078        ulflags: u32,
19079        lppformprintsetup: *mut *mut FORMPRINTSETUP,
19080    ) -> windows_core::Result<()> {
19081        unsafe {
19082            (windows_core::Interface::vtable(self).GetPrintSetup)(
19083                windows_core::Interface::as_raw(self),
19084                ulflags,
19085                lppformprintsetup as _,
19086            )
19087            .ok()
19088        }
19089    }
19090    pub unsafe fn GetSaveStream(
19091        &self,
19092        pulflags: *mut u32,
19093        pulformat: *mut u32,
19094        ppstm: *mut Option<windows::Win32::System::Com::IStream>,
19095    ) -> windows_core::Result<()> {
19096        unsafe {
19097            (windows_core::Interface::vtable(self).GetSaveStream)(
19098                windows_core::Interface::as_raw(self),
19099                pulflags as _,
19100                pulformat as _,
19101                core::mem::transmute(ppstm),
19102            )
19103            .ok()
19104        }
19105    }
19106    pub unsafe fn GetViewStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()> {
19107        unsafe {
19108            (windows_core::Interface::vtable(self).GetViewStatus)(
19109                windows_core::Interface::as_raw(self),
19110                lpulstatus as _,
19111            )
19112            .ok()
19113        }
19114    }
19115}
19116#[repr(C)]
19117pub struct IMAPIViewContext_Vtbl {
19118    pub base__: windows_core::IUnknown_Vtbl,
19119    pub GetLastError: unsafe extern "system" fn(
19120        *mut core::ffi::c_void,
19121        windows_core::HRESULT,
19122        u32,
19123        *mut *mut MAPIERROR,
19124    ) -> windows_core::HRESULT,
19125    pub SetAdviseSink: unsafe extern "system" fn(
19126        *mut core::ffi::c_void,
19127        *mut core::ffi::c_void,
19128    ) -> windows_core::HRESULT,
19129    pub ActivateNext: unsafe extern "system" fn(
19130        *mut core::ffi::c_void,
19131        u32,
19132        *mut windows::Win32::Foundation::RECT,
19133    ) -> windows_core::HRESULT,
19134    pub GetPrintSetup: unsafe extern "system" fn(
19135        *mut core::ffi::c_void,
19136        u32,
19137        *mut *mut FORMPRINTSETUP,
19138    ) -> windows_core::HRESULT,
19139    pub GetSaveStream: unsafe extern "system" fn(
19140        *mut core::ffi::c_void,
19141        *mut u32,
19142        *mut u32,
19143        *mut *mut core::ffi::c_void,
19144    ) -> windows_core::HRESULT,
19145    pub GetViewStatus:
19146        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19147}
19148pub trait IMAPIViewContext_Impl: windows_core::IUnknownImpl {
19149    fn GetLastError(
19150        &self,
19151        hresult: windows_core::HRESULT,
19152        ulflags: u32,
19153        lppmapierror: *mut *mut MAPIERROR,
19154    ) -> windows_core::Result<()>;
19155    fn SetAdviseSink(
19156        &self,
19157        pmvns: windows_core::Ref<'_, IMAPIFormAdviseSink>,
19158    ) -> windows_core::Result<()>;
19159    fn ActivateNext(
19160        &self,
19161        uldir: u32,
19162        prcposrect: *mut windows::Win32::Foundation::RECT,
19163    ) -> windows_core::Result<()>;
19164    fn GetPrintSetup(
19165        &self,
19166        ulflags: u32,
19167        lppformprintsetup: *mut *mut FORMPRINTSETUP,
19168    ) -> windows_core::Result<()>;
19169    fn GetSaveStream(
19170        &self,
19171        pulflags: *mut u32,
19172        pulformat: *mut u32,
19173        ppstm: windows_core::OutRef<'_, windows::Win32::System::Com::IStream>,
19174    ) -> windows_core::Result<()>;
19175    fn GetViewStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()>;
19176}
19177impl IMAPIViewContext_Vtbl {
19178    pub const fn new<Identity: IMAPIViewContext_Impl, const OFFSET: isize>() -> Self {
19179        unsafe extern "system" fn GetLastError<
19180            Identity: IMAPIViewContext_Impl,
19181            const OFFSET: isize,
19182        >(
19183            this: *mut core::ffi::c_void,
19184            hresult: windows_core::HRESULT,
19185            ulflags: u32,
19186            lppmapierror: *mut *mut MAPIERROR,
19187        ) -> windows_core::HRESULT {
19188            unsafe {
19189                let this: &Identity =
19190                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19191                IMAPIViewContext_Impl::GetLastError(
19192                    this,
19193                    core::mem::transmute_copy(&hresult),
19194                    core::mem::transmute_copy(&ulflags),
19195                    core::mem::transmute_copy(&lppmapierror),
19196                )
19197                .into()
19198            }
19199        }
19200        unsafe extern "system" fn SetAdviseSink<
19201            Identity: IMAPIViewContext_Impl,
19202            const OFFSET: isize,
19203        >(
19204            this: *mut core::ffi::c_void,
19205            pmvns: *mut core::ffi::c_void,
19206        ) -> windows_core::HRESULT {
19207            unsafe {
19208                let this: &Identity =
19209                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19210                IMAPIViewContext_Impl::SetAdviseSink(this, core::mem::transmute_copy(&pmvns)).into()
19211            }
19212        }
19213        unsafe extern "system" fn ActivateNext<
19214            Identity: IMAPIViewContext_Impl,
19215            const OFFSET: isize,
19216        >(
19217            this: *mut core::ffi::c_void,
19218            uldir: u32,
19219            prcposrect: *mut windows::Win32::Foundation::RECT,
19220        ) -> windows_core::HRESULT {
19221            unsafe {
19222                let this: &Identity =
19223                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19224                IMAPIViewContext_Impl::ActivateNext(
19225                    this,
19226                    core::mem::transmute_copy(&uldir),
19227                    core::mem::transmute_copy(&prcposrect),
19228                )
19229                .into()
19230            }
19231        }
19232        unsafe extern "system" fn GetPrintSetup<
19233            Identity: IMAPIViewContext_Impl,
19234            const OFFSET: isize,
19235        >(
19236            this: *mut core::ffi::c_void,
19237            ulflags: u32,
19238            lppformprintsetup: *mut *mut FORMPRINTSETUP,
19239        ) -> windows_core::HRESULT {
19240            unsafe {
19241                let this: &Identity =
19242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19243                IMAPIViewContext_Impl::GetPrintSetup(
19244                    this,
19245                    core::mem::transmute_copy(&ulflags),
19246                    core::mem::transmute_copy(&lppformprintsetup),
19247                )
19248                .into()
19249            }
19250        }
19251        unsafe extern "system" fn GetSaveStream<
19252            Identity: IMAPIViewContext_Impl,
19253            const OFFSET: isize,
19254        >(
19255            this: *mut core::ffi::c_void,
19256            pulflags: *mut u32,
19257            pulformat: *mut u32,
19258            ppstm: *mut *mut core::ffi::c_void,
19259        ) -> windows_core::HRESULT {
19260            unsafe {
19261                let this: &Identity =
19262                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19263                IMAPIViewContext_Impl::GetSaveStream(
19264                    this,
19265                    core::mem::transmute_copy(&pulflags),
19266                    core::mem::transmute_copy(&pulformat),
19267                    core::mem::transmute_copy(&ppstm),
19268                )
19269                .into()
19270            }
19271        }
19272        unsafe extern "system" fn GetViewStatus<
19273            Identity: IMAPIViewContext_Impl,
19274            const OFFSET: isize,
19275        >(
19276            this: *mut core::ffi::c_void,
19277            lpulstatus: *mut u32,
19278        ) -> windows_core::HRESULT {
19279            unsafe {
19280                let this: &Identity =
19281                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19282                IMAPIViewContext_Impl::GetViewStatus(this, core::mem::transmute_copy(&lpulstatus))
19283                    .into()
19284            }
19285        }
19286        Self {
19287            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19288            GetLastError: GetLastError::<Identity, OFFSET>,
19289            SetAdviseSink: SetAdviseSink::<Identity, OFFSET>,
19290            ActivateNext: ActivateNext::<Identity, OFFSET>,
19291            GetPrintSetup: GetPrintSetup::<Identity, OFFSET>,
19292            GetSaveStream: GetSaveStream::<Identity, OFFSET>,
19293            GetViewStatus: GetViewStatus::<Identity, OFFSET>,
19294        }
19295    }
19296    pub fn matches(iid: &windows_core::GUID) -> bool {
19297        iid == &<IMAPIViewContext as windows_core::Interface>::IID
19298    }
19299}
19300impl windows_core::RuntimeName for IMAPIViewContext {}
19301pub const IMF_ATTACHMENTS: IMSGFLAGS = IMSGFLAGS(1i32);
19302pub const IMF_CSETTAGGED: IMSGFLAGS = IMSGFLAGS(8192i32);
19303pub const IMF_ENCRYPTED: IMSGFLAGS = IMSGFLAGS(256i32);
19304pub const IMF_HASVCARD: IMSGFLAGS = IMSGFLAGS(65536i32);
19305pub const IMF_HTML: IMSGFLAGS = IMSGFLAGS(16i32);
19306pub const IMF_MHTML: IMSGFLAGS = IMSGFLAGS(1024i32);
19307pub const IMF_MIME: IMSGFLAGS = IMSGFLAGS(8i32);
19308pub const IMF_MULTIPART: IMSGFLAGS = IMSGFLAGS(2i32);
19309pub const IMF_NEWS: IMSGFLAGS = IMSGFLAGS(16384i32);
19310pub const IMF_PARTIAL: IMSGFLAGS = IMSGFLAGS(64i32);
19311pub const IMF_PLAIN: IMSGFLAGS = IMSGFLAGS(32i32);
19312pub const IMF_RFC1154: IMSGFLAGS = IMSGFLAGS(131072i32);
19313pub const IMF_SECURE: IMSGFLAGS = IMSGFLAGS(2048i32);
19314pub const IMF_SIGNED: IMSGFLAGS = IMSGFLAGS(128i32);
19315pub const IMF_SUBMULTIPART: IMSGFLAGS = IMSGFLAGS(4i32);
19316pub const IMF_TEXT: IMSGFLAGS = IMSGFLAGS(4096i32);
19317pub const IMF_TNEF: IMSGFLAGS = IMSGFLAGS(512i32);
19318pub const IMF_VOICEMAIL: IMSGFLAGS = IMSGFLAGS(32768i32);
19319pub const IMPORTANCE_HIGH: u32 = 2u32;
19320pub const IMPORTANCE_LOW: u32 = 0u32;
19321pub const IMPORTANCE_NORMAL: u32 = 1u32;
19322windows_core::imp::define_interface!(
19323    IMSCapabilities,
19324    IMSCapabilities_Vtbl,
19325    0x00020393_0000_0000_c000_000000000046
19326);
19327windows_core::imp::interface_hierarchy!(IMSCapabilities, windows_core::IUnknown);
19328impl IMSCapabilities {
19329    pub unsafe fn GetCapabilities(&self, mscapselector: MSCAP_SELECTOR) -> u32 {
19330        unsafe {
19331            (windows_core::Interface::vtable(self).GetCapabilities)(
19332                windows_core::Interface::as_raw(self),
19333                mscapselector,
19334            )
19335        }
19336    }
19337}
19338#[repr(C)]
19339pub struct IMSCapabilities_Vtbl {
19340    pub base__: windows_core::IUnknown_Vtbl,
19341    pub GetCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, MSCAP_SELECTOR) -> u32,
19342}
19343pub trait IMSCapabilities_Impl: windows_core::IUnknownImpl {
19344    fn GetCapabilities(&self, mscapselector: MSCAP_SELECTOR) -> u32;
19345}
19346impl IMSCapabilities_Vtbl {
19347    pub const fn new<Identity: IMSCapabilities_Impl, const OFFSET: isize>() -> Self {
19348        unsafe extern "system" fn GetCapabilities<
19349            Identity: IMSCapabilities_Impl,
19350            const OFFSET: isize,
19351        >(
19352            this: *mut core::ffi::c_void,
19353            mscapselector: MSCAP_SELECTOR,
19354        ) -> u32 {
19355            unsafe {
19356                let this: &Identity =
19357                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19358                IMSCapabilities_Impl::GetCapabilities(
19359                    this,
19360                    core::mem::transmute_copy(&mscapselector),
19361                )
19362            }
19363        }
19364        Self {
19365            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19366            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
19367        }
19368    }
19369    pub fn matches(iid: &windows_core::GUID) -> bool {
19370        iid == &<IMSCapabilities as windows_core::Interface>::IID
19371    }
19372}
19373impl windows_core::RuntimeName for IMSCapabilities {}
19374#[repr(transparent)]
19375#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
19376pub struct IMSGBODYTYPE(pub i32);
19377#[repr(transparent)]
19378#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
19379pub struct IMSGFLAGS(pub i32);
19380#[repr(transparent)]
19381#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
19382pub struct IMSGPRIORITY(pub i32);
19383pub const IMSG_NO_ISTG_COMMIT: u32 = 1u32;
19384pub const IMSG_PRI_HIGH: IMSGPRIORITY = IMSGPRIORITY(1i32);
19385pub const IMSG_PRI_LOW: IMSGPRIORITY = IMSGPRIORITY(5i32);
19386pub const IMSG_PRI_NORMAL: IMSGPRIORITY = IMSGPRIORITY(3i32);
19387windows_core::imp::define_interface!(
19388    IMSLogon,
19389    IMSLogon_Vtbl,
19390    0x00020313_0000_0000_c000_000000000046
19391);
19392windows_core::imp::interface_hierarchy!(IMSLogon, windows_core::IUnknown);
19393impl IMSLogon {
19394    pub unsafe fn GetLastError(
19395        &self,
19396        hresult: windows_core::HRESULT,
19397        ulflags: u32,
19398        lppmapierror: *mut *mut MAPIERROR,
19399    ) -> windows_core::Result<()> {
19400        unsafe {
19401            (windows_core::Interface::vtable(self).GetLastError)(
19402                windows_core::Interface::as_raw(self),
19403                hresult,
19404                ulflags,
19405                lppmapierror as _,
19406            )
19407            .ok()
19408        }
19409    }
19410    pub unsafe fn Logoff(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
19411        unsafe {
19412            (windows_core::Interface::vtable(self).Logoff)(
19413                windows_core::Interface::as_raw(self),
19414                lpulflags as _,
19415            )
19416            .ok()
19417        }
19418    }
19419    pub unsafe fn OpenEntry(
19420        &self,
19421        cbentryid: u32,
19422        lpentryid: *mut ENTRYID,
19423        lpinterface: *mut windows_core::GUID,
19424        ulflags: u32,
19425        lpulobjtype: *mut u32,
19426        lppunk: *mut Option<windows_core::IUnknown>,
19427    ) -> windows_core::Result<()> {
19428        unsafe {
19429            (windows_core::Interface::vtable(self).OpenEntry)(
19430                windows_core::Interface::as_raw(self),
19431                cbentryid,
19432                lpentryid as _,
19433                lpinterface as _,
19434                ulflags,
19435                lpulobjtype as _,
19436                core::mem::transmute(lppunk),
19437            )
19438            .ok()
19439        }
19440    }
19441    pub unsafe fn CompareEntryIDs(
19442        &self,
19443        cbentryid1: u32,
19444        lpentryid1: *mut ENTRYID,
19445        cbentryid2: u32,
19446        lpentryid2: *mut ENTRYID,
19447        ulflags: u32,
19448        lpulresult: *mut u32,
19449    ) -> windows_core::Result<()> {
19450        unsafe {
19451            (windows_core::Interface::vtable(self).CompareEntryIDs)(
19452                windows_core::Interface::as_raw(self),
19453                cbentryid1,
19454                lpentryid1 as _,
19455                cbentryid2,
19456                lpentryid2 as _,
19457                ulflags,
19458                lpulresult as _,
19459            )
19460            .ok()
19461        }
19462    }
19463    pub unsafe fn Advise<P3>(
19464        &self,
19465        cbentryid: u32,
19466        lpentryid: *mut ENTRYID,
19467        uleventmask: u32,
19468        lpadvisesink: P3,
19469        lpulconnection: *mut usize,
19470    ) -> windows_core::Result<()>
19471    where
19472        P3: windows_core::Param<IMAPIAdviseSink>,
19473    {
19474        unsafe {
19475            (windows_core::Interface::vtable(self).Advise)(
19476                windows_core::Interface::as_raw(self),
19477                cbentryid,
19478                lpentryid as _,
19479                uleventmask,
19480                lpadvisesink.param().abi(),
19481                lpulconnection as _,
19482            )
19483            .ok()
19484        }
19485    }
19486    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
19487        unsafe {
19488            (windows_core::Interface::vtable(self).Unadvise)(
19489                windows_core::Interface::as_raw(self),
19490                ulconnection,
19491            )
19492            .ok()
19493        }
19494    }
19495    pub unsafe fn OpenStatusEntry(
19496        &self,
19497        lpinterface: *mut windows_core::GUID,
19498        ulflags: u32,
19499        lpulobjtype: *mut u32,
19500        lppentry: *mut *mut core::ffi::c_void,
19501    ) -> windows_core::Result<()> {
19502        unsafe {
19503            (windows_core::Interface::vtable(self).OpenStatusEntry)(
19504                windows_core::Interface::as_raw(self),
19505                lpinterface as _,
19506                ulflags,
19507                lpulobjtype as _,
19508                lppentry as _,
19509            )
19510            .ok()
19511        }
19512    }
19513}
19514#[repr(C)]
19515pub struct IMSLogon_Vtbl {
19516    pub base__: windows_core::IUnknown_Vtbl,
19517    pub GetLastError: unsafe extern "system" fn(
19518        *mut core::ffi::c_void,
19519        windows_core::HRESULT,
19520        u32,
19521        *mut *mut MAPIERROR,
19522    ) -> windows_core::HRESULT,
19523    pub Logoff:
19524        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19525    pub OpenEntry: unsafe extern "system" fn(
19526        *mut core::ffi::c_void,
19527        u32,
19528        *mut ENTRYID,
19529        *mut windows_core::GUID,
19530        u32,
19531        *mut u32,
19532        *mut *mut core::ffi::c_void,
19533    ) -> windows_core::HRESULT,
19534    pub CompareEntryIDs: unsafe extern "system" fn(
19535        *mut core::ffi::c_void,
19536        u32,
19537        *mut ENTRYID,
19538        u32,
19539        *mut ENTRYID,
19540        u32,
19541        *mut u32,
19542    ) -> windows_core::HRESULT,
19543    pub Advise: unsafe extern "system" fn(
19544        *mut core::ffi::c_void,
19545        u32,
19546        *mut ENTRYID,
19547        u32,
19548        *mut core::ffi::c_void,
19549        *mut usize,
19550    ) -> windows_core::HRESULT,
19551    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
19552    pub OpenStatusEntry: unsafe extern "system" fn(
19553        *mut core::ffi::c_void,
19554        *mut windows_core::GUID,
19555        u32,
19556        *mut u32,
19557        *mut *mut core::ffi::c_void,
19558    ) -> windows_core::HRESULT,
19559}
19560pub trait IMSLogon_Impl: windows_core::IUnknownImpl {
19561    fn GetLastError(
19562        &self,
19563        hresult: windows_core::HRESULT,
19564        ulflags: u32,
19565        lppmapierror: *mut *mut MAPIERROR,
19566    ) -> windows_core::Result<()>;
19567    fn Logoff(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
19568    fn OpenEntry(
19569        &self,
19570        cbentryid: u32,
19571        lpentryid: *mut ENTRYID,
19572        lpinterface: *mut windows_core::GUID,
19573        ulflags: u32,
19574        lpulobjtype: *mut u32,
19575        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
19576    ) -> windows_core::Result<()>;
19577    fn CompareEntryIDs(
19578        &self,
19579        cbentryid1: u32,
19580        lpentryid1: *mut ENTRYID,
19581        cbentryid2: u32,
19582        lpentryid2: *mut ENTRYID,
19583        ulflags: u32,
19584        lpulresult: *mut u32,
19585    ) -> windows_core::Result<()>;
19586    fn Advise(
19587        &self,
19588        cbentryid: u32,
19589        lpentryid: *mut ENTRYID,
19590        uleventmask: u32,
19591        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
19592        lpulconnection: *mut usize,
19593    ) -> windows_core::Result<()>;
19594    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
19595    fn OpenStatusEntry(
19596        &self,
19597        lpinterface: *mut windows_core::GUID,
19598        ulflags: u32,
19599        lpulobjtype: *mut u32,
19600        lppentry: *mut *mut core::ffi::c_void,
19601    ) -> windows_core::Result<()>;
19602}
19603impl IMSLogon_Vtbl {
19604    pub const fn new<Identity: IMSLogon_Impl, const OFFSET: isize>() -> Self {
19605        unsafe extern "system" fn GetLastError<Identity: IMSLogon_Impl, const OFFSET: isize>(
19606            this: *mut core::ffi::c_void,
19607            hresult: windows_core::HRESULT,
19608            ulflags: u32,
19609            lppmapierror: *mut *mut MAPIERROR,
19610        ) -> windows_core::HRESULT {
19611            unsafe {
19612                let this: &Identity =
19613                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19614                IMSLogon_Impl::GetLastError(
19615                    this,
19616                    core::mem::transmute_copy(&hresult),
19617                    core::mem::transmute_copy(&ulflags),
19618                    core::mem::transmute_copy(&lppmapierror),
19619                )
19620                .into()
19621            }
19622        }
19623        unsafe extern "system" fn Logoff<Identity: IMSLogon_Impl, const OFFSET: isize>(
19624            this: *mut core::ffi::c_void,
19625            lpulflags: *mut u32,
19626        ) -> windows_core::HRESULT {
19627            unsafe {
19628                let this: &Identity =
19629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19630                IMSLogon_Impl::Logoff(this, core::mem::transmute_copy(&lpulflags)).into()
19631            }
19632        }
19633        unsafe extern "system" fn OpenEntry<Identity: IMSLogon_Impl, const OFFSET: isize>(
19634            this: *mut core::ffi::c_void,
19635            cbentryid: u32,
19636            lpentryid: *mut ENTRYID,
19637            lpinterface: *mut windows_core::GUID,
19638            ulflags: u32,
19639            lpulobjtype: *mut u32,
19640            lppunk: *mut *mut core::ffi::c_void,
19641        ) -> windows_core::HRESULT {
19642            unsafe {
19643                let this: &Identity =
19644                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19645                IMSLogon_Impl::OpenEntry(
19646                    this,
19647                    core::mem::transmute_copy(&cbentryid),
19648                    core::mem::transmute_copy(&lpentryid),
19649                    core::mem::transmute_copy(&lpinterface),
19650                    core::mem::transmute_copy(&ulflags),
19651                    core::mem::transmute_copy(&lpulobjtype),
19652                    core::mem::transmute_copy(&lppunk),
19653                )
19654                .into()
19655            }
19656        }
19657        unsafe extern "system" fn CompareEntryIDs<Identity: IMSLogon_Impl, const OFFSET: isize>(
19658            this: *mut core::ffi::c_void,
19659            cbentryid1: u32,
19660            lpentryid1: *mut ENTRYID,
19661            cbentryid2: u32,
19662            lpentryid2: *mut ENTRYID,
19663            ulflags: u32,
19664            lpulresult: *mut u32,
19665        ) -> windows_core::HRESULT {
19666            unsafe {
19667                let this: &Identity =
19668                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19669                IMSLogon_Impl::CompareEntryIDs(
19670                    this,
19671                    core::mem::transmute_copy(&cbentryid1),
19672                    core::mem::transmute_copy(&lpentryid1),
19673                    core::mem::transmute_copy(&cbentryid2),
19674                    core::mem::transmute_copy(&lpentryid2),
19675                    core::mem::transmute_copy(&ulflags),
19676                    core::mem::transmute_copy(&lpulresult),
19677                )
19678                .into()
19679            }
19680        }
19681        unsafe extern "system" fn Advise<Identity: IMSLogon_Impl, const OFFSET: isize>(
19682            this: *mut core::ffi::c_void,
19683            cbentryid: u32,
19684            lpentryid: *mut ENTRYID,
19685            uleventmask: u32,
19686            lpadvisesink: *mut core::ffi::c_void,
19687            lpulconnection: *mut usize,
19688        ) -> windows_core::HRESULT {
19689            unsafe {
19690                let this: &Identity =
19691                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19692                IMSLogon_Impl::Advise(
19693                    this,
19694                    core::mem::transmute_copy(&cbentryid),
19695                    core::mem::transmute_copy(&lpentryid),
19696                    core::mem::transmute_copy(&uleventmask),
19697                    core::mem::transmute_copy(&lpadvisesink),
19698                    core::mem::transmute_copy(&lpulconnection),
19699                )
19700                .into()
19701            }
19702        }
19703        unsafe extern "system" fn Unadvise<Identity: IMSLogon_Impl, const OFFSET: isize>(
19704            this: *mut core::ffi::c_void,
19705            ulconnection: usize,
19706        ) -> windows_core::HRESULT {
19707            unsafe {
19708                let this: &Identity =
19709                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19710                IMSLogon_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
19711            }
19712        }
19713        unsafe extern "system" fn OpenStatusEntry<Identity: IMSLogon_Impl, const OFFSET: isize>(
19714            this: *mut core::ffi::c_void,
19715            lpinterface: *mut windows_core::GUID,
19716            ulflags: u32,
19717            lpulobjtype: *mut u32,
19718            lppentry: *mut *mut core::ffi::c_void,
19719        ) -> windows_core::HRESULT {
19720            unsafe {
19721                let this: &Identity =
19722                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19723                IMSLogon_Impl::OpenStatusEntry(
19724                    this,
19725                    core::mem::transmute_copy(&lpinterface),
19726                    core::mem::transmute_copy(&ulflags),
19727                    core::mem::transmute_copy(&lpulobjtype),
19728                    core::mem::transmute_copy(&lppentry),
19729                )
19730                .into()
19731            }
19732        }
19733        Self {
19734            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19735            GetLastError: GetLastError::<Identity, OFFSET>,
19736            Logoff: Logoff::<Identity, OFFSET>,
19737            OpenEntry: OpenEntry::<Identity, OFFSET>,
19738            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
19739            Advise: Advise::<Identity, OFFSET>,
19740            Unadvise: Unadvise::<Identity, OFFSET>,
19741            OpenStatusEntry: OpenStatusEntry::<Identity, OFFSET>,
19742        }
19743    }
19744    pub fn matches(iid: &windows_core::GUID) -> bool {
19745        iid == &<IMSLogon as windows_core::Interface>::IID
19746    }
19747}
19748impl windows_core::RuntimeName for IMSLogon {}
19749pub const IMSLogon_Advise: METHODS = METHODS(116i32);
19750pub const IMSLogon_CompareEntryIDs: METHODS = METHODS(115i32);
19751pub const IMSLogon_GetLastError: METHODS = METHODS(112i32);
19752pub const IMSLogon_Logoff: METHODS = METHODS(113i32);
19753pub const IMSLogon_OpenEntry: METHODS = METHODS(114i32);
19754pub const IMSLogon_OpenStatusEntry: METHODS = METHODS(118i32);
19755pub const IMSLogon_Unadvise: METHODS = METHODS(117i32);
19756windows_core::imp::define_interface!(
19757    IMSProvider,
19758    IMSProvider_Vtbl,
19759    0x00020310_0000_0000_c000_000000000046
19760);
19761windows_core::imp::interface_hierarchy!(IMSProvider, windows_core::IUnknown);
19762impl IMSProvider {
19763    pub unsafe fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
19764        unsafe {
19765            (windows_core::Interface::vtable(self).Shutdown)(
19766                windows_core::Interface::as_raw(self),
19767                lpulflags as _,
19768            )
19769            .ok()
19770        }
19771    }
19772    pub unsafe fn Logon<P0>(
19773        &self,
19774        lpmapisup: P0,
19775        uluiparam: usize,
19776        lpszprofilename: *mut i8,
19777        cbentryid: u32,
19778        lpentryid: *mut ENTRYID,
19779        ulflags: u32,
19780        lpinterface: *mut windows_core::GUID,
19781        lpcbspoolsecurity: *mut u32,
19782        lppbspoolsecurity: *mut *mut u8,
19783        lppmapierror: *mut *mut MAPIERROR,
19784        lppmslogon: *mut Option<IMSLogon>,
19785        lppmdb: *mut Option<IMsgStore>,
19786    ) -> windows_core::Result<()>
19787    where
19788        P0: windows_core::Param<IMAPISupport>,
19789    {
19790        unsafe {
19791            (windows_core::Interface::vtable(self).Logon)(
19792                windows_core::Interface::as_raw(self),
19793                lpmapisup.param().abi(),
19794                uluiparam,
19795                lpszprofilename as _,
19796                cbentryid,
19797                lpentryid as _,
19798                ulflags,
19799                lpinterface as _,
19800                lpcbspoolsecurity as _,
19801                lppbspoolsecurity as _,
19802                lppmapierror as _,
19803                core::mem::transmute(lppmslogon),
19804                core::mem::transmute(lppmdb),
19805            )
19806            .ok()
19807        }
19808    }
19809    pub unsafe fn SpoolerLogon<P0>(
19810        &self,
19811        lpmapisup: P0,
19812        uluiparam: usize,
19813        lpszprofilename: *mut i8,
19814        cbentryid: u32,
19815        lpentryid: *mut ENTRYID,
19816        ulflags: u32,
19817        lpinterface: *mut windows_core::GUID,
19818        cbspoolsecurity: u32,
19819        lpbspoolsecurity: *mut u8,
19820        lppmapierror: *mut *mut MAPIERROR,
19821        lppmslogon: *mut Option<IMSLogon>,
19822        lppmdb: *mut Option<IMsgStore>,
19823    ) -> windows_core::Result<()>
19824    where
19825        P0: windows_core::Param<IMAPISupport>,
19826    {
19827        unsafe {
19828            (windows_core::Interface::vtable(self).SpoolerLogon)(
19829                windows_core::Interface::as_raw(self),
19830                lpmapisup.param().abi(),
19831                uluiparam,
19832                lpszprofilename as _,
19833                cbentryid,
19834                lpentryid as _,
19835                ulflags,
19836                lpinterface as _,
19837                cbspoolsecurity,
19838                lpbspoolsecurity as _,
19839                lppmapierror as _,
19840                core::mem::transmute(lppmslogon),
19841                core::mem::transmute(lppmdb),
19842            )
19843            .ok()
19844        }
19845    }
19846    pub unsafe fn CompareStoreIDs(
19847        &self,
19848        cbentryid1: u32,
19849        lpentryid1: *mut ENTRYID,
19850        cbentryid2: u32,
19851        lpentryid2: *mut ENTRYID,
19852        ulflags: u32,
19853        lpulresult: *mut u32,
19854    ) -> windows_core::Result<()> {
19855        unsafe {
19856            (windows_core::Interface::vtable(self).CompareStoreIDs)(
19857                windows_core::Interface::as_raw(self),
19858                cbentryid1,
19859                lpentryid1 as _,
19860                cbentryid2,
19861                lpentryid2 as _,
19862                ulflags,
19863                lpulresult as _,
19864            )
19865            .ok()
19866        }
19867    }
19868}
19869#[repr(C)]
19870pub struct IMSProvider_Vtbl {
19871    pub base__: windows_core::IUnknown_Vtbl,
19872    pub Shutdown:
19873        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19874    pub Logon: unsafe extern "system" fn(
19875        *mut core::ffi::c_void,
19876        *mut core::ffi::c_void,
19877        usize,
19878        *mut i8,
19879        u32,
19880        *mut ENTRYID,
19881        u32,
19882        *mut windows_core::GUID,
19883        *mut u32,
19884        *mut *mut u8,
19885        *mut *mut MAPIERROR,
19886        *mut *mut core::ffi::c_void,
19887        *mut *mut core::ffi::c_void,
19888    ) -> windows_core::HRESULT,
19889    pub SpoolerLogon: unsafe extern "system" fn(
19890        *mut core::ffi::c_void,
19891        *mut core::ffi::c_void,
19892        usize,
19893        *mut i8,
19894        u32,
19895        *mut ENTRYID,
19896        u32,
19897        *mut windows_core::GUID,
19898        u32,
19899        *mut u8,
19900        *mut *mut MAPIERROR,
19901        *mut *mut core::ffi::c_void,
19902        *mut *mut core::ffi::c_void,
19903    ) -> windows_core::HRESULT,
19904    pub CompareStoreIDs: unsafe extern "system" fn(
19905        *mut core::ffi::c_void,
19906        u32,
19907        *mut ENTRYID,
19908        u32,
19909        *mut ENTRYID,
19910        u32,
19911        *mut u32,
19912    ) -> windows_core::HRESULT,
19913}
19914pub trait IMSProvider_Impl: windows_core::IUnknownImpl {
19915    fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
19916    fn Logon(
19917        &self,
19918        lpmapisup: windows_core::Ref<'_, IMAPISupport>,
19919        uluiparam: usize,
19920        lpszprofilename: *mut i8,
19921        cbentryid: u32,
19922        lpentryid: *mut ENTRYID,
19923        ulflags: u32,
19924        lpinterface: *mut windows_core::GUID,
19925        lpcbspoolsecurity: *mut u32,
19926        lppbspoolsecurity: *mut *mut u8,
19927        lppmapierror: *mut *mut MAPIERROR,
19928        lppmslogon: windows_core::OutRef<'_, IMSLogon>,
19929        lppmdb: windows_core::OutRef<'_, IMsgStore>,
19930    ) -> windows_core::Result<()>;
19931    fn SpoolerLogon(
19932        &self,
19933        lpmapisup: windows_core::Ref<'_, IMAPISupport>,
19934        uluiparam: usize,
19935        lpszprofilename: *mut i8,
19936        cbentryid: u32,
19937        lpentryid: *mut ENTRYID,
19938        ulflags: u32,
19939        lpinterface: *mut windows_core::GUID,
19940        cbspoolsecurity: u32,
19941        lpbspoolsecurity: *mut u8,
19942        lppmapierror: *mut *mut MAPIERROR,
19943        lppmslogon: windows_core::OutRef<'_, IMSLogon>,
19944        lppmdb: windows_core::OutRef<'_, IMsgStore>,
19945    ) -> windows_core::Result<()>;
19946    fn CompareStoreIDs(
19947        &self,
19948        cbentryid1: u32,
19949        lpentryid1: *mut ENTRYID,
19950        cbentryid2: u32,
19951        lpentryid2: *mut ENTRYID,
19952        ulflags: u32,
19953        lpulresult: *mut u32,
19954    ) -> windows_core::Result<()>;
19955}
19956impl IMSProvider_Vtbl {
19957    pub const fn new<Identity: IMSProvider_Impl, const OFFSET: isize>() -> Self {
19958        unsafe extern "system" fn Shutdown<Identity: IMSProvider_Impl, const OFFSET: isize>(
19959            this: *mut core::ffi::c_void,
19960            lpulflags: *mut u32,
19961        ) -> windows_core::HRESULT {
19962            unsafe {
19963                let this: &Identity =
19964                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19965                IMSProvider_Impl::Shutdown(this, core::mem::transmute_copy(&lpulflags)).into()
19966            }
19967        }
19968        unsafe extern "system" fn Logon<Identity: IMSProvider_Impl, const OFFSET: isize>(
19969            this: *mut core::ffi::c_void,
19970            lpmapisup: *mut core::ffi::c_void,
19971            uluiparam: usize,
19972            lpszprofilename: *mut i8,
19973            cbentryid: u32,
19974            lpentryid: *mut ENTRYID,
19975            ulflags: u32,
19976            lpinterface: *mut windows_core::GUID,
19977            lpcbspoolsecurity: *mut u32,
19978            lppbspoolsecurity: *mut *mut u8,
19979            lppmapierror: *mut *mut MAPIERROR,
19980            lppmslogon: *mut *mut core::ffi::c_void,
19981            lppmdb: *mut *mut core::ffi::c_void,
19982        ) -> windows_core::HRESULT {
19983            unsafe {
19984                let this: &Identity =
19985                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19986                IMSProvider_Impl::Logon(
19987                    this,
19988                    core::mem::transmute_copy(&lpmapisup),
19989                    core::mem::transmute_copy(&uluiparam),
19990                    core::mem::transmute_copy(&lpszprofilename),
19991                    core::mem::transmute_copy(&cbentryid),
19992                    core::mem::transmute_copy(&lpentryid),
19993                    core::mem::transmute_copy(&ulflags),
19994                    core::mem::transmute_copy(&lpinterface),
19995                    core::mem::transmute_copy(&lpcbspoolsecurity),
19996                    core::mem::transmute_copy(&lppbspoolsecurity),
19997                    core::mem::transmute_copy(&lppmapierror),
19998                    core::mem::transmute_copy(&lppmslogon),
19999                    core::mem::transmute_copy(&lppmdb),
20000                )
20001                .into()
20002            }
20003        }
20004        unsafe extern "system" fn SpoolerLogon<Identity: IMSProvider_Impl, const OFFSET: isize>(
20005            this: *mut core::ffi::c_void,
20006            lpmapisup: *mut core::ffi::c_void,
20007            uluiparam: usize,
20008            lpszprofilename: *mut i8,
20009            cbentryid: u32,
20010            lpentryid: *mut ENTRYID,
20011            ulflags: u32,
20012            lpinterface: *mut windows_core::GUID,
20013            cbspoolsecurity: u32,
20014            lpbspoolsecurity: *mut u8,
20015            lppmapierror: *mut *mut MAPIERROR,
20016            lppmslogon: *mut *mut core::ffi::c_void,
20017            lppmdb: *mut *mut core::ffi::c_void,
20018        ) -> windows_core::HRESULT {
20019            unsafe {
20020                let this: &Identity =
20021                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20022                IMSProvider_Impl::SpoolerLogon(
20023                    this,
20024                    core::mem::transmute_copy(&lpmapisup),
20025                    core::mem::transmute_copy(&uluiparam),
20026                    core::mem::transmute_copy(&lpszprofilename),
20027                    core::mem::transmute_copy(&cbentryid),
20028                    core::mem::transmute_copy(&lpentryid),
20029                    core::mem::transmute_copy(&ulflags),
20030                    core::mem::transmute_copy(&lpinterface),
20031                    core::mem::transmute_copy(&cbspoolsecurity),
20032                    core::mem::transmute_copy(&lpbspoolsecurity),
20033                    core::mem::transmute_copy(&lppmapierror),
20034                    core::mem::transmute_copy(&lppmslogon),
20035                    core::mem::transmute_copy(&lppmdb),
20036                )
20037                .into()
20038            }
20039        }
20040        unsafe extern "system" fn CompareStoreIDs<
20041            Identity: IMSProvider_Impl,
20042            const OFFSET: isize,
20043        >(
20044            this: *mut core::ffi::c_void,
20045            cbentryid1: u32,
20046            lpentryid1: *mut ENTRYID,
20047            cbentryid2: u32,
20048            lpentryid2: *mut ENTRYID,
20049            ulflags: u32,
20050            lpulresult: *mut u32,
20051        ) -> windows_core::HRESULT {
20052            unsafe {
20053                let this: &Identity =
20054                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20055                IMSProvider_Impl::CompareStoreIDs(
20056                    this,
20057                    core::mem::transmute_copy(&cbentryid1),
20058                    core::mem::transmute_copy(&lpentryid1),
20059                    core::mem::transmute_copy(&cbentryid2),
20060                    core::mem::transmute_copy(&lpentryid2),
20061                    core::mem::transmute_copy(&ulflags),
20062                    core::mem::transmute_copy(&lpulresult),
20063                )
20064                .into()
20065            }
20066        }
20067        Self {
20068            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20069            Shutdown: Shutdown::<Identity, OFFSET>,
20070            Logon: Logon::<Identity, OFFSET>,
20071            SpoolerLogon: SpoolerLogon::<Identity, OFFSET>,
20072            CompareStoreIDs: CompareStoreIDs::<Identity, OFFSET>,
20073        }
20074    }
20075    pub fn matches(iid: &windows_core::GUID) -> bool {
20076        iid == &<IMSProvider as windows_core::Interface>::IID
20077    }
20078}
20079impl windows_core::RuntimeName for IMSProvider {}
20080pub const IMSProvider_CompareStoreIDs: METHODS = METHODS(111i32);
20081pub const IMSProvider_Logon: METHODS = METHODS(109i32);
20082pub const IMSProvider_Shutdown: METHODS = METHODS(108i32);
20083pub const IMSProvider_SpoolerLogon: METHODS = METHODS(110i32);
20084windows_core::imp::define_interface!(
20085    IMailUser,
20086    IMailUser_Vtbl,
20087    0x0002030a_0000_0000_c000_000000000046
20088);
20089impl core::ops::Deref for IMailUser {
20090    type Target = IMAPIProp;
20091    fn deref(&self) -> &Self::Target {
20092        unsafe { core::mem::transmute(self) }
20093    }
20094}
20095windows_core::imp::interface_hierarchy!(IMailUser, windows_core::IUnknown, IMAPIProp);
20096#[repr(C)]
20097pub struct IMailUser_Vtbl {
20098    pub base__: IMAPIProp_Vtbl,
20099}
20100pub trait IMailUser_Impl: IMAPIProp_Impl {}
20101impl IMailUser_Vtbl {
20102    pub const fn new<Identity: IMailUser_Impl, const OFFSET: isize>() -> Self {
20103        Self {
20104            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
20105        }
20106    }
20107    pub fn matches(iid: &windows_core::GUID) -> bool {
20108        iid == &<IMailUser as windows_core::Interface>::IID
20109            || iid == &<IMAPIProp as windows_core::Interface>::IID
20110    }
20111}
20112impl windows_core::RuntimeName for IMailUser {}
20113windows_core::imp::define_interface!(
20114    IMessage,
20115    IMessage_Vtbl,
20116    0x00020307_0000_0000_c000_000000000046
20117);
20118impl core::ops::Deref for IMessage {
20119    type Target = IMAPIProp;
20120    fn deref(&self) -> &Self::Target {
20121        unsafe { core::mem::transmute(self) }
20122    }
20123}
20124windows_core::imp::interface_hierarchy!(IMessage, windows_core::IUnknown, IMAPIProp);
20125impl IMessage {
20126    pub unsafe fn GetAttachmentTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
20127        unsafe {
20128            let mut result__ = core::mem::zeroed();
20129            (windows_core::Interface::vtable(self).GetAttachmentTable)(
20130                windows_core::Interface::as_raw(self),
20131                ulflags,
20132                &mut result__,
20133            )
20134            .and_then(|| windows_core::Type::from_abi(result__))
20135        }
20136    }
20137    pub unsafe fn OpenAttach(
20138        &self,
20139        ulattachmentnum: u32,
20140        lpinterface: *mut windows_core::GUID,
20141        ulflags: u32,
20142        lppattach: *mut Option<IAttach>,
20143    ) -> windows_core::Result<()> {
20144        unsafe {
20145            (windows_core::Interface::vtable(self).OpenAttach)(
20146                windows_core::Interface::as_raw(self),
20147                ulattachmentnum,
20148                lpinterface as _,
20149                ulflags,
20150                core::mem::transmute(lppattach),
20151            )
20152            .ok()
20153        }
20154    }
20155    pub unsafe fn CreateAttach(
20156        &self,
20157        lpinterface: *mut windows_core::GUID,
20158        ulflags: u32,
20159        lpulattachmentnum: *mut u32,
20160        lppattach: *mut Option<IAttach>,
20161    ) -> windows_core::Result<()> {
20162        unsafe {
20163            (windows_core::Interface::vtable(self).CreateAttach)(
20164                windows_core::Interface::as_raw(self),
20165                lpinterface as _,
20166                ulflags,
20167                lpulattachmentnum as _,
20168                core::mem::transmute(lppattach),
20169            )
20170            .ok()
20171        }
20172    }
20173    pub unsafe fn DeleteAttach<P2>(
20174        &self,
20175        ulattachmentnum: u32,
20176        uluiparam: usize,
20177        lpprogress: P2,
20178        ulflags: u32,
20179    ) -> windows_core::Result<()>
20180    where
20181        P2: windows_core::Param<IMAPIProgress>,
20182    {
20183        unsafe {
20184            (windows_core::Interface::vtable(self).DeleteAttach)(
20185                windows_core::Interface::as_raw(self),
20186                ulattachmentnum,
20187                uluiparam,
20188                lpprogress.param().abi(),
20189                ulflags,
20190            )
20191            .ok()
20192        }
20193    }
20194    pub unsafe fn GetRecipientTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
20195        unsafe {
20196            let mut result__ = core::mem::zeroed();
20197            (windows_core::Interface::vtable(self).GetRecipientTable)(
20198                windows_core::Interface::as_raw(self),
20199                ulflags,
20200                &mut result__,
20201            )
20202            .and_then(|| windows_core::Type::from_abi(result__))
20203        }
20204    }
20205    pub unsafe fn ModifyRecipients(
20206        &self,
20207        ulflags: u32,
20208        lpmods: *mut ADRLIST,
20209    ) -> windows_core::Result<()> {
20210        unsafe {
20211            (windows_core::Interface::vtable(self).ModifyRecipients)(
20212                windows_core::Interface::as_raw(self),
20213                ulflags,
20214                lpmods as _,
20215            )
20216            .ok()
20217        }
20218    }
20219    pub unsafe fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()> {
20220        unsafe {
20221            (windows_core::Interface::vtable(self).SubmitMessage)(
20222                windows_core::Interface::as_raw(self),
20223                ulflags,
20224            )
20225            .ok()
20226        }
20227    }
20228    pub unsafe fn SetReadFlag(&self, ulflags: u32) -> windows_core::Result<()> {
20229        unsafe {
20230            (windows_core::Interface::vtable(self).SetReadFlag)(
20231                windows_core::Interface::as_raw(self),
20232                ulflags,
20233            )
20234            .ok()
20235        }
20236    }
20237}
20238#[repr(C)]
20239pub struct IMessage_Vtbl {
20240    pub base__: IMAPIProp_Vtbl,
20241    pub GetAttachmentTable: unsafe extern "system" fn(
20242        *mut core::ffi::c_void,
20243        u32,
20244        *mut *mut core::ffi::c_void,
20245    ) -> windows_core::HRESULT,
20246    pub OpenAttach: unsafe extern "system" fn(
20247        *mut core::ffi::c_void,
20248        u32,
20249        *mut windows_core::GUID,
20250        u32,
20251        *mut *mut core::ffi::c_void,
20252    ) -> windows_core::HRESULT,
20253    pub CreateAttach: unsafe extern "system" fn(
20254        *mut core::ffi::c_void,
20255        *mut windows_core::GUID,
20256        u32,
20257        *mut u32,
20258        *mut *mut core::ffi::c_void,
20259    ) -> windows_core::HRESULT,
20260    pub DeleteAttach: unsafe extern "system" fn(
20261        *mut core::ffi::c_void,
20262        u32,
20263        usize,
20264        *mut core::ffi::c_void,
20265        u32,
20266    ) -> windows_core::HRESULT,
20267    pub GetRecipientTable: unsafe extern "system" fn(
20268        *mut core::ffi::c_void,
20269        u32,
20270        *mut *mut core::ffi::c_void,
20271    ) -> windows_core::HRESULT,
20272    pub ModifyRecipients: unsafe extern "system" fn(
20273        *mut core::ffi::c_void,
20274        u32,
20275        *mut ADRLIST,
20276    ) -> windows_core::HRESULT,
20277    pub SubmitMessage:
20278        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
20279    pub SetReadFlag:
20280        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
20281}
20282pub trait IMessage_Impl: IMAPIProp_Impl {
20283    fn GetAttachmentTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
20284    fn OpenAttach(
20285        &self,
20286        ulattachmentnum: u32,
20287        lpinterface: *mut windows_core::GUID,
20288        ulflags: u32,
20289        lppattach: windows_core::OutRef<'_, IAttach>,
20290    ) -> windows_core::Result<()>;
20291    fn CreateAttach(
20292        &self,
20293        lpinterface: *mut windows_core::GUID,
20294        ulflags: u32,
20295        lpulattachmentnum: *mut u32,
20296        lppattach: windows_core::OutRef<'_, IAttach>,
20297    ) -> windows_core::Result<()>;
20298    fn DeleteAttach(
20299        &self,
20300        ulattachmentnum: u32,
20301        uluiparam: usize,
20302        lpprogress: windows_core::Ref<'_, IMAPIProgress>,
20303        ulflags: u32,
20304    ) -> windows_core::Result<()>;
20305    fn GetRecipientTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
20306    fn ModifyRecipients(&self, ulflags: u32, lpmods: *mut ADRLIST) -> windows_core::Result<()>;
20307    fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()>;
20308    fn SetReadFlag(&self, ulflags: u32) -> windows_core::Result<()>;
20309}
20310impl IMessage_Vtbl {
20311    pub const fn new<Identity: IMessage_Impl, const OFFSET: isize>() -> Self {
20312        unsafe extern "system" fn GetAttachmentTable<
20313            Identity: IMessage_Impl,
20314            const OFFSET: isize,
20315        >(
20316            this: *mut core::ffi::c_void,
20317            ulflags: u32,
20318            lpptable: *mut *mut core::ffi::c_void,
20319        ) -> windows_core::HRESULT {
20320            unsafe {
20321                let this: &Identity =
20322                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20323                match IMessage_Impl::GetAttachmentTable(this, core::mem::transmute_copy(&ulflags)) {
20324                    Ok(ok__) => {
20325                        lpptable.write(core::mem::transmute(ok__));
20326                        windows_core::HRESULT(0)
20327                    }
20328                    Err(err) => err.into(),
20329                }
20330            }
20331        }
20332        unsafe extern "system" fn OpenAttach<Identity: IMessage_Impl, const OFFSET: isize>(
20333            this: *mut core::ffi::c_void,
20334            ulattachmentnum: u32,
20335            lpinterface: *mut windows_core::GUID,
20336            ulflags: u32,
20337            lppattach: *mut *mut core::ffi::c_void,
20338        ) -> windows_core::HRESULT {
20339            unsafe {
20340                let this: &Identity =
20341                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20342                IMessage_Impl::OpenAttach(
20343                    this,
20344                    core::mem::transmute_copy(&ulattachmentnum),
20345                    core::mem::transmute_copy(&lpinterface),
20346                    core::mem::transmute_copy(&ulflags),
20347                    core::mem::transmute_copy(&lppattach),
20348                )
20349                .into()
20350            }
20351        }
20352        unsafe extern "system" fn CreateAttach<Identity: IMessage_Impl, const OFFSET: isize>(
20353            this: *mut core::ffi::c_void,
20354            lpinterface: *mut windows_core::GUID,
20355            ulflags: u32,
20356            lpulattachmentnum: *mut u32,
20357            lppattach: *mut *mut core::ffi::c_void,
20358        ) -> windows_core::HRESULT {
20359            unsafe {
20360                let this: &Identity =
20361                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20362                IMessage_Impl::CreateAttach(
20363                    this,
20364                    core::mem::transmute_copy(&lpinterface),
20365                    core::mem::transmute_copy(&ulflags),
20366                    core::mem::transmute_copy(&lpulattachmentnum),
20367                    core::mem::transmute_copy(&lppattach),
20368                )
20369                .into()
20370            }
20371        }
20372        unsafe extern "system" fn DeleteAttach<Identity: IMessage_Impl, const OFFSET: isize>(
20373            this: *mut core::ffi::c_void,
20374            ulattachmentnum: u32,
20375            uluiparam: usize,
20376            lpprogress: *mut core::ffi::c_void,
20377            ulflags: u32,
20378        ) -> windows_core::HRESULT {
20379            unsafe {
20380                let this: &Identity =
20381                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20382                IMessage_Impl::DeleteAttach(
20383                    this,
20384                    core::mem::transmute_copy(&ulattachmentnum),
20385                    core::mem::transmute_copy(&uluiparam),
20386                    core::mem::transmute_copy(&lpprogress),
20387                    core::mem::transmute_copy(&ulflags),
20388                )
20389                .into()
20390            }
20391        }
20392        unsafe extern "system" fn GetRecipientTable<
20393            Identity: IMessage_Impl,
20394            const OFFSET: isize,
20395        >(
20396            this: *mut core::ffi::c_void,
20397            ulflags: u32,
20398            lpptable: *mut *mut core::ffi::c_void,
20399        ) -> windows_core::HRESULT {
20400            unsafe {
20401                let this: &Identity =
20402                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20403                match IMessage_Impl::GetRecipientTable(this, core::mem::transmute_copy(&ulflags)) {
20404                    Ok(ok__) => {
20405                        lpptable.write(core::mem::transmute(ok__));
20406                        windows_core::HRESULT(0)
20407                    }
20408                    Err(err) => err.into(),
20409                }
20410            }
20411        }
20412        unsafe extern "system" fn ModifyRecipients<Identity: IMessage_Impl, const OFFSET: isize>(
20413            this: *mut core::ffi::c_void,
20414            ulflags: u32,
20415            lpmods: *mut ADRLIST,
20416        ) -> windows_core::HRESULT {
20417            unsafe {
20418                let this: &Identity =
20419                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20420                IMessage_Impl::ModifyRecipients(
20421                    this,
20422                    core::mem::transmute_copy(&ulflags),
20423                    core::mem::transmute_copy(&lpmods),
20424                )
20425                .into()
20426            }
20427        }
20428        unsafe extern "system" fn SubmitMessage<Identity: IMessage_Impl, const OFFSET: isize>(
20429            this: *mut core::ffi::c_void,
20430            ulflags: u32,
20431        ) -> windows_core::HRESULT {
20432            unsafe {
20433                let this: &Identity =
20434                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20435                IMessage_Impl::SubmitMessage(this, core::mem::transmute_copy(&ulflags)).into()
20436            }
20437        }
20438        unsafe extern "system" fn SetReadFlag<Identity: IMessage_Impl, const OFFSET: isize>(
20439            this: *mut core::ffi::c_void,
20440            ulflags: u32,
20441        ) -> windows_core::HRESULT {
20442            unsafe {
20443                let this: &Identity =
20444                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20445                IMessage_Impl::SetReadFlag(this, core::mem::transmute_copy(&ulflags)).into()
20446            }
20447        }
20448        Self {
20449            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
20450            GetAttachmentTable: GetAttachmentTable::<Identity, OFFSET>,
20451            OpenAttach: OpenAttach::<Identity, OFFSET>,
20452            CreateAttach: CreateAttach::<Identity, OFFSET>,
20453            DeleteAttach: DeleteAttach::<Identity, OFFSET>,
20454            GetRecipientTable: GetRecipientTable::<Identity, OFFSET>,
20455            ModifyRecipients: ModifyRecipients::<Identity, OFFSET>,
20456            SubmitMessage: SubmitMessage::<Identity, OFFSET>,
20457            SetReadFlag: SetReadFlag::<Identity, OFFSET>,
20458        }
20459    }
20460    pub fn matches(iid: &windows_core::GUID) -> bool {
20461        iid == &<IMessage as windows_core::Interface>::IID
20462            || iid == &<IMAPIProp as windows_core::Interface>::IID
20463    }
20464}
20465impl windows_core::RuntimeName for IMessage {}
20466pub const IMessage_CreateAttach: METHODS = METHODS(76i32);
20467pub const IMessage_DeleteAttach: METHODS = METHODS(77i32);
20468pub const IMessage_GetAttachmentTable: METHODS = METHODS(74i32);
20469pub const IMessage_GetRecipientTable: METHODS = METHODS(78i32);
20470pub const IMessage_ModifyRecipients: METHODS = METHODS(79i32);
20471pub const IMessage_OpenAttach: METHODS = METHODS(75i32);
20472pub const IMessage_SetReadFlag: METHODS = METHODS(81i32);
20473pub const IMessage_SubmitMessage: METHODS = METHODS(80i32);
20474windows_core::imp::define_interface!(
20475    IMimeAddressTable,
20476    IMimeAddressTable_Vtbl,
20477    0xc558834a_7f86_11d0_8252_00c04fd85ab4
20478);
20479windows_core::imp::interface_hierarchy!(IMimeAddressTable, windows_core::IUnknown);
20480impl IMimeAddressTable {
20481    pub unsafe fn Append<P2, P3>(
20482        &self,
20483        dwadrtype: u32,
20484        ietfriendly: ENCODINGTYPE,
20485        pszfriendly: P2,
20486        pszemail: P3,
20487        phaddress: *mut *mut HADDRESS__,
20488    ) -> windows_core::Result<()>
20489    where
20490        P2: windows_core::Param<windows_core::PCSTR>,
20491        P3: windows_core::Param<windows_core::PCSTR>,
20492    {
20493        unsafe {
20494            (windows_core::Interface::vtable(self).Append)(
20495                windows_core::Interface::as_raw(self),
20496                dwadrtype,
20497                ietfriendly,
20498                pszfriendly.param().abi(),
20499                pszemail.param().abi(),
20500                phaddress as _,
20501            )
20502            .ok()
20503        }
20504    }
20505    pub unsafe fn Insert(
20506        &self,
20507        paddress: *mut ADDRESSPROPS,
20508        phaddress: *mut *mut HADDRESS__,
20509    ) -> windows_core::Result<()> {
20510        unsafe {
20511            (windows_core::Interface::vtable(self).Insert)(
20512                windows_core::Interface::as_raw(self),
20513                paddress as _,
20514                phaddress as _,
20515            )
20516            .ok()
20517        }
20518    }
20519    pub unsafe fn SetProps(
20520        &self,
20521        haddress: *mut HADDRESS__,
20522        paddress: *mut ADDRESSPROPS,
20523    ) -> windows_core::Result<()> {
20524        unsafe {
20525            (windows_core::Interface::vtable(self).SetProps)(
20526                windows_core::Interface::as_raw(self),
20527                haddress as _,
20528                paddress as _,
20529            )
20530            .ok()
20531        }
20532    }
20533    pub unsafe fn GetProps(
20534        &self,
20535        haddress: *mut HADDRESS__,
20536        paddress: *mut ADDRESSPROPS,
20537    ) -> windows_core::Result<()> {
20538        unsafe {
20539            (windows_core::Interface::vtable(self).GetProps)(
20540                windows_core::Interface::as_raw(self),
20541                haddress as _,
20542                paddress as _,
20543            )
20544            .ok()
20545        }
20546    }
20547    pub unsafe fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()> {
20548        unsafe {
20549            (windows_core::Interface::vtable(self).GetSender)(
20550                windows_core::Interface::as_raw(self),
20551                paddress as _,
20552            )
20553            .ok()
20554        }
20555    }
20556    pub unsafe fn CountTypes(&self, dwadrtypes: u32, pcadrs: *mut u32) -> windows_core::Result<()> {
20557        unsafe {
20558            (windows_core::Interface::vtable(self).CountTypes)(
20559                windows_core::Interface::as_raw(self),
20560                dwadrtypes,
20561                pcadrs as _,
20562            )
20563            .ok()
20564        }
20565    }
20566    pub unsafe fn GetTypes(
20567        &self,
20568        dwadrtypes: u32,
20569        dwprops: u32,
20570        plist: *mut ADDRESSLIST,
20571    ) -> windows_core::Result<()> {
20572        unsafe {
20573            (windows_core::Interface::vtable(self).GetTypes)(
20574                windows_core::Interface::as_raw(self),
20575                dwadrtypes,
20576                dwprops,
20577                plist as _,
20578            )
20579            .ok()
20580        }
20581    }
20582    pub unsafe fn EnumTypes(
20583        &self,
20584        dwadrtypes: u32,
20585        dwprops: u32,
20586    ) -> windows_core::Result<IMimeEnumAddressTypes> {
20587        unsafe {
20588            let mut result__ = core::mem::zeroed();
20589            (windows_core::Interface::vtable(self).EnumTypes)(
20590                windows_core::Interface::as_raw(self),
20591                dwadrtypes,
20592                dwprops,
20593                &mut result__,
20594            )
20595            .and_then(|| windows_core::Type::from_abi(result__))
20596        }
20597    }
20598    pub unsafe fn Delete(&self, haddress: *mut HADDRESS__) -> windows_core::Result<()> {
20599        unsafe {
20600            (windows_core::Interface::vtable(self).Delete)(
20601                windows_core::Interface::as_raw(self),
20602                haddress as _,
20603            )
20604            .ok()
20605        }
20606    }
20607    pub unsafe fn DeleteTypes(&self, dwadrtypes: u32) -> windows_core::Result<()> {
20608        unsafe {
20609            (windows_core::Interface::vtable(self).DeleteTypes)(
20610                windows_core::Interface::as_raw(self),
20611                dwadrtypes,
20612            )
20613            .ok()
20614        }
20615    }
20616    pub unsafe fn GetFormat(
20617        &self,
20618        dwadrtype: u32,
20619        format: ADDRESSFORMAT,
20620        ppszformat: *mut windows_core::PSTR,
20621    ) -> windows_core::Result<()> {
20622        unsafe {
20623            (windows_core::Interface::vtable(self).GetFormat)(
20624                windows_core::Interface::as_raw(self),
20625                dwadrtype,
20626                format,
20627                ppszformat as _,
20628            )
20629            .ok()
20630        }
20631    }
20632    pub unsafe fn AppendRfc822<P2>(
20633        &self,
20634        dwadrtype: u32,
20635        ietencoding: ENCODINGTYPE,
20636        pszrfc822adr: P2,
20637    ) -> windows_core::Result<()>
20638    where
20639        P2: windows_core::Param<windows_core::PCSTR>,
20640    {
20641        unsafe {
20642            (windows_core::Interface::vtable(self).AppendRfc822)(
20643                windows_core::Interface::as_raw(self),
20644                dwadrtype,
20645                ietencoding,
20646                pszrfc822adr.param().abi(),
20647            )
20648            .ok()
20649        }
20650    }
20651    pub unsafe fn ParseRfc822<P2>(
20652        &self,
20653        dwadrtype: u32,
20654        ietencoding: ENCODINGTYPE,
20655        pszrfc822adr: P2,
20656        plist: *mut ADDRESSLIST,
20657    ) -> windows_core::Result<()>
20658    where
20659        P2: windows_core::Param<windows_core::PCSTR>,
20660    {
20661        unsafe {
20662            (windows_core::Interface::vtable(self).ParseRfc822)(
20663                windows_core::Interface::as_raw(self),
20664                dwadrtype,
20665                ietencoding,
20666                pszrfc822adr.param().abi(),
20667                plist as _,
20668            )
20669            .ok()
20670        }
20671    }
20672    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeAddressTable> {
20673        unsafe {
20674            let mut result__ = core::mem::zeroed();
20675            (windows_core::Interface::vtable(self).Clone)(
20676                windows_core::Interface::as_raw(self),
20677                &mut result__,
20678            )
20679            .and_then(|| windows_core::Type::from_abi(result__))
20680        }
20681    }
20682    pub unsafe fn BindToObject(
20683        &self,
20684        riid: *const windows_core::GUID,
20685        ppvobject: *mut *mut core::ffi::c_void,
20686    ) -> windows_core::Result<()> {
20687        unsafe {
20688            (windows_core::Interface::vtable(self).BindToObject)(
20689                windows_core::Interface::as_raw(self),
20690                riid,
20691                ppvobject as _,
20692            )
20693            .ok()
20694        }
20695    }
20696}
20697#[repr(C)]
20698pub struct IMimeAddressTable_Vtbl {
20699    pub base__: windows_core::IUnknown_Vtbl,
20700    pub Append: unsafe extern "system" fn(
20701        *mut core::ffi::c_void,
20702        u32,
20703        ENCODINGTYPE,
20704        windows_core::PCSTR,
20705        windows_core::PCSTR,
20706        *mut *mut HADDRESS__,
20707    ) -> windows_core::HRESULT,
20708    pub Insert: unsafe extern "system" fn(
20709        *mut core::ffi::c_void,
20710        *mut ADDRESSPROPS,
20711        *mut *mut HADDRESS__,
20712    ) -> windows_core::HRESULT,
20713    pub SetProps: unsafe extern "system" fn(
20714        *mut core::ffi::c_void,
20715        *mut HADDRESS__,
20716        *mut ADDRESSPROPS,
20717    ) -> windows_core::HRESULT,
20718    pub GetProps: unsafe extern "system" fn(
20719        *mut core::ffi::c_void,
20720        *mut HADDRESS__,
20721        *mut ADDRESSPROPS,
20722    ) -> windows_core::HRESULT,
20723    pub GetSender: unsafe extern "system" fn(
20724        *mut core::ffi::c_void,
20725        *mut ADDRESSPROPS,
20726    ) -> windows_core::HRESULT,
20727    pub CountTypes:
20728        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
20729    pub GetTypes: unsafe extern "system" fn(
20730        *mut core::ffi::c_void,
20731        u32,
20732        u32,
20733        *mut ADDRESSLIST,
20734    ) -> windows_core::HRESULT,
20735    pub EnumTypes: unsafe extern "system" fn(
20736        *mut core::ffi::c_void,
20737        u32,
20738        u32,
20739        *mut *mut core::ffi::c_void,
20740    ) -> windows_core::HRESULT,
20741    pub Delete:
20742        unsafe extern "system" fn(*mut core::ffi::c_void, *mut HADDRESS__) -> windows_core::HRESULT,
20743    pub DeleteTypes:
20744        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
20745    pub GetFormat: unsafe extern "system" fn(
20746        *mut core::ffi::c_void,
20747        u32,
20748        ADDRESSFORMAT,
20749        *mut windows_core::PSTR,
20750    ) -> windows_core::HRESULT,
20751    pub AppendRfc822: unsafe extern "system" fn(
20752        *mut core::ffi::c_void,
20753        u32,
20754        ENCODINGTYPE,
20755        windows_core::PCSTR,
20756    ) -> windows_core::HRESULT,
20757    pub ParseRfc822: unsafe extern "system" fn(
20758        *mut core::ffi::c_void,
20759        u32,
20760        ENCODINGTYPE,
20761        windows_core::PCSTR,
20762        *mut ADDRESSLIST,
20763    ) -> windows_core::HRESULT,
20764    pub Clone: unsafe extern "system" fn(
20765        *mut core::ffi::c_void,
20766        *mut *mut core::ffi::c_void,
20767    ) -> windows_core::HRESULT,
20768    pub BindToObject: unsafe extern "system" fn(
20769        *mut core::ffi::c_void,
20770        *const windows_core::GUID,
20771        *mut *mut core::ffi::c_void,
20772    ) -> windows_core::HRESULT,
20773}
20774pub trait IMimeAddressTable_Impl: windows_core::IUnknownImpl {
20775    fn Append(
20776        &self,
20777        dwadrtype: u32,
20778        ietfriendly: ENCODINGTYPE,
20779        pszfriendly: &windows_core::PCSTR,
20780        pszemail: &windows_core::PCSTR,
20781        phaddress: *mut *mut HADDRESS__,
20782    ) -> windows_core::Result<()>;
20783    fn Insert(
20784        &self,
20785        paddress: *mut ADDRESSPROPS,
20786        phaddress: *mut *mut HADDRESS__,
20787    ) -> windows_core::Result<()>;
20788    fn SetProps(
20789        &self,
20790        haddress: *mut HADDRESS__,
20791        paddress: *mut ADDRESSPROPS,
20792    ) -> windows_core::Result<()>;
20793    fn GetProps(
20794        &self,
20795        haddress: *mut HADDRESS__,
20796        paddress: *mut ADDRESSPROPS,
20797    ) -> windows_core::Result<()>;
20798    fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()>;
20799    fn CountTypes(&self, dwadrtypes: u32, pcadrs: *mut u32) -> windows_core::Result<()>;
20800    fn GetTypes(
20801        &self,
20802        dwadrtypes: u32,
20803        dwprops: u32,
20804        plist: *mut ADDRESSLIST,
20805    ) -> windows_core::Result<()>;
20806    fn EnumTypes(
20807        &self,
20808        dwadrtypes: u32,
20809        dwprops: u32,
20810    ) -> windows_core::Result<IMimeEnumAddressTypes>;
20811    fn Delete(&self, haddress: *mut HADDRESS__) -> windows_core::Result<()>;
20812    fn DeleteTypes(&self, dwadrtypes: u32) -> windows_core::Result<()>;
20813    fn GetFormat(
20814        &self,
20815        dwadrtype: u32,
20816        format: ADDRESSFORMAT,
20817        ppszformat: *mut windows_core::PSTR,
20818    ) -> windows_core::Result<()>;
20819    fn AppendRfc822(
20820        &self,
20821        dwadrtype: u32,
20822        ietencoding: ENCODINGTYPE,
20823        pszrfc822adr: &windows_core::PCSTR,
20824    ) -> windows_core::Result<()>;
20825    fn ParseRfc822(
20826        &self,
20827        dwadrtype: u32,
20828        ietencoding: ENCODINGTYPE,
20829        pszrfc822adr: &windows_core::PCSTR,
20830        plist: *mut ADDRESSLIST,
20831    ) -> windows_core::Result<()>;
20832    fn Clone(&self) -> windows_core::Result<IMimeAddressTable>;
20833    fn BindToObject(
20834        &self,
20835        riid: *const windows_core::GUID,
20836        ppvobject: *mut *mut core::ffi::c_void,
20837    ) -> windows_core::Result<()>;
20838}
20839impl IMimeAddressTable_Vtbl {
20840    pub const fn new<Identity: IMimeAddressTable_Impl, const OFFSET: isize>() -> Self {
20841        unsafe extern "system" fn Append<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
20842            this: *mut core::ffi::c_void,
20843            dwadrtype: u32,
20844            ietfriendly: ENCODINGTYPE,
20845            pszfriendly: windows_core::PCSTR,
20846            pszemail: windows_core::PCSTR,
20847            phaddress: *mut *mut HADDRESS__,
20848        ) -> windows_core::HRESULT {
20849            unsafe {
20850                let this: &Identity =
20851                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20852                IMimeAddressTable_Impl::Append(
20853                    this,
20854                    core::mem::transmute_copy(&dwadrtype),
20855                    core::mem::transmute_copy(&ietfriendly),
20856                    core::mem::transmute(&pszfriendly),
20857                    core::mem::transmute(&pszemail),
20858                    core::mem::transmute_copy(&phaddress),
20859                )
20860                .into()
20861            }
20862        }
20863        unsafe extern "system" fn Insert<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
20864            this: *mut core::ffi::c_void,
20865            paddress: *mut ADDRESSPROPS,
20866            phaddress: *mut *mut HADDRESS__,
20867        ) -> windows_core::HRESULT {
20868            unsafe {
20869                let this: &Identity =
20870                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20871                IMimeAddressTable_Impl::Insert(
20872                    this,
20873                    core::mem::transmute_copy(&paddress),
20874                    core::mem::transmute_copy(&phaddress),
20875                )
20876                .into()
20877            }
20878        }
20879        unsafe extern "system" fn SetProps<
20880            Identity: IMimeAddressTable_Impl,
20881            const OFFSET: isize,
20882        >(
20883            this: *mut core::ffi::c_void,
20884            haddress: *mut HADDRESS__,
20885            paddress: *mut ADDRESSPROPS,
20886        ) -> windows_core::HRESULT {
20887            unsafe {
20888                let this: &Identity =
20889                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20890                IMimeAddressTable_Impl::SetProps(
20891                    this,
20892                    core::mem::transmute_copy(&haddress),
20893                    core::mem::transmute_copy(&paddress),
20894                )
20895                .into()
20896            }
20897        }
20898        unsafe extern "system" fn GetProps<
20899            Identity: IMimeAddressTable_Impl,
20900            const OFFSET: isize,
20901        >(
20902            this: *mut core::ffi::c_void,
20903            haddress: *mut HADDRESS__,
20904            paddress: *mut ADDRESSPROPS,
20905        ) -> windows_core::HRESULT {
20906            unsafe {
20907                let this: &Identity =
20908                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20909                IMimeAddressTable_Impl::GetProps(
20910                    this,
20911                    core::mem::transmute_copy(&haddress),
20912                    core::mem::transmute_copy(&paddress),
20913                )
20914                .into()
20915            }
20916        }
20917        unsafe extern "system" fn GetSender<
20918            Identity: IMimeAddressTable_Impl,
20919            const OFFSET: isize,
20920        >(
20921            this: *mut core::ffi::c_void,
20922            paddress: *mut ADDRESSPROPS,
20923        ) -> windows_core::HRESULT {
20924            unsafe {
20925                let this: &Identity =
20926                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20927                IMimeAddressTable_Impl::GetSender(this, core::mem::transmute_copy(&paddress)).into()
20928            }
20929        }
20930        unsafe extern "system" fn CountTypes<
20931            Identity: IMimeAddressTable_Impl,
20932            const OFFSET: isize,
20933        >(
20934            this: *mut core::ffi::c_void,
20935            dwadrtypes: u32,
20936            pcadrs: *mut u32,
20937        ) -> windows_core::HRESULT {
20938            unsafe {
20939                let this: &Identity =
20940                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20941                IMimeAddressTable_Impl::CountTypes(
20942                    this,
20943                    core::mem::transmute_copy(&dwadrtypes),
20944                    core::mem::transmute_copy(&pcadrs),
20945                )
20946                .into()
20947            }
20948        }
20949        unsafe extern "system" fn GetTypes<
20950            Identity: IMimeAddressTable_Impl,
20951            const OFFSET: isize,
20952        >(
20953            this: *mut core::ffi::c_void,
20954            dwadrtypes: u32,
20955            dwprops: u32,
20956            plist: *mut ADDRESSLIST,
20957        ) -> windows_core::HRESULT {
20958            unsafe {
20959                let this: &Identity =
20960                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20961                IMimeAddressTable_Impl::GetTypes(
20962                    this,
20963                    core::mem::transmute_copy(&dwadrtypes),
20964                    core::mem::transmute_copy(&dwprops),
20965                    core::mem::transmute_copy(&plist),
20966                )
20967                .into()
20968            }
20969        }
20970        unsafe extern "system" fn EnumTypes<
20971            Identity: IMimeAddressTable_Impl,
20972            const OFFSET: isize,
20973        >(
20974            this: *mut core::ffi::c_void,
20975            dwadrtypes: u32,
20976            dwprops: u32,
20977            ppenum: *mut *mut core::ffi::c_void,
20978        ) -> windows_core::HRESULT {
20979            unsafe {
20980                let this: &Identity =
20981                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20982                match IMimeAddressTable_Impl::EnumTypes(
20983                    this,
20984                    core::mem::transmute_copy(&dwadrtypes),
20985                    core::mem::transmute_copy(&dwprops),
20986                ) {
20987                    Ok(ok__) => {
20988                        ppenum.write(core::mem::transmute(ok__));
20989                        windows_core::HRESULT(0)
20990                    }
20991                    Err(err) => err.into(),
20992                }
20993            }
20994        }
20995        unsafe extern "system" fn Delete<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
20996            this: *mut core::ffi::c_void,
20997            haddress: *mut HADDRESS__,
20998        ) -> windows_core::HRESULT {
20999            unsafe {
21000                let this: &Identity =
21001                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21002                IMimeAddressTable_Impl::Delete(this, core::mem::transmute_copy(&haddress)).into()
21003            }
21004        }
21005        unsafe extern "system" fn DeleteTypes<
21006            Identity: IMimeAddressTable_Impl,
21007            const OFFSET: isize,
21008        >(
21009            this: *mut core::ffi::c_void,
21010            dwadrtypes: u32,
21011        ) -> windows_core::HRESULT {
21012            unsafe {
21013                let this: &Identity =
21014                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21015                IMimeAddressTable_Impl::DeleteTypes(this, core::mem::transmute_copy(&dwadrtypes))
21016                    .into()
21017            }
21018        }
21019        unsafe extern "system" fn GetFormat<
21020            Identity: IMimeAddressTable_Impl,
21021            const OFFSET: isize,
21022        >(
21023            this: *mut core::ffi::c_void,
21024            dwadrtype: u32,
21025            format: ADDRESSFORMAT,
21026            ppszformat: *mut windows_core::PSTR,
21027        ) -> windows_core::HRESULT {
21028            unsafe {
21029                let this: &Identity =
21030                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21031                IMimeAddressTable_Impl::GetFormat(
21032                    this,
21033                    core::mem::transmute_copy(&dwadrtype),
21034                    core::mem::transmute_copy(&format),
21035                    core::mem::transmute_copy(&ppszformat),
21036                )
21037                .into()
21038            }
21039        }
21040        unsafe extern "system" fn AppendRfc822<
21041            Identity: IMimeAddressTable_Impl,
21042            const OFFSET: isize,
21043        >(
21044            this: *mut core::ffi::c_void,
21045            dwadrtype: u32,
21046            ietencoding: ENCODINGTYPE,
21047            pszrfc822adr: windows_core::PCSTR,
21048        ) -> windows_core::HRESULT {
21049            unsafe {
21050                let this: &Identity =
21051                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21052                IMimeAddressTable_Impl::AppendRfc822(
21053                    this,
21054                    core::mem::transmute_copy(&dwadrtype),
21055                    core::mem::transmute_copy(&ietencoding),
21056                    core::mem::transmute(&pszrfc822adr),
21057                )
21058                .into()
21059            }
21060        }
21061        unsafe extern "system" fn ParseRfc822<
21062            Identity: IMimeAddressTable_Impl,
21063            const OFFSET: isize,
21064        >(
21065            this: *mut core::ffi::c_void,
21066            dwadrtype: u32,
21067            ietencoding: ENCODINGTYPE,
21068            pszrfc822adr: windows_core::PCSTR,
21069            plist: *mut ADDRESSLIST,
21070        ) -> windows_core::HRESULT {
21071            unsafe {
21072                let this: &Identity =
21073                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21074                IMimeAddressTable_Impl::ParseRfc822(
21075                    this,
21076                    core::mem::transmute_copy(&dwadrtype),
21077                    core::mem::transmute_copy(&ietencoding),
21078                    core::mem::transmute(&pszrfc822adr),
21079                    core::mem::transmute_copy(&plist),
21080                )
21081                .into()
21082            }
21083        }
21084        unsafe extern "system" fn Clone<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
21085            this: *mut core::ffi::c_void,
21086            pptable: *mut *mut core::ffi::c_void,
21087        ) -> windows_core::HRESULT {
21088            unsafe {
21089                let this: &Identity =
21090                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21091                match IMimeAddressTable_Impl::Clone(this) {
21092                    Ok(ok__) => {
21093                        pptable.write(core::mem::transmute(ok__));
21094                        windows_core::HRESULT(0)
21095                    }
21096                    Err(err) => err.into(),
21097                }
21098            }
21099        }
21100        unsafe extern "system" fn BindToObject<
21101            Identity: IMimeAddressTable_Impl,
21102            const OFFSET: isize,
21103        >(
21104            this: *mut core::ffi::c_void,
21105            riid: *const windows_core::GUID,
21106            ppvobject: *mut *mut core::ffi::c_void,
21107        ) -> windows_core::HRESULT {
21108            unsafe {
21109                let this: &Identity =
21110                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21111                IMimeAddressTable_Impl::BindToObject(
21112                    this,
21113                    core::mem::transmute_copy(&riid),
21114                    core::mem::transmute_copy(&ppvobject),
21115                )
21116                .into()
21117            }
21118        }
21119        Self {
21120            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21121            Append: Append::<Identity, OFFSET>,
21122            Insert: Insert::<Identity, OFFSET>,
21123            SetProps: SetProps::<Identity, OFFSET>,
21124            GetProps: GetProps::<Identity, OFFSET>,
21125            GetSender: GetSender::<Identity, OFFSET>,
21126            CountTypes: CountTypes::<Identity, OFFSET>,
21127            GetTypes: GetTypes::<Identity, OFFSET>,
21128            EnumTypes: EnumTypes::<Identity, OFFSET>,
21129            Delete: Delete::<Identity, OFFSET>,
21130            DeleteTypes: DeleteTypes::<Identity, OFFSET>,
21131            GetFormat: GetFormat::<Identity, OFFSET>,
21132            AppendRfc822: AppendRfc822::<Identity, OFFSET>,
21133            ParseRfc822: ParseRfc822::<Identity, OFFSET>,
21134            Clone: Clone::<Identity, OFFSET>,
21135            BindToObject: BindToObject::<Identity, OFFSET>,
21136        }
21137    }
21138    pub fn matches(iid: &windows_core::GUID) -> bool {
21139        iid == &<IMimeAddressTable as windows_core::Interface>::IID
21140    }
21141}
21142impl windows_core::RuntimeName for IMimeAddressTable {}
21143windows_core::imp::define_interface!(
21144    IMimeAllocator,
21145    IMimeAllocator_Vtbl,
21146    0xc5588351_7f86_11d0_8252_00c04fd85ab4
21147);
21148impl core::ops::Deref for IMimeAllocator {
21149    type Target = windows::Win32::System::Com::IMalloc;
21150    fn deref(&self) -> &Self::Target {
21151        unsafe { core::mem::transmute(self) }
21152    }
21153}
21154windows_core::imp::interface_hierarchy!(
21155    IMimeAllocator,
21156    windows_core::IUnknown,
21157    windows::Win32::System::Com::IMalloc
21158);
21159impl IMimeAllocator {
21160    pub unsafe fn FreeParamInfoArray(
21161        &self,
21162        cparams: u32,
21163        prgparam: *mut MIMEPARAMINFO,
21164        ffreearray: u8,
21165    ) -> windows_core::Result<()> {
21166        unsafe {
21167            (windows_core::Interface::vtable(self).FreeParamInfoArray)(
21168                windows_core::Interface::as_raw(self),
21169                cparams,
21170                prgparam as _,
21171                ffreearray,
21172            )
21173            .ok()
21174        }
21175    }
21176    pub unsafe fn FreeAddressList(&self, plist: *mut ADDRESSLIST) -> windows_core::Result<()> {
21177        unsafe {
21178            (windows_core::Interface::vtable(self).FreeAddressList)(
21179                windows_core::Interface::as_raw(self),
21180                plist as _,
21181            )
21182            .ok()
21183        }
21184    }
21185    pub unsafe fn FreeAddressProps(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()> {
21186        unsafe {
21187            (windows_core::Interface::vtable(self).FreeAddressProps)(
21188                windows_core::Interface::as_raw(self),
21189                paddress as _,
21190            )
21191            .ok()
21192        }
21193    }
21194    pub unsafe fn ReleaseObjects(
21195        &self,
21196        cobjects: u32,
21197        prgpunknown: *mut Option<windows_core::IUnknown>,
21198        ffreearray: u8,
21199    ) -> windows_core::Result<()> {
21200        unsafe {
21201            (windows_core::Interface::vtable(self).ReleaseObjects)(
21202                windows_core::Interface::as_raw(self),
21203                cobjects,
21204                core::mem::transmute(prgpunknown),
21205                ffreearray,
21206            )
21207            .ok()
21208        }
21209    }
21210    pub unsafe fn FreeEnumHeaderRowArray(
21211        &self,
21212        crows: u32,
21213        prgrow: *mut ENUMHEADERROW,
21214        ffreearray: u8,
21215    ) -> windows_core::Result<()> {
21216        unsafe {
21217            (windows_core::Interface::vtable(self).FreeEnumHeaderRowArray)(
21218                windows_core::Interface::as_raw(self),
21219                crows,
21220                prgrow as _,
21221                ffreearray,
21222            )
21223            .ok()
21224        }
21225    }
21226    pub unsafe fn FreeEnumPropertyArray(
21227        &self,
21228        cprops: u32,
21229        prgprop: *mut ENUMPROPERTY,
21230        ffreearray: u8,
21231    ) -> windows_core::Result<()> {
21232        unsafe {
21233            (windows_core::Interface::vtable(self).FreeEnumPropertyArray)(
21234                windows_core::Interface::as_raw(self),
21235                cprops,
21236                prgprop as _,
21237                ffreearray,
21238            )
21239            .ok()
21240        }
21241    }
21242    pub unsafe fn FreeThumbprint(
21243        &self,
21244        pthumbprint: *mut windows::Win32::System::Com::BLOB,
21245    ) -> windows_core::Result<()> {
21246        unsafe {
21247            (windows_core::Interface::vtable(self).FreeThumbprint)(
21248                windows_core::Interface::as_raw(self),
21249                pthumbprint as _,
21250            )
21251            .ok()
21252        }
21253    }
21254    pub unsafe fn PropVariantClear(
21255        &self,
21256        pprop: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21257    ) -> windows_core::Result<()> {
21258        unsafe {
21259            (windows_core::Interface::vtable(self).PropVariantClear)(
21260                windows_core::Interface::as_raw(self),
21261                core::mem::transmute(pprop),
21262            )
21263            .ok()
21264        }
21265    }
21266}
21267#[repr(C)]
21268pub struct IMimeAllocator_Vtbl {
21269    pub base__: windows::Win32::System::Com::IMalloc_Vtbl,
21270    pub FreeParamInfoArray: unsafe extern "system" fn(
21271        *mut core::ffi::c_void,
21272        u32,
21273        *mut MIMEPARAMINFO,
21274        u8,
21275    ) -> windows_core::HRESULT,
21276    pub FreeAddressList: unsafe extern "system" fn(
21277        *mut core::ffi::c_void,
21278        *mut ADDRESSLIST,
21279    ) -> windows_core::HRESULT,
21280    pub FreeAddressProps: unsafe extern "system" fn(
21281        *mut core::ffi::c_void,
21282        *mut ADDRESSPROPS,
21283    ) -> windows_core::HRESULT,
21284    pub ReleaseObjects: unsafe extern "system" fn(
21285        *mut core::ffi::c_void,
21286        u32,
21287        *mut *mut core::ffi::c_void,
21288        u8,
21289    ) -> windows_core::HRESULT,
21290    pub FreeEnumHeaderRowArray: unsafe extern "system" fn(
21291        *mut core::ffi::c_void,
21292        u32,
21293        *mut ENUMHEADERROW,
21294        u8,
21295    ) -> windows_core::HRESULT,
21296    pub FreeEnumPropertyArray: unsafe extern "system" fn(
21297        *mut core::ffi::c_void,
21298        u32,
21299        *mut ENUMPROPERTY,
21300        u8,
21301    ) -> windows_core::HRESULT,
21302    pub FreeThumbprint: unsafe extern "system" fn(
21303        *mut core::ffi::c_void,
21304        *mut windows::Win32::System::Com::BLOB,
21305    ) -> windows_core::HRESULT,
21306    pub PropVariantClear: unsafe extern "system" fn(
21307        *mut core::ffi::c_void,
21308        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21309    ) -> windows_core::HRESULT,
21310}
21311pub trait IMimeAllocator_Impl: windows::Win32::System::Com::IMalloc_Impl {
21312    fn FreeParamInfoArray(
21313        &self,
21314        cparams: u32,
21315        prgparam: *mut MIMEPARAMINFO,
21316        ffreearray: u8,
21317    ) -> windows_core::Result<()>;
21318    fn FreeAddressList(&self, plist: *mut ADDRESSLIST) -> windows_core::Result<()>;
21319    fn FreeAddressProps(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()>;
21320    fn ReleaseObjects(
21321        &self,
21322        cobjects: u32,
21323        prgpunknown: windows_core::OutRef<'_, windows_core::IUnknown>,
21324        ffreearray: u8,
21325    ) -> windows_core::Result<()>;
21326    fn FreeEnumHeaderRowArray(
21327        &self,
21328        crows: u32,
21329        prgrow: *mut ENUMHEADERROW,
21330        ffreearray: u8,
21331    ) -> windows_core::Result<()>;
21332    fn FreeEnumPropertyArray(
21333        &self,
21334        cprops: u32,
21335        prgprop: *mut ENUMPROPERTY,
21336        ffreearray: u8,
21337    ) -> windows_core::Result<()>;
21338    fn FreeThumbprint(
21339        &self,
21340        pthumbprint: *mut windows::Win32::System::Com::BLOB,
21341    ) -> windows_core::Result<()>;
21342    fn PropVariantClear(
21343        &self,
21344        pprop: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21345    ) -> windows_core::Result<()>;
21346}
21347impl IMimeAllocator_Vtbl {
21348    pub const fn new<Identity: IMimeAllocator_Impl, const OFFSET: isize>() -> Self {
21349        unsafe extern "system" fn FreeParamInfoArray<
21350            Identity: IMimeAllocator_Impl,
21351            const OFFSET: isize,
21352        >(
21353            this: *mut core::ffi::c_void,
21354            cparams: u32,
21355            prgparam: *mut MIMEPARAMINFO,
21356            ffreearray: u8,
21357        ) -> windows_core::HRESULT {
21358            unsafe {
21359                let this: &Identity =
21360                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21361                IMimeAllocator_Impl::FreeParamInfoArray(
21362                    this,
21363                    core::mem::transmute_copy(&cparams),
21364                    core::mem::transmute_copy(&prgparam),
21365                    core::mem::transmute_copy(&ffreearray),
21366                )
21367                .into()
21368            }
21369        }
21370        unsafe extern "system" fn FreeAddressList<
21371            Identity: IMimeAllocator_Impl,
21372            const OFFSET: isize,
21373        >(
21374            this: *mut core::ffi::c_void,
21375            plist: *mut ADDRESSLIST,
21376        ) -> windows_core::HRESULT {
21377            unsafe {
21378                let this: &Identity =
21379                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21380                IMimeAllocator_Impl::FreeAddressList(this, core::mem::transmute_copy(&plist)).into()
21381            }
21382        }
21383        unsafe extern "system" fn FreeAddressProps<
21384            Identity: IMimeAllocator_Impl,
21385            const OFFSET: isize,
21386        >(
21387            this: *mut core::ffi::c_void,
21388            paddress: *mut ADDRESSPROPS,
21389        ) -> windows_core::HRESULT {
21390            unsafe {
21391                let this: &Identity =
21392                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21393                IMimeAllocator_Impl::FreeAddressProps(this, core::mem::transmute_copy(&paddress))
21394                    .into()
21395            }
21396        }
21397        unsafe extern "system" fn ReleaseObjects<
21398            Identity: IMimeAllocator_Impl,
21399            const OFFSET: isize,
21400        >(
21401            this: *mut core::ffi::c_void,
21402            cobjects: u32,
21403            prgpunknown: *mut *mut core::ffi::c_void,
21404            ffreearray: u8,
21405        ) -> windows_core::HRESULT {
21406            unsafe {
21407                let this: &Identity =
21408                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21409                IMimeAllocator_Impl::ReleaseObjects(
21410                    this,
21411                    core::mem::transmute_copy(&cobjects),
21412                    core::mem::transmute_copy(&prgpunknown),
21413                    core::mem::transmute_copy(&ffreearray),
21414                )
21415                .into()
21416            }
21417        }
21418        unsafe extern "system" fn FreeEnumHeaderRowArray<
21419            Identity: IMimeAllocator_Impl,
21420            const OFFSET: isize,
21421        >(
21422            this: *mut core::ffi::c_void,
21423            crows: u32,
21424            prgrow: *mut ENUMHEADERROW,
21425            ffreearray: u8,
21426        ) -> windows_core::HRESULT {
21427            unsafe {
21428                let this: &Identity =
21429                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21430                IMimeAllocator_Impl::FreeEnumHeaderRowArray(
21431                    this,
21432                    core::mem::transmute_copy(&crows),
21433                    core::mem::transmute_copy(&prgrow),
21434                    core::mem::transmute_copy(&ffreearray),
21435                )
21436                .into()
21437            }
21438        }
21439        unsafe extern "system" fn FreeEnumPropertyArray<
21440            Identity: IMimeAllocator_Impl,
21441            const OFFSET: isize,
21442        >(
21443            this: *mut core::ffi::c_void,
21444            cprops: u32,
21445            prgprop: *mut ENUMPROPERTY,
21446            ffreearray: u8,
21447        ) -> windows_core::HRESULT {
21448            unsafe {
21449                let this: &Identity =
21450                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21451                IMimeAllocator_Impl::FreeEnumPropertyArray(
21452                    this,
21453                    core::mem::transmute_copy(&cprops),
21454                    core::mem::transmute_copy(&prgprop),
21455                    core::mem::transmute_copy(&ffreearray),
21456                )
21457                .into()
21458            }
21459        }
21460        unsafe extern "system" fn FreeThumbprint<
21461            Identity: IMimeAllocator_Impl,
21462            const OFFSET: isize,
21463        >(
21464            this: *mut core::ffi::c_void,
21465            pthumbprint: *mut windows::Win32::System::Com::BLOB,
21466        ) -> windows_core::HRESULT {
21467            unsafe {
21468                let this: &Identity =
21469                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21470                IMimeAllocator_Impl::FreeThumbprint(this, core::mem::transmute_copy(&pthumbprint))
21471                    .into()
21472            }
21473        }
21474        unsafe extern "system" fn PropVariantClear<
21475            Identity: IMimeAllocator_Impl,
21476            const OFFSET: isize,
21477        >(
21478            this: *mut core::ffi::c_void,
21479            pprop: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21480        ) -> windows_core::HRESULT {
21481            unsafe {
21482                let this: &Identity =
21483                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21484                IMimeAllocator_Impl::PropVariantClear(this, core::mem::transmute_copy(&pprop))
21485                    .into()
21486            }
21487        }
21488        Self {
21489            base__: windows::Win32::System::Com::IMalloc_Vtbl::new::<Identity, OFFSET>(),
21490            FreeParamInfoArray: FreeParamInfoArray::<Identity, OFFSET>,
21491            FreeAddressList: FreeAddressList::<Identity, OFFSET>,
21492            FreeAddressProps: FreeAddressProps::<Identity, OFFSET>,
21493            ReleaseObjects: ReleaseObjects::<Identity, OFFSET>,
21494            FreeEnumHeaderRowArray: FreeEnumHeaderRowArray::<Identity, OFFSET>,
21495            FreeEnumPropertyArray: FreeEnumPropertyArray::<Identity, OFFSET>,
21496            FreeThumbprint: FreeThumbprint::<Identity, OFFSET>,
21497            PropVariantClear: PropVariantClear::<Identity, OFFSET>,
21498        }
21499    }
21500    pub fn matches(iid: &windows_core::GUID) -> bool {
21501        iid == &<IMimeAllocator as windows_core::Interface>::IID
21502            || iid == &<windows::Win32::System::Com::IMalloc as windows_core::Interface>::IID
21503    }
21504}
21505impl windows_core::RuntimeName for IMimeAllocator {}
21506windows_core::imp::define_interface!(
21507    IMimeBody,
21508    IMimeBody_Vtbl,
21509    0xc558834c_7f86_11d0_8252_00c04fd85ab4
21510);
21511impl core::ops::Deref for IMimeBody {
21512    type Target = IMimePropertySet;
21513    fn deref(&self) -> &Self::Target {
21514        unsafe { core::mem::transmute(self) }
21515    }
21516}
21517windows_core::imp::interface_hierarchy!(
21518    IMimeBody,
21519    windows_core::IUnknown,
21520    windows::Win32::System::Com::IPersist,
21521    windows::Win32::System::Com::IPersistStreamInit,
21522    IMimePropertySet
21523);
21524impl IMimeBody {
21525    pub unsafe fn IsType(&self, bodytype: IMSGBODYTYPE) -> windows_core::Result<()> {
21526        unsafe {
21527            (windows_core::Interface::vtable(self).IsType)(
21528                windows_core::Interface::as_raw(self),
21529                bodytype,
21530            )
21531            .ok()
21532        }
21533    }
21534    pub unsafe fn SetDisplayName<P0>(&self, pszdisplay: P0) -> windows_core::Result<()>
21535    where
21536        P0: windows_core::Param<windows_core::PCSTR>,
21537    {
21538        unsafe {
21539            (windows_core::Interface::vtable(self).SetDisplayName)(
21540                windows_core::Interface::as_raw(self),
21541                pszdisplay.param().abi(),
21542            )
21543            .ok()
21544        }
21545    }
21546    pub unsafe fn GetDisplayName(
21547        &self,
21548        ppszdisplay: *mut windows_core::PSTR,
21549    ) -> windows_core::Result<()> {
21550        unsafe {
21551            (windows_core::Interface::vtable(self).GetDisplayName)(
21552                windows_core::Interface::as_raw(self),
21553                ppszdisplay as _,
21554            )
21555            .ok()
21556        }
21557    }
21558    pub unsafe fn GetOffsets(&self, poffsets: *mut BODYOFFSETS) -> windows_core::Result<()> {
21559        unsafe {
21560            (windows_core::Interface::vtable(self).GetOffsets)(
21561                windows_core::Interface::as_raw(self),
21562                poffsets as _,
21563            )
21564            .ok()
21565        }
21566    }
21567    pub unsafe fn GetCurrentEncoding(
21568        &self,
21569        pietencoding: *mut ENCODINGTYPE,
21570    ) -> windows_core::Result<()> {
21571        unsafe {
21572            (windows_core::Interface::vtable(self).GetCurrentEncoding)(
21573                windows_core::Interface::as_raw(self),
21574                pietencoding as _,
21575            )
21576            .ok()
21577        }
21578    }
21579    pub unsafe fn SetCurrentEncoding(&self, ietencoding: ENCODINGTYPE) -> windows_core::Result<()> {
21580        unsafe {
21581            (windows_core::Interface::vtable(self).SetCurrentEncoding)(
21582                windows_core::Interface::as_raw(self),
21583                ietencoding,
21584            )
21585            .ok()
21586        }
21587    }
21588    pub unsafe fn GetEstimatedSize(
21589        &self,
21590        ietencoding: ENCODINGTYPE,
21591        pcbsize: *mut u32,
21592    ) -> windows_core::Result<()> {
21593        unsafe {
21594            (windows_core::Interface::vtable(self).GetEstimatedSize)(
21595                windows_core::Interface::as_raw(self),
21596                ietencoding,
21597                pcbsize as _,
21598            )
21599            .ok()
21600        }
21601    }
21602    pub unsafe fn GetDataHere<P1>(
21603        &self,
21604        ietencoding: ENCODINGTYPE,
21605        pstream: P1,
21606    ) -> windows_core::Result<()>
21607    where
21608        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
21609    {
21610        unsafe {
21611            (windows_core::Interface::vtable(self).GetDataHere)(
21612                windows_core::Interface::as_raw(self),
21613                ietencoding,
21614                pstream.param().abi(),
21615            )
21616            .ok()
21617        }
21618    }
21619    pub unsafe fn GetData(
21620        &self,
21621        ietencoding: ENCODINGTYPE,
21622    ) -> windows_core::Result<windows::Win32::System::Com::IStream> {
21623        unsafe {
21624            let mut result__ = core::mem::zeroed();
21625            (windows_core::Interface::vtable(self).GetData)(
21626                windows_core::Interface::as_raw(self),
21627                ietencoding,
21628                &mut result__,
21629            )
21630            .and_then(|| windows_core::Type::from_abi(result__))
21631        }
21632    }
21633    pub unsafe fn SetData<P1, P2>(
21634        &self,
21635        ietencoding: ENCODINGTYPE,
21636        pszpritype: P1,
21637        pszsubtype: P2,
21638        riid: *const windows_core::GUID,
21639        pvobject: *mut core::ffi::c_void,
21640    ) -> windows_core::Result<()>
21641    where
21642        P1: windows_core::Param<windows_core::PCSTR>,
21643        P2: windows_core::Param<windows_core::PCSTR>,
21644    {
21645        unsafe {
21646            (windows_core::Interface::vtable(self).SetData)(
21647                windows_core::Interface::as_raw(self),
21648                ietencoding,
21649                pszpritype.param().abi(),
21650                pszsubtype.param().abi(),
21651                riid,
21652                pvobject as _,
21653            )
21654            .ok()
21655        }
21656    }
21657    pub unsafe fn EmptyData(&self) -> windows_core::Result<()> {
21658        unsafe {
21659            (windows_core::Interface::vtable(self).EmptyData)(windows_core::Interface::as_raw(self))
21660                .ok()
21661        }
21662    }
21663    pub unsafe fn CopyTo<P0>(&self, pbody: P0) -> windows_core::Result<()>
21664    where
21665        P0: windows_core::Param<IMimeBody>,
21666    {
21667        unsafe {
21668            (windows_core::Interface::vtable(self).CopyTo)(
21669                windows_core::Interface::as_raw(self),
21670                pbody.param().abi(),
21671            )
21672            .ok()
21673        }
21674    }
21675    pub unsafe fn GetTransmitInfo(
21676        &self,
21677        ptransmitinfo: *mut TRANSMITINFO,
21678    ) -> windows_core::Result<()> {
21679        unsafe {
21680            (windows_core::Interface::vtable(self).GetTransmitInfo)(
21681                windows_core::Interface::as_raw(self),
21682                ptransmitinfo as _,
21683            )
21684            .ok()
21685        }
21686    }
21687    pub unsafe fn SaveToFile<P1>(
21688        &self,
21689        ietencoding: ENCODINGTYPE,
21690        pszfilepath: P1,
21691    ) -> windows_core::Result<()>
21692    where
21693        P1: windows_core::Param<windows_core::PCSTR>,
21694    {
21695        unsafe {
21696            (windows_core::Interface::vtable(self).SaveToFile)(
21697                windows_core::Interface::as_raw(self),
21698                ietencoding,
21699                pszfilepath.param().abi(),
21700            )
21701            .ok()
21702        }
21703    }
21704    pub unsafe fn GetHandle(&self, phbody: *mut *mut HBODY__) -> windows_core::Result<()> {
21705        unsafe {
21706            (windows_core::Interface::vtable(self).GetHandle)(
21707                windows_core::Interface::as_raw(self),
21708                phbody as _,
21709            )
21710            .ok()
21711        }
21712    }
21713}
21714#[repr(C)]
21715pub struct IMimeBody_Vtbl {
21716    pub base__: IMimePropertySet_Vtbl,
21717    pub IsType:
21718        unsafe extern "system" fn(*mut core::ffi::c_void, IMSGBODYTYPE) -> windows_core::HRESULT,
21719    pub SetDisplayName: unsafe extern "system" fn(
21720        *mut core::ffi::c_void,
21721        windows_core::PCSTR,
21722    ) -> windows_core::HRESULT,
21723    pub GetDisplayName: unsafe extern "system" fn(
21724        *mut core::ffi::c_void,
21725        *mut windows_core::PSTR,
21726    ) -> windows_core::HRESULT,
21727    pub GetOffsets: unsafe extern "system" fn(
21728        *mut core::ffi::c_void,
21729        *mut BODYOFFSETS,
21730    ) -> windows_core::HRESULT,
21731    pub GetCurrentEncoding: unsafe extern "system" fn(
21732        *mut core::ffi::c_void,
21733        *mut ENCODINGTYPE,
21734    ) -> windows_core::HRESULT,
21735    pub SetCurrentEncoding:
21736        unsafe extern "system" fn(*mut core::ffi::c_void, ENCODINGTYPE) -> windows_core::HRESULT,
21737    pub GetEstimatedSize: unsafe extern "system" fn(
21738        *mut core::ffi::c_void,
21739        ENCODINGTYPE,
21740        *mut u32,
21741    ) -> windows_core::HRESULT,
21742    pub GetDataHere: unsafe extern "system" fn(
21743        *mut core::ffi::c_void,
21744        ENCODINGTYPE,
21745        *mut core::ffi::c_void,
21746    ) -> windows_core::HRESULT,
21747    pub GetData: unsafe extern "system" fn(
21748        *mut core::ffi::c_void,
21749        ENCODINGTYPE,
21750        *mut *mut core::ffi::c_void,
21751    ) -> windows_core::HRESULT,
21752    pub SetData: unsafe extern "system" fn(
21753        *mut core::ffi::c_void,
21754        ENCODINGTYPE,
21755        windows_core::PCSTR,
21756        windows_core::PCSTR,
21757        *const windows_core::GUID,
21758        *mut core::ffi::c_void,
21759    ) -> windows_core::HRESULT,
21760    pub EmptyData: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
21761    pub CopyTo: unsafe extern "system" fn(
21762        *mut core::ffi::c_void,
21763        *mut core::ffi::c_void,
21764    ) -> windows_core::HRESULT,
21765    pub GetTransmitInfo: unsafe extern "system" fn(
21766        *mut core::ffi::c_void,
21767        *mut TRANSMITINFO,
21768    ) -> windows_core::HRESULT,
21769    pub SaveToFile: unsafe extern "system" fn(
21770        *mut core::ffi::c_void,
21771        ENCODINGTYPE,
21772        windows_core::PCSTR,
21773    ) -> windows_core::HRESULT,
21774    pub GetHandle: unsafe extern "system" fn(
21775        *mut core::ffi::c_void,
21776        *mut *mut HBODY__,
21777    ) -> windows_core::HRESULT,
21778}
21779pub trait IMimeBody_Impl: IMimePropertySet_Impl {
21780    fn IsType(&self, bodytype: IMSGBODYTYPE) -> windows_core::Result<()>;
21781    fn SetDisplayName(&self, pszdisplay: &windows_core::PCSTR) -> windows_core::Result<()>;
21782    fn GetDisplayName(&self, ppszdisplay: *mut windows_core::PSTR) -> windows_core::Result<()>;
21783    fn GetOffsets(&self, poffsets: *mut BODYOFFSETS) -> windows_core::Result<()>;
21784    fn GetCurrentEncoding(&self, pietencoding: *mut ENCODINGTYPE) -> windows_core::Result<()>;
21785    fn SetCurrentEncoding(&self, ietencoding: ENCODINGTYPE) -> windows_core::Result<()>;
21786    fn GetEstimatedSize(
21787        &self,
21788        ietencoding: ENCODINGTYPE,
21789        pcbsize: *mut u32,
21790    ) -> windows_core::Result<()>;
21791    fn GetDataHere(
21792        &self,
21793        ietencoding: ENCODINGTYPE,
21794        pstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
21795    ) -> windows_core::Result<()>;
21796    fn GetData(
21797        &self,
21798        ietencoding: ENCODINGTYPE,
21799    ) -> windows_core::Result<windows::Win32::System::Com::IStream>;
21800    fn SetData(
21801        &self,
21802        ietencoding: ENCODINGTYPE,
21803        pszpritype: &windows_core::PCSTR,
21804        pszsubtype: &windows_core::PCSTR,
21805        riid: *const windows_core::GUID,
21806        pvobject: *mut core::ffi::c_void,
21807    ) -> windows_core::Result<()>;
21808    fn EmptyData(&self) -> windows_core::Result<()>;
21809    fn CopyTo(&self, pbody: windows_core::Ref<'_, IMimeBody>) -> windows_core::Result<()>;
21810    fn GetTransmitInfo(&self, ptransmitinfo: *mut TRANSMITINFO) -> windows_core::Result<()>;
21811    fn SaveToFile(
21812        &self,
21813        ietencoding: ENCODINGTYPE,
21814        pszfilepath: &windows_core::PCSTR,
21815    ) -> windows_core::Result<()>;
21816    fn GetHandle(&self, phbody: *mut *mut HBODY__) -> windows_core::Result<()>;
21817}
21818impl IMimeBody_Vtbl {
21819    pub const fn new<Identity: IMimeBody_Impl, const OFFSET: isize>() -> Self {
21820        unsafe extern "system" fn IsType<Identity: IMimeBody_Impl, const OFFSET: isize>(
21821            this: *mut core::ffi::c_void,
21822            bodytype: IMSGBODYTYPE,
21823        ) -> windows_core::HRESULT {
21824            unsafe {
21825                let this: &Identity =
21826                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21827                IMimeBody_Impl::IsType(this, core::mem::transmute_copy(&bodytype)).into()
21828            }
21829        }
21830        unsafe extern "system" fn SetDisplayName<Identity: IMimeBody_Impl, const OFFSET: isize>(
21831            this: *mut core::ffi::c_void,
21832            pszdisplay: windows_core::PCSTR,
21833        ) -> windows_core::HRESULT {
21834            unsafe {
21835                let this: &Identity =
21836                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21837                IMimeBody_Impl::SetDisplayName(this, core::mem::transmute(&pszdisplay)).into()
21838            }
21839        }
21840        unsafe extern "system" fn GetDisplayName<Identity: IMimeBody_Impl, const OFFSET: isize>(
21841            this: *mut core::ffi::c_void,
21842            ppszdisplay: *mut windows_core::PSTR,
21843        ) -> windows_core::HRESULT {
21844            unsafe {
21845                let this: &Identity =
21846                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21847                IMimeBody_Impl::GetDisplayName(this, core::mem::transmute_copy(&ppszdisplay)).into()
21848            }
21849        }
21850        unsafe extern "system" fn GetOffsets<Identity: IMimeBody_Impl, const OFFSET: isize>(
21851            this: *mut core::ffi::c_void,
21852            poffsets: *mut BODYOFFSETS,
21853        ) -> windows_core::HRESULT {
21854            unsafe {
21855                let this: &Identity =
21856                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21857                IMimeBody_Impl::GetOffsets(this, core::mem::transmute_copy(&poffsets)).into()
21858            }
21859        }
21860        unsafe extern "system" fn GetCurrentEncoding<
21861            Identity: IMimeBody_Impl,
21862            const OFFSET: isize,
21863        >(
21864            this: *mut core::ffi::c_void,
21865            pietencoding: *mut ENCODINGTYPE,
21866        ) -> windows_core::HRESULT {
21867            unsafe {
21868                let this: &Identity =
21869                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21870                IMimeBody_Impl::GetCurrentEncoding(this, core::mem::transmute_copy(&pietencoding))
21871                    .into()
21872            }
21873        }
21874        unsafe extern "system" fn SetCurrentEncoding<
21875            Identity: IMimeBody_Impl,
21876            const OFFSET: isize,
21877        >(
21878            this: *mut core::ffi::c_void,
21879            ietencoding: ENCODINGTYPE,
21880        ) -> windows_core::HRESULT {
21881            unsafe {
21882                let this: &Identity =
21883                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21884                IMimeBody_Impl::SetCurrentEncoding(this, core::mem::transmute_copy(&ietencoding))
21885                    .into()
21886            }
21887        }
21888        unsafe extern "system" fn GetEstimatedSize<
21889            Identity: IMimeBody_Impl,
21890            const OFFSET: isize,
21891        >(
21892            this: *mut core::ffi::c_void,
21893            ietencoding: ENCODINGTYPE,
21894            pcbsize: *mut u32,
21895        ) -> windows_core::HRESULT {
21896            unsafe {
21897                let this: &Identity =
21898                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21899                IMimeBody_Impl::GetEstimatedSize(
21900                    this,
21901                    core::mem::transmute_copy(&ietencoding),
21902                    core::mem::transmute_copy(&pcbsize),
21903                )
21904                .into()
21905            }
21906        }
21907        unsafe extern "system" fn GetDataHere<Identity: IMimeBody_Impl, const OFFSET: isize>(
21908            this: *mut core::ffi::c_void,
21909            ietencoding: ENCODINGTYPE,
21910            pstream: *mut core::ffi::c_void,
21911        ) -> windows_core::HRESULT {
21912            unsafe {
21913                let this: &Identity =
21914                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21915                IMimeBody_Impl::GetDataHere(
21916                    this,
21917                    core::mem::transmute_copy(&ietencoding),
21918                    core::mem::transmute_copy(&pstream),
21919                )
21920                .into()
21921            }
21922        }
21923        unsafe extern "system" fn GetData<Identity: IMimeBody_Impl, const OFFSET: isize>(
21924            this: *mut core::ffi::c_void,
21925            ietencoding: ENCODINGTYPE,
21926            ppstream: *mut *mut core::ffi::c_void,
21927        ) -> windows_core::HRESULT {
21928            unsafe {
21929                let this: &Identity =
21930                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21931                match IMimeBody_Impl::GetData(this, core::mem::transmute_copy(&ietencoding)) {
21932                    Ok(ok__) => {
21933                        ppstream.write(core::mem::transmute(ok__));
21934                        windows_core::HRESULT(0)
21935                    }
21936                    Err(err) => err.into(),
21937                }
21938            }
21939        }
21940        unsafe extern "system" fn SetData<Identity: IMimeBody_Impl, const OFFSET: isize>(
21941            this: *mut core::ffi::c_void,
21942            ietencoding: ENCODINGTYPE,
21943            pszpritype: windows_core::PCSTR,
21944            pszsubtype: windows_core::PCSTR,
21945            riid: *const windows_core::GUID,
21946            pvobject: *mut core::ffi::c_void,
21947        ) -> windows_core::HRESULT {
21948            unsafe {
21949                let this: &Identity =
21950                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21951                IMimeBody_Impl::SetData(
21952                    this,
21953                    core::mem::transmute_copy(&ietencoding),
21954                    core::mem::transmute(&pszpritype),
21955                    core::mem::transmute(&pszsubtype),
21956                    core::mem::transmute_copy(&riid),
21957                    core::mem::transmute_copy(&pvobject),
21958                )
21959                .into()
21960            }
21961        }
21962        unsafe extern "system" fn EmptyData<Identity: IMimeBody_Impl, const OFFSET: isize>(
21963            this: *mut core::ffi::c_void,
21964        ) -> windows_core::HRESULT {
21965            unsafe {
21966                let this: &Identity =
21967                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21968                IMimeBody_Impl::EmptyData(this).into()
21969            }
21970        }
21971        unsafe extern "system" fn CopyTo<Identity: IMimeBody_Impl, const OFFSET: isize>(
21972            this: *mut core::ffi::c_void,
21973            pbody: *mut core::ffi::c_void,
21974        ) -> windows_core::HRESULT {
21975            unsafe {
21976                let this: &Identity =
21977                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21978                IMimeBody_Impl::CopyTo(this, core::mem::transmute_copy(&pbody)).into()
21979            }
21980        }
21981        unsafe extern "system" fn GetTransmitInfo<Identity: IMimeBody_Impl, const OFFSET: isize>(
21982            this: *mut core::ffi::c_void,
21983            ptransmitinfo: *mut TRANSMITINFO,
21984        ) -> windows_core::HRESULT {
21985            unsafe {
21986                let this: &Identity =
21987                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21988                IMimeBody_Impl::GetTransmitInfo(this, core::mem::transmute_copy(&ptransmitinfo))
21989                    .into()
21990            }
21991        }
21992        unsafe extern "system" fn SaveToFile<Identity: IMimeBody_Impl, const OFFSET: isize>(
21993            this: *mut core::ffi::c_void,
21994            ietencoding: ENCODINGTYPE,
21995            pszfilepath: windows_core::PCSTR,
21996        ) -> windows_core::HRESULT {
21997            unsafe {
21998                let this: &Identity =
21999                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22000                IMimeBody_Impl::SaveToFile(
22001                    this,
22002                    core::mem::transmute_copy(&ietencoding),
22003                    core::mem::transmute(&pszfilepath),
22004                )
22005                .into()
22006            }
22007        }
22008        unsafe extern "system" fn GetHandle<Identity: IMimeBody_Impl, const OFFSET: isize>(
22009            this: *mut core::ffi::c_void,
22010            phbody: *mut *mut HBODY__,
22011        ) -> windows_core::HRESULT {
22012            unsafe {
22013                let this: &Identity =
22014                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22015                IMimeBody_Impl::GetHandle(this, core::mem::transmute_copy(&phbody)).into()
22016            }
22017        }
22018        Self {
22019            base__: IMimePropertySet_Vtbl::new::<Identity, OFFSET>(),
22020            IsType: IsType::<Identity, OFFSET>,
22021            SetDisplayName: SetDisplayName::<Identity, OFFSET>,
22022            GetDisplayName: GetDisplayName::<Identity, OFFSET>,
22023            GetOffsets: GetOffsets::<Identity, OFFSET>,
22024            GetCurrentEncoding: GetCurrentEncoding::<Identity, OFFSET>,
22025            SetCurrentEncoding: SetCurrentEncoding::<Identity, OFFSET>,
22026            GetEstimatedSize: GetEstimatedSize::<Identity, OFFSET>,
22027            GetDataHere: GetDataHere::<Identity, OFFSET>,
22028            GetData: GetData::<Identity, OFFSET>,
22029            SetData: SetData::<Identity, OFFSET>,
22030            EmptyData: EmptyData::<Identity, OFFSET>,
22031            CopyTo: CopyTo::<Identity, OFFSET>,
22032            GetTransmitInfo: GetTransmitInfo::<Identity, OFFSET>,
22033            SaveToFile: SaveToFile::<Identity, OFFSET>,
22034            GetHandle: GetHandle::<Identity, OFFSET>,
22035        }
22036    }
22037    pub fn matches(iid: &windows_core::GUID) -> bool {
22038        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
22039    }
22040}
22041impl windows_core::RuntimeName for IMimeBody {}
22042windows_core::imp::define_interface!(
22043    IMimeEditTag,
22044    IMimeEditTag_Vtbl,
22045    0x70183210_7b36_11d2_8c12_00c04fa31009
22046);
22047windows_core::imp::interface_hierarchy!(IMimeEditTag, windows_core::IUnknown);
22048impl IMimeEditTag {
22049    pub unsafe fn GetSrc(&self, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()> {
22050        unsafe {
22051            (windows_core::Interface::vtable(self).GetSrc)(
22052                windows_core::Interface::as_raw(self),
22053                core::mem::transmute(pbstr),
22054            )
22055            .ok()
22056        }
22057    }
22058    pub unsafe fn SetSrc(&self, bstr: &windows_core::BSTR) -> windows_core::Result<()> {
22059        unsafe {
22060            (windows_core::Interface::vtable(self).SetSrc)(
22061                windows_core::Interface::as_raw(self),
22062                core::mem::transmute_copy(bstr),
22063            )
22064            .ok()
22065        }
22066    }
22067    pub unsafe fn GetDest(&self, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()> {
22068        unsafe {
22069            (windows_core::Interface::vtable(self).GetDest)(
22070                windows_core::Interface::as_raw(self),
22071                core::mem::transmute(pbstr),
22072            )
22073            .ok()
22074        }
22075    }
22076    pub unsafe fn SetDest(&self, bstr: &windows_core::BSTR) -> windows_core::Result<()> {
22077        unsafe {
22078            (windows_core::Interface::vtable(self).SetDest)(
22079                windows_core::Interface::as_raw(self),
22080                core::mem::transmute_copy(bstr),
22081            )
22082            .ok()
22083        }
22084    }
22085    pub unsafe fn OnPreSave(&self) -> windows_core::Result<()> {
22086        unsafe {
22087            (windows_core::Interface::vtable(self).OnPreSave)(windows_core::Interface::as_raw(self))
22088                .ok()
22089        }
22090    }
22091    pub unsafe fn OnPostSave(&self) -> windows_core::Result<()> {
22092        unsafe {
22093            (windows_core::Interface::vtable(self).OnPostSave)(windows_core::Interface::as_raw(
22094                self,
22095            ))
22096            .ok()
22097        }
22098    }
22099    pub unsafe fn CanPackage(&self) -> windows_core::Result<()> {
22100        unsafe {
22101            (windows_core::Interface::vtable(self).CanPackage)(windows_core::Interface::as_raw(
22102                self,
22103            ))
22104            .ok()
22105        }
22106    }
22107    pub unsafe fn IsValidMimeType<P0>(&self, psztypew: P0) -> windows_core::Result<()>
22108    where
22109        P0: windows_core::Param<windows_core::PCWSTR>,
22110    {
22111        unsafe {
22112            (windows_core::Interface::vtable(self).IsValidMimeType)(
22113                windows_core::Interface::as_raw(self),
22114                psztypew.param().abi(),
22115            )
22116            .ok()
22117        }
22118    }
22119}
22120#[repr(C)]
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)]
22308pub struct IMimeEditTagCollection_Vtbl {
22309    pub base__: windows_core::IUnknown_Vtbl,
22310    pub Init: unsafe extern "system" fn(
22311        *mut core::ffi::c_void,
22312        *mut core::ffi::c_void,
22313    ) -> windows_core::HRESULT,
22314    pub Next: unsafe extern "system" fn(
22315        *mut core::ffi::c_void,
22316        u32,
22317        *mut *mut core::ffi::c_void,
22318        *mut u32,
22319    ) -> windows_core::HRESULT,
22320    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22321    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22322}
22323pub trait IMimeEditTagCollection_Impl: windows_core::IUnknownImpl {
22324    fn Init(
22325        &self,
22326        phtmldoc: windows_core::Ref<'_, windows_core::IUnknown>,
22327    ) -> windows_core::Result<()>;
22328    fn Next(
22329        &self,
22330        cfetch: u32,
22331        pptag: windows_core::OutRef<'_, IMimeEditTag>,
22332        pcfetched: *mut u32,
22333    ) -> windows_core::Result<()>;
22334    fn Reset(&self) -> windows_core::Result<()>;
22335    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22336}
22337impl IMimeEditTagCollection_Vtbl {
22338    pub const fn new<Identity: IMimeEditTagCollection_Impl, const OFFSET: isize>() -> Self {
22339        unsafe extern "system" fn Init<
22340            Identity: IMimeEditTagCollection_Impl,
22341            const OFFSET: isize,
22342        >(
22343            this: *mut core::ffi::c_void,
22344            phtmldoc: *mut core::ffi::c_void,
22345        ) -> windows_core::HRESULT {
22346            unsafe {
22347                let this: &Identity =
22348                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22349                IMimeEditTagCollection_Impl::Init(this, core::mem::transmute_copy(&phtmldoc)).into()
22350            }
22351        }
22352        unsafe extern "system" fn Next<
22353            Identity: IMimeEditTagCollection_Impl,
22354            const OFFSET: isize,
22355        >(
22356            this: *mut core::ffi::c_void,
22357            cfetch: u32,
22358            pptag: *mut *mut core::ffi::c_void,
22359            pcfetched: *mut u32,
22360        ) -> windows_core::HRESULT {
22361            unsafe {
22362                let this: &Identity =
22363                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22364                IMimeEditTagCollection_Impl::Next(
22365                    this,
22366                    core::mem::transmute_copy(&cfetch),
22367                    core::mem::transmute_copy(&pptag),
22368                    core::mem::transmute_copy(&pcfetched),
22369                )
22370                .into()
22371            }
22372        }
22373        unsafe extern "system" fn Reset<
22374            Identity: IMimeEditTagCollection_Impl,
22375            const OFFSET: isize,
22376        >(
22377            this: *mut core::ffi::c_void,
22378        ) -> windows_core::HRESULT {
22379            unsafe {
22380                let this: &Identity =
22381                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22382                IMimeEditTagCollection_Impl::Reset(this).into()
22383            }
22384        }
22385        unsafe extern "system" fn Count<
22386            Identity: IMimeEditTagCollection_Impl,
22387            const OFFSET: isize,
22388        >(
22389            this: *mut core::ffi::c_void,
22390            pcitems: *mut u32,
22391        ) -> windows_core::HRESULT {
22392            unsafe {
22393                let this: &Identity =
22394                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22395                IMimeEditTagCollection_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22396            }
22397        }
22398        Self {
22399            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22400            Init: Init::<Identity, OFFSET>,
22401            Next: Next::<Identity, OFFSET>,
22402            Reset: Reset::<Identity, OFFSET>,
22403            Count: Count::<Identity, OFFSET>,
22404        }
22405    }
22406    pub fn matches(iid: &windows_core::GUID) -> bool {
22407        iid == &<IMimeEditTagCollection as windows_core::Interface>::IID
22408    }
22409}
22410impl windows_core::RuntimeName for IMimeEditTagCollection {}
22411windows_core::imp::define_interface!(
22412    IMimeEnumAddressTypes,
22413    IMimeEnumAddressTypes_Vtbl,
22414    0xc5588354_7f86_11d0_8252_00c04fd85ab4
22415);
22416windows_core::imp::interface_hierarchy!(IMimeEnumAddressTypes, windows_core::IUnknown);
22417impl IMimeEnumAddressTypes {
22418    pub unsafe fn Next(
22419        &self,
22420        cfetch: u32,
22421        prgadr: *mut ADDRESSPROPS,
22422        pcfetched: *mut u32,
22423    ) -> windows_core::Result<()> {
22424        unsafe {
22425            (windows_core::Interface::vtable(self).Next)(
22426                windows_core::Interface::as_raw(self),
22427                cfetch,
22428                prgadr as _,
22429                pcfetched as _,
22430            )
22431            .ok()
22432        }
22433    }
22434    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22435        unsafe {
22436            (windows_core::Interface::vtable(self).Skip)(
22437                windows_core::Interface::as_raw(self),
22438                citems,
22439            )
22440            .ok()
22441        }
22442    }
22443    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22444        unsafe {
22445            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22446                .ok()
22447        }
22448    }
22449    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumAddressTypes> {
22450        unsafe {
22451            let mut result__ = core::mem::zeroed();
22452            (windows_core::Interface::vtable(self).Clone)(
22453                windows_core::Interface::as_raw(self),
22454                &mut result__,
22455            )
22456            .and_then(|| windows_core::Type::from_abi(result__))
22457        }
22458    }
22459    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22460        unsafe {
22461            (windows_core::Interface::vtable(self).Count)(
22462                windows_core::Interface::as_raw(self),
22463                pcitems as _,
22464            )
22465            .ok()
22466        }
22467    }
22468}
22469#[repr(C)]
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)]
22651pub struct IMimeEnumHeaderRows_Vtbl {
22652    pub base__: windows_core::IUnknown_Vtbl,
22653    pub Next: unsafe extern "system" fn(
22654        *mut core::ffi::c_void,
22655        u32,
22656        *mut ENUMHEADERROW,
22657        *mut u32,
22658    ) -> windows_core::HRESULT,
22659    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
22660    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22661    pub Clone: unsafe extern "system" fn(
22662        *mut core::ffi::c_void,
22663        *mut *mut core::ffi::c_void,
22664    ) -> windows_core::HRESULT,
22665    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22666}
22667pub trait IMimeEnumHeaderRows_Impl: windows_core::IUnknownImpl {
22668    fn Next(
22669        &self,
22670        cfetch: u32,
22671        prgrow: *mut ENUMHEADERROW,
22672        pcfetched: *mut u32,
22673    ) -> windows_core::Result<()>;
22674    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
22675    fn Reset(&self) -> windows_core::Result<()>;
22676    fn Clone(&self) -> windows_core::Result<IMimeEnumHeaderRows>;
22677    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22678}
22679impl IMimeEnumHeaderRows_Vtbl {
22680    pub const fn new<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>() -> Self {
22681        unsafe extern "system" fn Next<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22682            this: *mut core::ffi::c_void,
22683            cfetch: u32,
22684            prgrow: *mut ENUMHEADERROW,
22685            pcfetched: *mut u32,
22686        ) -> windows_core::HRESULT {
22687            unsafe {
22688                let this: &Identity =
22689                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22690                IMimeEnumHeaderRows_Impl::Next(
22691                    this,
22692                    core::mem::transmute_copy(&cfetch),
22693                    core::mem::transmute_copy(&prgrow),
22694                    core::mem::transmute_copy(&pcfetched),
22695                )
22696                .into()
22697            }
22698        }
22699        unsafe extern "system" fn Skip<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22700            this: *mut core::ffi::c_void,
22701            citems: u32,
22702        ) -> windows_core::HRESULT {
22703            unsafe {
22704                let this: &Identity =
22705                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22706                IMimeEnumHeaderRows_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
22707            }
22708        }
22709        unsafe extern "system" fn Reset<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22710            this: *mut core::ffi::c_void,
22711        ) -> windows_core::HRESULT {
22712            unsafe {
22713                let this: &Identity =
22714                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22715                IMimeEnumHeaderRows_Impl::Reset(this).into()
22716            }
22717        }
22718        unsafe extern "system" fn Clone<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22719            this: *mut core::ffi::c_void,
22720            ppenum: *mut *mut core::ffi::c_void,
22721        ) -> windows_core::HRESULT {
22722            unsafe {
22723                let this: &Identity =
22724                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22725                match IMimeEnumHeaderRows_Impl::Clone(this) {
22726                    Ok(ok__) => {
22727                        ppenum.write(core::mem::transmute(ok__));
22728                        windows_core::HRESULT(0)
22729                    }
22730                    Err(err) => err.into(),
22731                }
22732            }
22733        }
22734        unsafe extern "system" fn Count<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22735            this: *mut core::ffi::c_void,
22736            pcitems: *mut u32,
22737        ) -> windows_core::HRESULT {
22738            unsafe {
22739                let this: &Identity =
22740                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22741                IMimeEnumHeaderRows_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22742            }
22743        }
22744        Self {
22745            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22746            Next: Next::<Identity, OFFSET>,
22747            Skip: Skip::<Identity, OFFSET>,
22748            Reset: Reset::<Identity, OFFSET>,
22749            Clone: Clone::<Identity, OFFSET>,
22750            Count: Count::<Identity, OFFSET>,
22751        }
22752    }
22753    pub fn matches(iid: &windows_core::GUID) -> bool {
22754        iid == &<IMimeEnumHeaderRows as windows_core::Interface>::IID
22755    }
22756}
22757impl windows_core::RuntimeName for IMimeEnumHeaderRows {}
22758windows_core::imp::define_interface!(
22759    IMimeEnumMessageParts,
22760    IMimeEnumMessageParts_Vtbl,
22761    0xc5588350_7f86_11d0_8252_00c04fd85ab4
22762);
22763windows_core::imp::interface_hierarchy!(IMimeEnumMessageParts, windows_core::IUnknown);
22764impl IMimeEnumMessageParts {
22765    pub unsafe fn Next(
22766        &self,
22767        cfetch: u32,
22768        prgpmessage: *mut Option<IMimeMessage>,
22769        pcfetched: *mut u32,
22770    ) -> windows_core::Result<()> {
22771        unsafe {
22772            (windows_core::Interface::vtable(self).Next)(
22773                windows_core::Interface::as_raw(self),
22774                cfetch,
22775                core::mem::transmute(prgpmessage),
22776                pcfetched as _,
22777            )
22778            .ok()
22779        }
22780    }
22781    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22782        unsafe {
22783            (windows_core::Interface::vtable(self).Skip)(
22784                windows_core::Interface::as_raw(self),
22785                citems,
22786            )
22787            .ok()
22788        }
22789    }
22790    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22791        unsafe {
22792            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22793                .ok()
22794        }
22795    }
22796    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumMessageParts> {
22797        unsafe {
22798            let mut result__ = core::mem::zeroed();
22799            (windows_core::Interface::vtable(self).Clone)(
22800                windows_core::Interface::as_raw(self),
22801                &mut result__,
22802            )
22803            .and_then(|| windows_core::Type::from_abi(result__))
22804        }
22805    }
22806    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22807        unsafe {
22808            (windows_core::Interface::vtable(self).Count)(
22809                windows_core::Interface::as_raw(self),
22810                pcitems as _,
22811            )
22812            .ok()
22813        }
22814    }
22815}
22816#[repr(C)]
22817pub struct IMimeEnumMessageParts_Vtbl {
22818    pub base__: windows_core::IUnknown_Vtbl,
22819    pub Next: unsafe extern "system" fn(
22820        *mut core::ffi::c_void,
22821        u32,
22822        *mut *mut core::ffi::c_void,
22823        *mut u32,
22824    ) -> windows_core::HRESULT,
22825    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
22826    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22827    pub Clone: unsafe extern "system" fn(
22828        *mut core::ffi::c_void,
22829        *mut *mut core::ffi::c_void,
22830    ) -> windows_core::HRESULT,
22831    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22832}
22833pub trait IMimeEnumMessageParts_Impl: windows_core::IUnknownImpl {
22834    fn Next(
22835        &self,
22836        cfetch: u32,
22837        prgpmessage: windows_core::OutRef<'_, IMimeMessage>,
22838        pcfetched: *mut u32,
22839    ) -> windows_core::Result<()>;
22840    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
22841    fn Reset(&self) -> windows_core::Result<()>;
22842    fn Clone(&self) -> windows_core::Result<IMimeEnumMessageParts>;
22843    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22844}
22845impl IMimeEnumMessageParts_Vtbl {
22846    pub const fn new<Identity: IMimeEnumMessageParts_Impl, const OFFSET: isize>() -> Self {
22847        unsafe extern "system" fn Next<
22848            Identity: IMimeEnumMessageParts_Impl,
22849            const OFFSET: isize,
22850        >(
22851            this: *mut core::ffi::c_void,
22852            cfetch: u32,
22853            prgpmessage: *mut *mut core::ffi::c_void,
22854            pcfetched: *mut u32,
22855        ) -> windows_core::HRESULT {
22856            unsafe {
22857                let this: &Identity =
22858                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22859                IMimeEnumMessageParts_Impl::Next(
22860                    this,
22861                    core::mem::transmute_copy(&cfetch),
22862                    core::mem::transmute_copy(&prgpmessage),
22863                    core::mem::transmute_copy(&pcfetched),
22864                )
22865                .into()
22866            }
22867        }
22868        unsafe extern "system" fn Skip<
22869            Identity: IMimeEnumMessageParts_Impl,
22870            const OFFSET: isize,
22871        >(
22872            this: *mut core::ffi::c_void,
22873            citems: u32,
22874        ) -> windows_core::HRESULT {
22875            unsafe {
22876                let this: &Identity =
22877                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22878                IMimeEnumMessageParts_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
22879            }
22880        }
22881        unsafe extern "system" fn Reset<
22882            Identity: IMimeEnumMessageParts_Impl,
22883            const OFFSET: isize,
22884        >(
22885            this: *mut core::ffi::c_void,
22886        ) -> windows_core::HRESULT {
22887            unsafe {
22888                let this: &Identity =
22889                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22890                IMimeEnumMessageParts_Impl::Reset(this).into()
22891            }
22892        }
22893        unsafe extern "system" fn Clone<
22894            Identity: IMimeEnumMessageParts_Impl,
22895            const OFFSET: isize,
22896        >(
22897            this: *mut core::ffi::c_void,
22898            ppenum: *mut *mut core::ffi::c_void,
22899        ) -> windows_core::HRESULT {
22900            unsafe {
22901                let this: &Identity =
22902                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22903                match IMimeEnumMessageParts_Impl::Clone(this) {
22904                    Ok(ok__) => {
22905                        ppenum.write(core::mem::transmute(ok__));
22906                        windows_core::HRESULT(0)
22907                    }
22908                    Err(err) => err.into(),
22909                }
22910            }
22911        }
22912        unsafe extern "system" fn Count<
22913            Identity: IMimeEnumMessageParts_Impl,
22914            const OFFSET: isize,
22915        >(
22916            this: *mut core::ffi::c_void,
22917            pcitems: *mut u32,
22918        ) -> windows_core::HRESULT {
22919            unsafe {
22920                let this: &Identity =
22921                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22922                IMimeEnumMessageParts_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22923            }
22924        }
22925        Self {
22926            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22927            Next: Next::<Identity, OFFSET>,
22928            Skip: Skip::<Identity, OFFSET>,
22929            Reset: Reset::<Identity, OFFSET>,
22930            Clone: Clone::<Identity, OFFSET>,
22931            Count: Count::<Identity, OFFSET>,
22932        }
22933    }
22934    pub fn matches(iid: &windows_core::GUID) -> bool {
22935        iid == &<IMimeEnumMessageParts as windows_core::Interface>::IID
22936    }
22937}
22938impl windows_core::RuntimeName for IMimeEnumMessageParts {}
22939windows_core::imp::define_interface!(
22940    IMimeEnumProperties,
22941    IMimeEnumProperties_Vtbl,
22942    0xfd853cee_7f86_11d0_8252_00c04fd85ab4
22943);
22944windows_core::imp::interface_hierarchy!(IMimeEnumProperties, windows_core::IUnknown);
22945impl IMimeEnumProperties {
22946    pub unsafe fn Next(
22947        &self,
22948        cfetch: u32,
22949        prgprop: *mut ENUMPROPERTY,
22950        pcfetched: *mut u32,
22951    ) -> windows_core::Result<()> {
22952        unsafe {
22953            (windows_core::Interface::vtable(self).Next)(
22954                windows_core::Interface::as_raw(self),
22955                cfetch,
22956                prgprop as _,
22957                pcfetched as _,
22958            )
22959            .ok()
22960        }
22961    }
22962    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22963        unsafe {
22964            (windows_core::Interface::vtable(self).Skip)(
22965                windows_core::Interface::as_raw(self),
22966                citems,
22967            )
22968            .ok()
22969        }
22970    }
22971    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22972        unsafe {
22973            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22974                .ok()
22975        }
22976    }
22977    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumProperties> {
22978        unsafe {
22979            let mut result__ = core::mem::zeroed();
22980            (windows_core::Interface::vtable(self).Clone)(
22981                windows_core::Interface::as_raw(self),
22982                &mut result__,
22983            )
22984            .and_then(|| windows_core::Type::from_abi(result__))
22985        }
22986    }
22987    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22988        unsafe {
22989            (windows_core::Interface::vtable(self).Count)(
22990                windows_core::Interface::as_raw(self),
22991                pcitems as _,
22992            )
22993            .ok()
22994        }
22995    }
22996}
22997#[repr(C)]
22998pub struct IMimeEnumProperties_Vtbl {
22999    pub base__: windows_core::IUnknown_Vtbl,
23000    pub Next: unsafe extern "system" fn(
23001        *mut core::ffi::c_void,
23002        u32,
23003        *mut ENUMPROPERTY,
23004        *mut u32,
23005    ) -> windows_core::HRESULT,
23006    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
23007    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
23008    pub Clone: unsafe extern "system" fn(
23009        *mut core::ffi::c_void,
23010        *mut *mut core::ffi::c_void,
23011    ) -> windows_core::HRESULT,
23012    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
23013}
23014pub trait IMimeEnumProperties_Impl: windows_core::IUnknownImpl {
23015    fn Next(
23016        &self,
23017        cfetch: u32,
23018        prgprop: *mut ENUMPROPERTY,
23019        pcfetched: *mut u32,
23020    ) -> windows_core::Result<()>;
23021    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
23022    fn Reset(&self) -> windows_core::Result<()>;
23023    fn Clone(&self) -> windows_core::Result<IMimeEnumProperties>;
23024    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
23025}
23026impl IMimeEnumProperties_Vtbl {
23027    pub const fn new<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>() -> Self {
23028        unsafe extern "system" fn Next<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23029            this: *mut core::ffi::c_void,
23030            cfetch: u32,
23031            prgprop: *mut ENUMPROPERTY,
23032            pcfetched: *mut u32,
23033        ) -> windows_core::HRESULT {
23034            unsafe {
23035                let this: &Identity =
23036                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23037                IMimeEnumProperties_Impl::Next(
23038                    this,
23039                    core::mem::transmute_copy(&cfetch),
23040                    core::mem::transmute_copy(&prgprop),
23041                    core::mem::transmute_copy(&pcfetched),
23042                )
23043                .into()
23044            }
23045        }
23046        unsafe extern "system" fn Skip<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23047            this: *mut core::ffi::c_void,
23048            citems: u32,
23049        ) -> windows_core::HRESULT {
23050            unsafe {
23051                let this: &Identity =
23052                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23053                IMimeEnumProperties_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
23054            }
23055        }
23056        unsafe extern "system" fn Reset<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23057            this: *mut core::ffi::c_void,
23058        ) -> windows_core::HRESULT {
23059            unsafe {
23060                let this: &Identity =
23061                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23062                IMimeEnumProperties_Impl::Reset(this).into()
23063            }
23064        }
23065        unsafe extern "system" fn Clone<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23066            this: *mut core::ffi::c_void,
23067            ppenum: *mut *mut core::ffi::c_void,
23068        ) -> windows_core::HRESULT {
23069            unsafe {
23070                let this: &Identity =
23071                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23072                match IMimeEnumProperties_Impl::Clone(this) {
23073                    Ok(ok__) => {
23074                        ppenum.write(core::mem::transmute(ok__));
23075                        windows_core::HRESULT(0)
23076                    }
23077                    Err(err) => err.into(),
23078                }
23079            }
23080        }
23081        unsafe extern "system" fn Count<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23082            this: *mut core::ffi::c_void,
23083            pcitems: *mut u32,
23084        ) -> windows_core::HRESULT {
23085            unsafe {
23086                let this: &Identity =
23087                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23088                IMimeEnumProperties_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
23089            }
23090        }
23091        Self {
23092            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23093            Next: Next::<Identity, OFFSET>,
23094            Skip: Skip::<Identity, OFFSET>,
23095            Reset: Reset::<Identity, OFFSET>,
23096            Clone: Clone::<Identity, OFFSET>,
23097            Count: Count::<Identity, OFFSET>,
23098        }
23099    }
23100    pub fn matches(iid: &windows_core::GUID) -> bool {
23101        iid == &<IMimeEnumProperties as windows_core::Interface>::IID
23102    }
23103}
23104impl windows_core::RuntimeName for IMimeEnumProperties {}
23105windows_core::imp::define_interface!(
23106    IMimeHeaderTable,
23107    IMimeHeaderTable_Vtbl,
23108    0xfd853cd1_7f86_11d0_8252_00c04fd85ab4
23109);
23110impl core::ops::Deref for IMimeHeaderTable {
23111    type Target = windows::Win32::System::Com::IPersistStream;
23112    fn deref(&self) -> &Self::Target {
23113        unsafe { core::mem::transmute(self) }
23114    }
23115}
23116windows_core::imp::interface_hierarchy!(
23117    IMimeHeaderTable,
23118    windows_core::IUnknown,
23119    windows::Win32::System::Com::IPersist,
23120    windows::Win32::System::Com::IPersistStream
23121);
23122impl IMimeHeaderTable {
23123    pub unsafe fn Load<P0>(&self, pstm: P0) -> windows_core::Result<()>
23124    where
23125        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
23126    {
23127        unsafe {
23128            (windows_core::Interface::vtable(self).Load)(
23129                windows_core::Interface::as_raw(self),
23130                pstm.param().abi(),
23131            )
23132            .ok()
23133        }
23134    }
23135    pub unsafe fn Save<P0>(&self, pstm: P0, fcleardirty: bool) -> windows_core::Result<()>
23136    where
23137        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
23138    {
23139        unsafe {
23140            (windows_core::Interface::vtable(self).Save)(
23141                windows_core::Interface::as_raw(self),
23142                pstm.param().abi(),
23143                fcleardirty.into(),
23144            )
23145            .ok()
23146        }
23147    }
23148    pub unsafe fn GetSizeMax(&self) -> windows_core::Result<u64> {
23149        unsafe {
23150            let mut result__ = core::mem::zeroed();
23151            (windows_core::Interface::vtable(self).GetSizeMax)(
23152                windows_core::Interface::as_raw(self),
23153                &mut result__,
23154            )
23155            .map(|| result__)
23156        }
23157    }
23158    pub unsafe fn FindFirstRow(
23159        &self,
23160        pfindheader: *mut FINDHEADER,
23161        phrow: *mut *mut HHEADERROW__,
23162    ) -> windows_core::Result<()> {
23163        unsafe {
23164            (windows_core::Interface::vtable(self).FindFirstRow)(
23165                windows_core::Interface::as_raw(self),
23166                pfindheader as _,
23167                phrow as _,
23168            )
23169            .ok()
23170        }
23171    }
23172    pub unsafe fn FindNextRow(
23173        &self,
23174        pfindheader: *mut FINDHEADER,
23175        phrow: *mut *mut HHEADERROW__,
23176    ) -> windows_core::Result<()> {
23177        unsafe {
23178            (windows_core::Interface::vtable(self).FindNextRow)(
23179                windows_core::Interface::as_raw(self),
23180                pfindheader as _,
23181                phrow as _,
23182            )
23183            .ok()
23184        }
23185    }
23186    pub unsafe fn CountRows<P0>(&self, pszheader: P0, pcrows: *mut u32) -> windows_core::Result<()>
23187    where
23188        P0: windows_core::Param<windows_core::PCSTR>,
23189    {
23190        unsafe {
23191            (windows_core::Interface::vtable(self).CountRows)(
23192                windows_core::Interface::as_raw(self),
23193                pszheader.param().abi(),
23194                pcrows as _,
23195            )
23196            .ok()
23197        }
23198    }
23199    pub unsafe fn AppendRow<P0, P2>(
23200        &self,
23201        pszheader: P0,
23202        dwflags: u32,
23203        pszdata: P2,
23204        cchdata: u32,
23205        phrow: *mut *mut HHEADERROW__,
23206    ) -> windows_core::Result<()>
23207    where
23208        P0: windows_core::Param<windows_core::PCSTR>,
23209        P2: windows_core::Param<windows_core::PCSTR>,
23210    {
23211        unsafe {
23212            (windows_core::Interface::vtable(self).AppendRow)(
23213                windows_core::Interface::as_raw(self),
23214                pszheader.param().abi(),
23215                dwflags,
23216                pszdata.param().abi(),
23217                cchdata,
23218                phrow as _,
23219            )
23220            .ok()
23221        }
23222    }
23223    pub unsafe fn DeleteRow(&self, hrow: *mut HHEADERROW__) -> windows_core::Result<()> {
23224        unsafe {
23225            (windows_core::Interface::vtable(self).DeleteRow)(
23226                windows_core::Interface::as_raw(self),
23227                hrow as _,
23228            )
23229            .ok()
23230        }
23231    }
23232    pub unsafe fn GetRowData(
23233        &self,
23234        hrow: *mut HHEADERROW__,
23235        dwflags: u32,
23236        ppszdata: *mut windows_core::PSTR,
23237        pcchdata: *mut u32,
23238    ) -> windows_core::Result<()> {
23239        unsafe {
23240            (windows_core::Interface::vtable(self).GetRowData)(
23241                windows_core::Interface::as_raw(self),
23242                hrow as _,
23243                dwflags,
23244                ppszdata as _,
23245                pcchdata as _,
23246            )
23247            .ok()
23248        }
23249    }
23250    pub unsafe fn SetRowData<P2>(
23251        &self,
23252        hrow: *mut HHEADERROW__,
23253        dwflags: u32,
23254        pszdata: P2,
23255        cchdata: u32,
23256    ) -> windows_core::Result<()>
23257    where
23258        P2: windows_core::Param<windows_core::PCSTR>,
23259    {
23260        unsafe {
23261            (windows_core::Interface::vtable(self).SetRowData)(
23262                windows_core::Interface::as_raw(self),
23263                hrow as _,
23264                dwflags,
23265                pszdata.param().abi(),
23266                cchdata,
23267            )
23268            .ok()
23269        }
23270    }
23271    pub unsafe fn GetRowInfo(
23272        &self,
23273        hrow: *mut HHEADERROW__,
23274        pinfo: *mut HEADERROWINFO,
23275    ) -> windows_core::Result<()> {
23276        unsafe {
23277            (windows_core::Interface::vtable(self).GetRowInfo)(
23278                windows_core::Interface::as_raw(self),
23279                hrow as _,
23280                pinfo as _,
23281            )
23282            .ok()
23283        }
23284    }
23285    pub unsafe fn SetRowNumber(
23286        &self,
23287        hrow: *mut HHEADERROW__,
23288        dwrownumber: u32,
23289    ) -> windows_core::Result<()> {
23290        unsafe {
23291            (windows_core::Interface::vtable(self).SetRowNumber)(
23292                windows_core::Interface::as_raw(self),
23293                hrow as _,
23294                dwrownumber,
23295            )
23296            .ok()
23297        }
23298    }
23299    pub unsafe fn EnumRows<P0>(
23300        &self,
23301        pszheader: P0,
23302        dwflags: u32,
23303    ) -> windows_core::Result<IMimeEnumHeaderRows>
23304    where
23305        P0: windows_core::Param<windows_core::PCSTR>,
23306    {
23307        unsafe {
23308            let mut result__ = core::mem::zeroed();
23309            (windows_core::Interface::vtable(self).EnumRows)(
23310                windows_core::Interface::as_raw(self),
23311                pszheader.param().abi(),
23312                dwflags,
23313                &mut result__,
23314            )
23315            .and_then(|| windows_core::Type::from_abi(result__))
23316        }
23317    }
23318    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeHeaderTable> {
23319        unsafe {
23320            let mut result__ = core::mem::zeroed();
23321            (windows_core::Interface::vtable(self).Clone)(
23322                windows_core::Interface::as_raw(self),
23323                &mut result__,
23324            )
23325            .and_then(|| windows_core::Type::from_abi(result__))
23326        }
23327    }
23328    pub unsafe fn BindToObject(
23329        &self,
23330        riid: *const windows_core::GUID,
23331        ppvobject: *mut *mut core::ffi::c_void,
23332    ) -> windows_core::Result<()> {
23333        unsafe {
23334            (windows_core::Interface::vtable(self).BindToObject)(
23335                windows_core::Interface::as_raw(self),
23336                riid,
23337                ppvobject as _,
23338            )
23339            .ok()
23340        }
23341    }
23342}
23343#[repr(C)]
23344pub struct IMimeHeaderTable_Vtbl {
23345    pub base__: windows::Win32::System::Com::IPersistStream_Vtbl,
23346    pub Load: unsafe extern "system" fn(
23347        *mut core::ffi::c_void,
23348        *mut core::ffi::c_void,
23349    ) -> windows_core::HRESULT,
23350    pub Save: unsafe extern "system" fn(
23351        *mut core::ffi::c_void,
23352        *mut core::ffi::c_void,
23353        windows_core::BOOL,
23354    ) -> windows_core::HRESULT,
23355    pub GetSizeMax:
23356        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
23357    pub FindFirstRow: unsafe extern "system" fn(
23358        *mut core::ffi::c_void,
23359        *mut FINDHEADER,
23360        *mut *mut HHEADERROW__,
23361    ) -> windows_core::HRESULT,
23362    pub FindNextRow: unsafe extern "system" fn(
23363        *mut core::ffi::c_void,
23364        *mut FINDHEADER,
23365        *mut *mut HHEADERROW__,
23366    ) -> windows_core::HRESULT,
23367    pub CountRows: unsafe extern "system" fn(
23368        *mut core::ffi::c_void,
23369        windows_core::PCSTR,
23370        *mut u32,
23371    ) -> windows_core::HRESULT,
23372    pub AppendRow: unsafe extern "system" fn(
23373        *mut core::ffi::c_void,
23374        windows_core::PCSTR,
23375        u32,
23376        windows_core::PCSTR,
23377        u32,
23378        *mut *mut HHEADERROW__,
23379    ) -> windows_core::HRESULT,
23380    pub DeleteRow: unsafe extern "system" fn(
23381        *mut core::ffi::c_void,
23382        *mut HHEADERROW__,
23383    ) -> windows_core::HRESULT,
23384    pub GetRowData: unsafe extern "system" fn(
23385        *mut core::ffi::c_void,
23386        *mut HHEADERROW__,
23387        u32,
23388        *mut windows_core::PSTR,
23389        *mut u32,
23390    ) -> windows_core::HRESULT,
23391    pub SetRowData: unsafe extern "system" fn(
23392        *mut core::ffi::c_void,
23393        *mut HHEADERROW__,
23394        u32,
23395        windows_core::PCSTR,
23396        u32,
23397    ) -> windows_core::HRESULT,
23398    pub GetRowInfo: unsafe extern "system" fn(
23399        *mut core::ffi::c_void,
23400        *mut HHEADERROW__,
23401        *mut HEADERROWINFO,
23402    ) -> windows_core::HRESULT,
23403    pub SetRowNumber: unsafe extern "system" fn(
23404        *mut core::ffi::c_void,
23405        *mut HHEADERROW__,
23406        u32,
23407    ) -> windows_core::HRESULT,
23408    pub EnumRows: unsafe extern "system" fn(
23409        *mut core::ffi::c_void,
23410        windows_core::PCSTR,
23411        u32,
23412        *mut *mut core::ffi::c_void,
23413    ) -> windows_core::HRESULT,
23414    pub Clone: unsafe extern "system" fn(
23415        *mut core::ffi::c_void,
23416        *mut *mut core::ffi::c_void,
23417    ) -> windows_core::HRESULT,
23418    pub BindToObject: unsafe extern "system" fn(
23419        *mut core::ffi::c_void,
23420        *const windows_core::GUID,
23421        *mut *mut core::ffi::c_void,
23422    ) -> windows_core::HRESULT,
23423}
23424pub trait IMimeHeaderTable_Impl: windows::Win32::System::Com::IPersistStream_Impl {
23425    fn Load(
23426        &self,
23427        pstm: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
23428    ) -> windows_core::Result<()>;
23429    fn Save(
23430        &self,
23431        pstm: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
23432        fcleardirty: windows_core::BOOL,
23433    ) -> windows_core::Result<()>;
23434    fn GetSizeMax(&self) -> windows_core::Result<u64>;
23435    fn FindFirstRow(
23436        &self,
23437        pfindheader: *mut FINDHEADER,
23438        phrow: *mut *mut HHEADERROW__,
23439    ) -> windows_core::Result<()>;
23440    fn FindNextRow(
23441        &self,
23442        pfindheader: *mut FINDHEADER,
23443        phrow: *mut *mut HHEADERROW__,
23444    ) -> windows_core::Result<()>;
23445    fn CountRows(
23446        &self,
23447        pszheader: &windows_core::PCSTR,
23448        pcrows: *mut u32,
23449    ) -> windows_core::Result<()>;
23450    fn AppendRow(
23451        &self,
23452        pszheader: &windows_core::PCSTR,
23453        dwflags: u32,
23454        pszdata: &windows_core::PCSTR,
23455        cchdata: u32,
23456        phrow: *mut *mut HHEADERROW__,
23457    ) -> windows_core::Result<()>;
23458    fn DeleteRow(&self, hrow: *mut HHEADERROW__) -> windows_core::Result<()>;
23459    fn GetRowData(
23460        &self,
23461        hrow: *mut HHEADERROW__,
23462        dwflags: u32,
23463        ppszdata: *mut windows_core::PSTR,
23464        pcchdata: *mut u32,
23465    ) -> windows_core::Result<()>;
23466    fn SetRowData(
23467        &self,
23468        hrow: *mut HHEADERROW__,
23469        dwflags: u32,
23470        pszdata: &windows_core::PCSTR,
23471        cchdata: u32,
23472    ) -> windows_core::Result<()>;
23473    fn GetRowInfo(
23474        &self,
23475        hrow: *mut HHEADERROW__,
23476        pinfo: *mut HEADERROWINFO,
23477    ) -> windows_core::Result<()>;
23478    fn SetRowNumber(&self, hrow: *mut HHEADERROW__, dwrownumber: u32) -> windows_core::Result<()>;
23479    fn EnumRows(
23480        &self,
23481        pszheader: &windows_core::PCSTR,
23482        dwflags: u32,
23483    ) -> windows_core::Result<IMimeEnumHeaderRows>;
23484    fn Clone(&self) -> windows_core::Result<IMimeHeaderTable>;
23485    fn BindToObject(
23486        &self,
23487        riid: *const windows_core::GUID,
23488        ppvobject: *mut *mut core::ffi::c_void,
23489    ) -> windows_core::Result<()>;
23490}
23491impl IMimeHeaderTable_Vtbl {
23492    pub const fn new<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>() -> Self {
23493        unsafe extern "system" fn Load<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23494            this: *mut core::ffi::c_void,
23495            pstm: *mut core::ffi::c_void,
23496        ) -> windows_core::HRESULT {
23497            unsafe {
23498                let this: &Identity =
23499                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23500                IMimeHeaderTable_Impl::Load(this, core::mem::transmute_copy(&pstm)).into()
23501            }
23502        }
23503        unsafe extern "system" fn Save<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23504            this: *mut core::ffi::c_void,
23505            pstm: *mut core::ffi::c_void,
23506            fcleardirty: windows_core::BOOL,
23507        ) -> windows_core::HRESULT {
23508            unsafe {
23509                let this: &Identity =
23510                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23511                IMimeHeaderTable_Impl::Save(
23512                    this,
23513                    core::mem::transmute_copy(&pstm),
23514                    core::mem::transmute_copy(&fcleardirty),
23515                )
23516                .into()
23517            }
23518        }
23519        unsafe extern "system" fn GetSizeMax<
23520            Identity: IMimeHeaderTable_Impl,
23521            const OFFSET: isize,
23522        >(
23523            this: *mut core::ffi::c_void,
23524            pcbsize: *mut u64,
23525        ) -> windows_core::HRESULT {
23526            unsafe {
23527                let this: &Identity =
23528                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23529                match IMimeHeaderTable_Impl::GetSizeMax(this) {
23530                    Ok(ok__) => {
23531                        pcbsize.write(core::mem::transmute(ok__));
23532                        windows_core::HRESULT(0)
23533                    }
23534                    Err(err) => err.into(),
23535                }
23536            }
23537        }
23538        unsafe extern "system" fn FindFirstRow<
23539            Identity: IMimeHeaderTable_Impl,
23540            const OFFSET: isize,
23541        >(
23542            this: *mut core::ffi::c_void,
23543            pfindheader: *mut FINDHEADER,
23544            phrow: *mut *mut HHEADERROW__,
23545        ) -> windows_core::HRESULT {
23546            unsafe {
23547                let this: &Identity =
23548                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23549                IMimeHeaderTable_Impl::FindFirstRow(
23550                    this,
23551                    core::mem::transmute_copy(&pfindheader),
23552                    core::mem::transmute_copy(&phrow),
23553                )
23554                .into()
23555            }
23556        }
23557        unsafe extern "system" fn FindNextRow<
23558            Identity: IMimeHeaderTable_Impl,
23559            const OFFSET: isize,
23560        >(
23561            this: *mut core::ffi::c_void,
23562            pfindheader: *mut FINDHEADER,
23563            phrow: *mut *mut HHEADERROW__,
23564        ) -> windows_core::HRESULT {
23565            unsafe {
23566                let this: &Identity =
23567                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23568                IMimeHeaderTable_Impl::FindNextRow(
23569                    this,
23570                    core::mem::transmute_copy(&pfindheader),
23571                    core::mem::transmute_copy(&phrow),
23572                )
23573                .into()
23574            }
23575        }
23576        unsafe extern "system" fn CountRows<
23577            Identity: IMimeHeaderTable_Impl,
23578            const OFFSET: isize,
23579        >(
23580            this: *mut core::ffi::c_void,
23581            pszheader: windows_core::PCSTR,
23582            pcrows: *mut u32,
23583        ) -> windows_core::HRESULT {
23584            unsafe {
23585                let this: &Identity =
23586                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23587                IMimeHeaderTable_Impl::CountRows(
23588                    this,
23589                    core::mem::transmute(&pszheader),
23590                    core::mem::transmute_copy(&pcrows),
23591                )
23592                .into()
23593            }
23594        }
23595        unsafe extern "system" fn AppendRow<
23596            Identity: IMimeHeaderTable_Impl,
23597            const OFFSET: isize,
23598        >(
23599            this: *mut core::ffi::c_void,
23600            pszheader: windows_core::PCSTR,
23601            dwflags: u32,
23602            pszdata: windows_core::PCSTR,
23603            cchdata: u32,
23604            phrow: *mut *mut HHEADERROW__,
23605        ) -> windows_core::HRESULT {
23606            unsafe {
23607                let this: &Identity =
23608                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23609                IMimeHeaderTable_Impl::AppendRow(
23610                    this,
23611                    core::mem::transmute(&pszheader),
23612                    core::mem::transmute_copy(&dwflags),
23613                    core::mem::transmute(&pszdata),
23614                    core::mem::transmute_copy(&cchdata),
23615                    core::mem::transmute_copy(&phrow),
23616                )
23617                .into()
23618            }
23619        }
23620        unsafe extern "system" fn DeleteRow<
23621            Identity: IMimeHeaderTable_Impl,
23622            const OFFSET: isize,
23623        >(
23624            this: *mut core::ffi::c_void,
23625            hrow: *mut HHEADERROW__,
23626        ) -> windows_core::HRESULT {
23627            unsafe {
23628                let this: &Identity =
23629                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23630                IMimeHeaderTable_Impl::DeleteRow(this, core::mem::transmute_copy(&hrow)).into()
23631            }
23632        }
23633        unsafe extern "system" fn GetRowData<
23634            Identity: IMimeHeaderTable_Impl,
23635            const OFFSET: isize,
23636        >(
23637            this: *mut core::ffi::c_void,
23638            hrow: *mut HHEADERROW__,
23639            dwflags: u32,
23640            ppszdata: *mut windows_core::PSTR,
23641            pcchdata: *mut u32,
23642        ) -> windows_core::HRESULT {
23643            unsafe {
23644                let this: &Identity =
23645                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23646                IMimeHeaderTable_Impl::GetRowData(
23647                    this,
23648                    core::mem::transmute_copy(&hrow),
23649                    core::mem::transmute_copy(&dwflags),
23650                    core::mem::transmute_copy(&ppszdata),
23651                    core::mem::transmute_copy(&pcchdata),
23652                )
23653                .into()
23654            }
23655        }
23656        unsafe extern "system" fn SetRowData<
23657            Identity: IMimeHeaderTable_Impl,
23658            const OFFSET: isize,
23659        >(
23660            this: *mut core::ffi::c_void,
23661            hrow: *mut HHEADERROW__,
23662            dwflags: u32,
23663            pszdata: windows_core::PCSTR,
23664            cchdata: u32,
23665        ) -> windows_core::HRESULT {
23666            unsafe {
23667                let this: &Identity =
23668                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23669                IMimeHeaderTable_Impl::SetRowData(
23670                    this,
23671                    core::mem::transmute_copy(&hrow),
23672                    core::mem::transmute_copy(&dwflags),
23673                    core::mem::transmute(&pszdata),
23674                    core::mem::transmute_copy(&cchdata),
23675                )
23676                .into()
23677            }
23678        }
23679        unsafe extern "system" fn GetRowInfo<
23680            Identity: IMimeHeaderTable_Impl,
23681            const OFFSET: isize,
23682        >(
23683            this: *mut core::ffi::c_void,
23684            hrow: *mut HHEADERROW__,
23685            pinfo: *mut HEADERROWINFO,
23686        ) -> windows_core::HRESULT {
23687            unsafe {
23688                let this: &Identity =
23689                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23690                IMimeHeaderTable_Impl::GetRowInfo(
23691                    this,
23692                    core::mem::transmute_copy(&hrow),
23693                    core::mem::transmute_copy(&pinfo),
23694                )
23695                .into()
23696            }
23697        }
23698        unsafe extern "system" fn SetRowNumber<
23699            Identity: IMimeHeaderTable_Impl,
23700            const OFFSET: isize,
23701        >(
23702            this: *mut core::ffi::c_void,
23703            hrow: *mut HHEADERROW__,
23704            dwrownumber: u32,
23705        ) -> windows_core::HRESULT {
23706            unsafe {
23707                let this: &Identity =
23708                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23709                IMimeHeaderTable_Impl::SetRowNumber(
23710                    this,
23711                    core::mem::transmute_copy(&hrow),
23712                    core::mem::transmute_copy(&dwrownumber),
23713                )
23714                .into()
23715            }
23716        }
23717        unsafe extern "system" fn EnumRows<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23718            this: *mut core::ffi::c_void,
23719            pszheader: windows_core::PCSTR,
23720            dwflags: u32,
23721            ppenum: *mut *mut core::ffi::c_void,
23722        ) -> windows_core::HRESULT {
23723            unsafe {
23724                let this: &Identity =
23725                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23726                match IMimeHeaderTable_Impl::EnumRows(
23727                    this,
23728                    core::mem::transmute(&pszheader),
23729                    core::mem::transmute_copy(&dwflags),
23730                ) {
23731                    Ok(ok__) => {
23732                        ppenum.write(core::mem::transmute(ok__));
23733                        windows_core::HRESULT(0)
23734                    }
23735                    Err(err) => err.into(),
23736                }
23737            }
23738        }
23739        unsafe extern "system" fn Clone<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23740            this: *mut core::ffi::c_void,
23741            pptable: *mut *mut core::ffi::c_void,
23742        ) -> windows_core::HRESULT {
23743            unsafe {
23744                let this: &Identity =
23745                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23746                match IMimeHeaderTable_Impl::Clone(this) {
23747                    Ok(ok__) => {
23748                        pptable.write(core::mem::transmute(ok__));
23749                        windows_core::HRESULT(0)
23750                    }
23751                    Err(err) => err.into(),
23752                }
23753            }
23754        }
23755        unsafe extern "system" fn BindToObject<
23756            Identity: IMimeHeaderTable_Impl,
23757            const OFFSET: isize,
23758        >(
23759            this: *mut core::ffi::c_void,
23760            riid: *const windows_core::GUID,
23761            ppvobject: *mut *mut core::ffi::c_void,
23762        ) -> windows_core::HRESULT {
23763            unsafe {
23764                let this: &Identity =
23765                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23766                IMimeHeaderTable_Impl::BindToObject(
23767                    this,
23768                    core::mem::transmute_copy(&riid),
23769                    core::mem::transmute_copy(&ppvobject),
23770                )
23771                .into()
23772            }
23773        }
23774        Self {
23775            base__: windows::Win32::System::Com::IPersistStream_Vtbl::new::<Identity, OFFSET>(),
23776            Load: Load::<Identity, OFFSET>,
23777            Save: Save::<Identity, OFFSET>,
23778            GetSizeMax: GetSizeMax::<Identity, OFFSET>,
23779            FindFirstRow: FindFirstRow::<Identity, OFFSET>,
23780            FindNextRow: FindNextRow::<Identity, OFFSET>,
23781            CountRows: CountRows::<Identity, OFFSET>,
23782            AppendRow: AppendRow::<Identity, OFFSET>,
23783            DeleteRow: DeleteRow::<Identity, OFFSET>,
23784            GetRowData: GetRowData::<Identity, OFFSET>,
23785            SetRowData: SetRowData::<Identity, OFFSET>,
23786            GetRowInfo: GetRowInfo::<Identity, OFFSET>,
23787            SetRowNumber: SetRowNumber::<Identity, OFFSET>,
23788            EnumRows: EnumRows::<Identity, OFFSET>,
23789            Clone: Clone::<Identity, OFFSET>,
23790            BindToObject: BindToObject::<Identity, OFFSET>,
23791        }
23792    }
23793    pub fn matches(iid: &windows_core::GUID) -> bool {
23794        iid == &<IMimeHeaderTable as windows_core::Interface>::IID
23795            || iid == &<windows::Win32::System::Com::IPersist as windows_core::Interface>::IID
23796            || iid == &<windows::Win32::System::Com::IPersistStream as windows_core::Interface>::IID
23797    }
23798}
23799impl windows_core::RuntimeName for IMimeHeaderTable {}
23800windows_core::imp::define_interface!(
23801    IMimeInternational,
23802    IMimeInternational_Vtbl,
23803    0xc5588349_7f86_11d0_8252_00c04fd85ab4
23804);
23805windows_core::imp::interface_hierarchy!(IMimeInternational, windows_core::IUnknown);
23806impl IMimeInternational {
23807    pub unsafe fn SetDefaultCharset(&self, hcharset: *mut HCHARSET__) -> windows_core::Result<()> {
23808        unsafe {
23809            (windows_core::Interface::vtable(self).SetDefaultCharset)(
23810                windows_core::Interface::as_raw(self),
23811                hcharset as _,
23812            )
23813            .ok()
23814        }
23815    }
23816    pub unsafe fn GetDefaultCharset(
23817        &self,
23818        phcharset: *mut *mut HCHARSET__,
23819    ) -> windows_core::Result<()> {
23820        unsafe {
23821            (windows_core::Interface::vtable(self).GetDefaultCharset)(
23822                windows_core::Interface::as_raw(self),
23823                phcharset as _,
23824            )
23825            .ok()
23826        }
23827    }
23828    pub unsafe fn GetCodePageCharset(
23829        &self,
23830        cpicodepage: u32,
23831        ctcsettype: CHARSETTYPE,
23832        phcharset: *mut *mut HCHARSET__,
23833    ) -> windows_core::Result<()> {
23834        unsafe {
23835            (windows_core::Interface::vtable(self).GetCodePageCharset)(
23836                windows_core::Interface::as_raw(self),
23837                cpicodepage,
23838                ctcsettype,
23839                phcharset as _,
23840            )
23841            .ok()
23842        }
23843    }
23844    pub unsafe fn FindCharset<P0>(
23845        &self,
23846        pszcharset: P0,
23847        phcharset: *mut *mut HCHARSET__,
23848    ) -> windows_core::Result<()>
23849    where
23850        P0: windows_core::Param<windows_core::PCSTR>,
23851    {
23852        unsafe {
23853            (windows_core::Interface::vtable(self).FindCharset)(
23854                windows_core::Interface::as_raw(self),
23855                pszcharset.param().abi(),
23856                phcharset as _,
23857            )
23858            .ok()
23859        }
23860    }
23861    pub unsafe fn GetCharsetInfo(
23862        &self,
23863        hcharset: *mut HCHARSET__,
23864        pcsetinfo: *mut INETCSETINFO,
23865    ) -> windows_core::Result<()> {
23866        unsafe {
23867            (windows_core::Interface::vtable(self).GetCharsetInfo)(
23868                windows_core::Interface::as_raw(self),
23869                hcharset as _,
23870                pcsetinfo as _,
23871            )
23872            .ok()
23873        }
23874    }
23875    pub unsafe fn GetCodePageInfo(
23876        &self,
23877        cpicodepage: u32,
23878        pcodepageinfo: *mut CODEPAGEINFO,
23879    ) -> windows_core::Result<()> {
23880        unsafe {
23881            (windows_core::Interface::vtable(self).GetCodePageInfo)(
23882                windows_core::Interface::as_raw(self),
23883                cpicodepage,
23884                pcodepageinfo as _,
23885            )
23886            .ok()
23887        }
23888    }
23889    pub unsafe fn CanConvertCodePages(
23890        &self,
23891        cpisource: u32,
23892        cpidest: u32,
23893    ) -> windows_core::Result<()> {
23894        unsafe {
23895            (windows_core::Interface::vtable(self).CanConvertCodePages)(
23896                windows_core::Interface::as_raw(self),
23897                cpisource,
23898                cpidest,
23899            )
23900            .ok()
23901        }
23902    }
23903    pub unsafe fn DecodeHeader<P1>(
23904        &self,
23905        hcharset: *mut HCHARSET__,
23906        pszdata: P1,
23907        pdecoded: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23908        prfc1522info: *mut RFC1522INFO,
23909    ) -> windows_core::Result<()>
23910    where
23911        P1: windows_core::Param<windows_core::PCSTR>,
23912    {
23913        unsafe {
23914            (windows_core::Interface::vtable(self).DecodeHeader)(
23915                windows_core::Interface::as_raw(self),
23916                hcharset as _,
23917                pszdata.param().abi(),
23918                core::mem::transmute(pdecoded),
23919                prfc1522info as _,
23920            )
23921            .ok()
23922        }
23923    }
23924    pub unsafe fn EncodeHeader(
23925        &self,
23926        hcharset: *mut HCHARSET__,
23927        pdata: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23928        ppszencoded: *mut windows_core::PSTR,
23929        prfc1522info: *mut RFC1522INFO,
23930    ) -> windows_core::Result<()> {
23931        unsafe {
23932            (windows_core::Interface::vtable(self).EncodeHeader)(
23933                windows_core::Interface::as_raw(self),
23934                hcharset as _,
23935                core::mem::transmute(pdata),
23936                ppszencoded as _,
23937                prfc1522info as _,
23938            )
23939            .ok()
23940        }
23941    }
23942    pub unsafe fn ConvertBuffer(
23943        &self,
23944        cpisource: u32,
23945        cpidest: u32,
23946        pin: *mut windows::Win32::System::Com::BLOB,
23947        pout: *mut windows::Win32::System::Com::BLOB,
23948        pcbread: *mut u32,
23949    ) -> windows_core::Result<()> {
23950        unsafe {
23951            (windows_core::Interface::vtable(self).ConvertBuffer)(
23952                windows_core::Interface::as_raw(self),
23953                cpisource,
23954                cpidest,
23955                pin as _,
23956                pout as _,
23957                pcbread as _,
23958            )
23959            .ok()
23960        }
23961    }
23962    pub unsafe fn ConvertString(
23963        &self,
23964        cpisource: u32,
23965        cpidest: u32,
23966        pin: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23967        pout: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23968    ) -> windows_core::Result<()> {
23969        unsafe {
23970            (windows_core::Interface::vtable(self).ConvertString)(
23971                windows_core::Interface::as_raw(self),
23972                cpisource,
23973                cpidest,
23974                core::mem::transmute(pin),
23975                core::mem::transmute(pout),
23976            )
23977            .ok()
23978        }
23979    }
23980    pub unsafe fn MLANG_ConvertInetReset(&self) -> windows_core::Result<()> {
23981        unsafe {
23982            (windows_core::Interface::vtable(self).MLANG_ConvertInetReset)(
23983                windows_core::Interface::as_raw(self),
23984            )
23985            .ok()
23986        }
23987    }
23988    pub unsafe fn MLANG_ConvertInetString<P2, P4>(
23989        &self,
23990        cpisource: u32,
23991        cpidest: u32,
23992        psource: P2,
23993        pnsizeofsource: *mut i32,
23994        pdestination: P4,
23995        pndstsize: *mut i32,
23996    ) -> windows_core::Result<()>
23997    where
23998        P2: windows_core::Param<windows_core::PCSTR>,
23999        P4: windows_core::Param<windows_core::PCSTR>,
24000    {
24001        unsafe {
24002            (windows_core::Interface::vtable(self).MLANG_ConvertInetString)(
24003                windows_core::Interface::as_raw(self),
24004                cpisource,
24005                cpidest,
24006                psource.param().abi(),
24007                pnsizeofsource as _,
24008                pdestination.param().abi(),
24009                pndstsize as _,
24010            )
24011            .ok()
24012        }
24013    }
24014    pub unsafe fn Rfc1522Decode<P0, P1>(
24015        &self,
24016        pszvalue: P0,
24017        pszcharset: P1,
24018        cchmax: u32,
24019        ppszdecoded: *mut windows_core::PSTR,
24020    ) -> windows_core::Result<()>
24021    where
24022        P0: windows_core::Param<windows_core::PCSTR>,
24023        P1: windows_core::Param<windows_core::PCSTR>,
24024    {
24025        unsafe {
24026            (windows_core::Interface::vtable(self).Rfc1522Decode)(
24027                windows_core::Interface::as_raw(self),
24028                pszvalue.param().abi(),
24029                pszcharset.param().abi(),
24030                cchmax,
24031                ppszdecoded as _,
24032            )
24033            .ok()
24034        }
24035    }
24036    pub unsafe fn Rfc1522Encode<P0>(
24037        &self,
24038        pszvalue: P0,
24039        hcharset: *mut HCHARSET__,
24040        ppszencoded: *mut windows_core::PSTR,
24041    ) -> windows_core::Result<()>
24042    where
24043        P0: windows_core::Param<windows_core::PCSTR>,
24044    {
24045        unsafe {
24046            (windows_core::Interface::vtable(self).Rfc1522Encode)(
24047                windows_core::Interface::as_raw(self),
24048                pszvalue.param().abi(),
24049                hcharset as _,
24050                ppszencoded as _,
24051            )
24052            .ok()
24053        }
24054    }
24055}
24056#[repr(C)]
24057pub struct IMimeInternational_Vtbl {
24058    pub base__: windows_core::IUnknown_Vtbl,
24059    pub SetDefaultCharset:
24060        unsafe extern "system" fn(*mut core::ffi::c_void, *mut HCHARSET__) -> windows_core::HRESULT,
24061    pub GetDefaultCharset: unsafe extern "system" fn(
24062        *mut core::ffi::c_void,
24063        *mut *mut HCHARSET__,
24064    ) -> windows_core::HRESULT,
24065    pub GetCodePageCharset: unsafe extern "system" fn(
24066        *mut core::ffi::c_void,
24067        u32,
24068        CHARSETTYPE,
24069        *mut *mut HCHARSET__,
24070    ) -> windows_core::HRESULT,
24071    pub FindCharset: unsafe extern "system" fn(
24072        *mut core::ffi::c_void,
24073        windows_core::PCSTR,
24074        *mut *mut HCHARSET__,
24075    ) -> windows_core::HRESULT,
24076    pub GetCharsetInfo: unsafe extern "system" fn(
24077        *mut core::ffi::c_void,
24078        *mut HCHARSET__,
24079        *mut INETCSETINFO,
24080    ) -> windows_core::HRESULT,
24081    pub GetCodePageInfo: unsafe extern "system" fn(
24082        *mut core::ffi::c_void,
24083        u32,
24084        *mut CODEPAGEINFO,
24085    ) -> windows_core::HRESULT,
24086    pub CanConvertCodePages:
24087        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
24088    pub DecodeHeader: unsafe extern "system" fn(
24089        *mut core::ffi::c_void,
24090        *mut HCHARSET__,
24091        windows_core::PCSTR,
24092        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24093        *mut RFC1522INFO,
24094    ) -> windows_core::HRESULT,
24095    pub EncodeHeader: unsafe extern "system" fn(
24096        *mut core::ffi::c_void,
24097        *mut HCHARSET__,
24098        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24099        *mut windows_core::PSTR,
24100        *mut RFC1522INFO,
24101    ) -> windows_core::HRESULT,
24102    pub ConvertBuffer: unsafe extern "system" fn(
24103        *mut core::ffi::c_void,
24104        u32,
24105        u32,
24106        *mut windows::Win32::System::Com::BLOB,
24107        *mut windows::Win32::System::Com::BLOB,
24108        *mut u32,
24109    ) -> windows_core::HRESULT,
24110    pub ConvertString: unsafe extern "system" fn(
24111        *mut core::ffi::c_void,
24112        u32,
24113        u32,
24114        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24115        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24116    ) -> windows_core::HRESULT,
24117    pub MLANG_ConvertInetReset:
24118        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
24119    pub MLANG_ConvertInetString: unsafe extern "system" fn(
24120        *mut core::ffi::c_void,
24121        u32,
24122        u32,
24123        windows_core::PCSTR,
24124        *mut i32,
24125        windows_core::PCSTR,
24126        *mut i32,
24127    ) -> windows_core::HRESULT,
24128    pub Rfc1522Decode: unsafe extern "system" fn(
24129        *mut core::ffi::c_void,
24130        windows_core::PCSTR,
24131        windows_core::PCSTR,
24132        u32,
24133        *mut windows_core::PSTR,
24134    ) -> windows_core::HRESULT,
24135    pub Rfc1522Encode: unsafe extern "system" fn(
24136        *mut core::ffi::c_void,
24137        windows_core::PCSTR,
24138        *mut HCHARSET__,
24139        *mut windows_core::PSTR,
24140    ) -> windows_core::HRESULT,
24141}
24142pub trait IMimeInternational_Impl: windows_core::IUnknownImpl {
24143    fn SetDefaultCharset(&self, hcharset: *mut HCHARSET__) -> windows_core::Result<()>;
24144    fn GetDefaultCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()>;
24145    fn GetCodePageCharset(
24146        &self,
24147        cpicodepage: u32,
24148        ctcsettype: CHARSETTYPE,
24149        phcharset: *mut *mut HCHARSET__,
24150    ) -> windows_core::Result<()>;
24151    fn FindCharset(
24152        &self,
24153        pszcharset: &windows_core::PCSTR,
24154        phcharset: *mut *mut HCHARSET__,
24155    ) -> windows_core::Result<()>;
24156    fn GetCharsetInfo(
24157        &self,
24158        hcharset: *mut HCHARSET__,
24159        pcsetinfo: *mut INETCSETINFO,
24160    ) -> windows_core::Result<()>;
24161    fn GetCodePageInfo(
24162        &self,
24163        cpicodepage: u32,
24164        pcodepageinfo: *mut CODEPAGEINFO,
24165    ) -> windows_core::Result<()>;
24166    fn CanConvertCodePages(&self, cpisource: u32, cpidest: u32) -> windows_core::Result<()>;
24167    fn DecodeHeader(
24168        &self,
24169        hcharset: *mut HCHARSET__,
24170        pszdata: &windows_core::PCSTR,
24171        pdecoded: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24172        prfc1522info: *mut RFC1522INFO,
24173    ) -> windows_core::Result<()>;
24174    fn EncodeHeader(
24175        &self,
24176        hcharset: *mut HCHARSET__,
24177        pdata: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24178        ppszencoded: *mut windows_core::PSTR,
24179        prfc1522info: *mut RFC1522INFO,
24180    ) -> windows_core::Result<()>;
24181    fn ConvertBuffer(
24182        &self,
24183        cpisource: u32,
24184        cpidest: u32,
24185        pin: *mut windows::Win32::System::Com::BLOB,
24186        pout: *mut windows::Win32::System::Com::BLOB,
24187        pcbread: *mut u32,
24188    ) -> windows_core::Result<()>;
24189    fn ConvertString(
24190        &self,
24191        cpisource: u32,
24192        cpidest: u32,
24193        pin: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24194        pout: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24195    ) -> windows_core::Result<()>;
24196    fn MLANG_ConvertInetReset(&self) -> windows_core::Result<()>;
24197    fn MLANG_ConvertInetString(
24198        &self,
24199        cpisource: u32,
24200        cpidest: u32,
24201        psource: &windows_core::PCSTR,
24202        pnsizeofsource: *mut i32,
24203        pdestination: &windows_core::PCSTR,
24204        pndstsize: *mut i32,
24205    ) -> windows_core::Result<()>;
24206    fn Rfc1522Decode(
24207        &self,
24208        pszvalue: &windows_core::PCSTR,
24209        pszcharset: &windows_core::PCSTR,
24210        cchmax: u32,
24211        ppszdecoded: *mut windows_core::PSTR,
24212    ) -> windows_core::Result<()>;
24213    fn Rfc1522Encode(
24214        &self,
24215        pszvalue: &windows_core::PCSTR,
24216        hcharset: *mut HCHARSET__,
24217        ppszencoded: *mut windows_core::PSTR,
24218    ) -> windows_core::Result<()>;
24219}
24220impl IMimeInternational_Vtbl {
24221    pub const fn new<Identity: IMimeInternational_Impl, const OFFSET: isize>() -> Self {
24222        unsafe extern "system" fn SetDefaultCharset<
24223            Identity: IMimeInternational_Impl,
24224            const OFFSET: isize,
24225        >(
24226            this: *mut core::ffi::c_void,
24227            hcharset: *mut HCHARSET__,
24228        ) -> windows_core::HRESULT {
24229            unsafe {
24230                let this: &Identity =
24231                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24232                IMimeInternational_Impl::SetDefaultCharset(
24233                    this,
24234                    core::mem::transmute_copy(&hcharset),
24235                )
24236                .into()
24237            }
24238        }
24239        unsafe extern "system" fn GetDefaultCharset<
24240            Identity: IMimeInternational_Impl,
24241            const OFFSET: isize,
24242        >(
24243            this: *mut core::ffi::c_void,
24244            phcharset: *mut *mut HCHARSET__,
24245        ) -> windows_core::HRESULT {
24246            unsafe {
24247                let this: &Identity =
24248                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24249                IMimeInternational_Impl::GetDefaultCharset(
24250                    this,
24251                    core::mem::transmute_copy(&phcharset),
24252                )
24253                .into()
24254            }
24255        }
24256        unsafe extern "system" fn GetCodePageCharset<
24257            Identity: IMimeInternational_Impl,
24258            const OFFSET: isize,
24259        >(
24260            this: *mut core::ffi::c_void,
24261            cpicodepage: u32,
24262            ctcsettype: CHARSETTYPE,
24263            phcharset: *mut *mut HCHARSET__,
24264        ) -> windows_core::HRESULT {
24265            unsafe {
24266                let this: &Identity =
24267                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24268                IMimeInternational_Impl::GetCodePageCharset(
24269                    this,
24270                    core::mem::transmute_copy(&cpicodepage),
24271                    core::mem::transmute_copy(&ctcsettype),
24272                    core::mem::transmute_copy(&phcharset),
24273                )
24274                .into()
24275            }
24276        }
24277        unsafe extern "system" fn FindCharset<
24278            Identity: IMimeInternational_Impl,
24279            const OFFSET: isize,
24280        >(
24281            this: *mut core::ffi::c_void,
24282            pszcharset: windows_core::PCSTR,
24283            phcharset: *mut *mut HCHARSET__,
24284        ) -> windows_core::HRESULT {
24285            unsafe {
24286                let this: &Identity =
24287                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24288                IMimeInternational_Impl::FindCharset(
24289                    this,
24290                    core::mem::transmute(&pszcharset),
24291                    core::mem::transmute_copy(&phcharset),
24292                )
24293                .into()
24294            }
24295        }
24296        unsafe extern "system" fn GetCharsetInfo<
24297            Identity: IMimeInternational_Impl,
24298            const OFFSET: isize,
24299        >(
24300            this: *mut core::ffi::c_void,
24301            hcharset: *mut HCHARSET__,
24302            pcsetinfo: *mut INETCSETINFO,
24303        ) -> windows_core::HRESULT {
24304            unsafe {
24305                let this: &Identity =
24306                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24307                IMimeInternational_Impl::GetCharsetInfo(
24308                    this,
24309                    core::mem::transmute_copy(&hcharset),
24310                    core::mem::transmute_copy(&pcsetinfo),
24311                )
24312                .into()
24313            }
24314        }
24315        unsafe extern "system" fn GetCodePageInfo<
24316            Identity: IMimeInternational_Impl,
24317            const OFFSET: isize,
24318        >(
24319            this: *mut core::ffi::c_void,
24320            cpicodepage: u32,
24321            pcodepageinfo: *mut CODEPAGEINFO,
24322        ) -> windows_core::HRESULT {
24323            unsafe {
24324                let this: &Identity =
24325                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24326                IMimeInternational_Impl::GetCodePageInfo(
24327                    this,
24328                    core::mem::transmute_copy(&cpicodepage),
24329                    core::mem::transmute_copy(&pcodepageinfo),
24330                )
24331                .into()
24332            }
24333        }
24334        unsafe extern "system" fn CanConvertCodePages<
24335            Identity: IMimeInternational_Impl,
24336            const OFFSET: isize,
24337        >(
24338            this: *mut core::ffi::c_void,
24339            cpisource: u32,
24340            cpidest: u32,
24341        ) -> windows_core::HRESULT {
24342            unsafe {
24343                let this: &Identity =
24344                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24345                IMimeInternational_Impl::CanConvertCodePages(
24346                    this,
24347                    core::mem::transmute_copy(&cpisource),
24348                    core::mem::transmute_copy(&cpidest),
24349                )
24350                .into()
24351            }
24352        }
24353        unsafe extern "system" fn DecodeHeader<
24354            Identity: IMimeInternational_Impl,
24355            const OFFSET: isize,
24356        >(
24357            this: *mut core::ffi::c_void,
24358            hcharset: *mut HCHARSET__,
24359            pszdata: windows_core::PCSTR,
24360            pdecoded: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24361            prfc1522info: *mut RFC1522INFO,
24362        ) -> windows_core::HRESULT {
24363            unsafe {
24364                let this: &Identity =
24365                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24366                IMimeInternational_Impl::DecodeHeader(
24367                    this,
24368                    core::mem::transmute_copy(&hcharset),
24369                    core::mem::transmute(&pszdata),
24370                    core::mem::transmute_copy(&pdecoded),
24371                    core::mem::transmute_copy(&prfc1522info),
24372                )
24373                .into()
24374            }
24375        }
24376        unsafe extern "system" fn EncodeHeader<
24377            Identity: IMimeInternational_Impl,
24378            const OFFSET: isize,
24379        >(
24380            this: *mut core::ffi::c_void,
24381            hcharset: *mut HCHARSET__,
24382            pdata: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24383            ppszencoded: *mut windows_core::PSTR,
24384            prfc1522info: *mut RFC1522INFO,
24385        ) -> windows_core::HRESULT {
24386            unsafe {
24387                let this: &Identity =
24388                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24389                IMimeInternational_Impl::EncodeHeader(
24390                    this,
24391                    core::mem::transmute_copy(&hcharset),
24392                    core::mem::transmute_copy(&pdata),
24393                    core::mem::transmute_copy(&ppszencoded),
24394                    core::mem::transmute_copy(&prfc1522info),
24395                )
24396                .into()
24397            }
24398        }
24399        unsafe extern "system" fn ConvertBuffer<
24400            Identity: IMimeInternational_Impl,
24401            const OFFSET: isize,
24402        >(
24403            this: *mut core::ffi::c_void,
24404            cpisource: u32,
24405            cpidest: u32,
24406            pin: *mut windows::Win32::System::Com::BLOB,
24407            pout: *mut windows::Win32::System::Com::BLOB,
24408            pcbread: *mut u32,
24409        ) -> windows_core::HRESULT {
24410            unsafe {
24411                let this: &Identity =
24412                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24413                IMimeInternational_Impl::ConvertBuffer(
24414                    this,
24415                    core::mem::transmute_copy(&cpisource),
24416                    core::mem::transmute_copy(&cpidest),
24417                    core::mem::transmute_copy(&pin),
24418                    core::mem::transmute_copy(&pout),
24419                    core::mem::transmute_copy(&pcbread),
24420                )
24421                .into()
24422            }
24423        }
24424        unsafe extern "system" fn ConvertString<
24425            Identity: IMimeInternational_Impl,
24426            const OFFSET: isize,
24427        >(
24428            this: *mut core::ffi::c_void,
24429            cpisource: u32,
24430            cpidest: u32,
24431            pin: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24432            pout: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24433        ) -> windows_core::HRESULT {
24434            unsafe {
24435                let this: &Identity =
24436                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24437                IMimeInternational_Impl::ConvertString(
24438                    this,
24439                    core::mem::transmute_copy(&cpisource),
24440                    core::mem::transmute_copy(&cpidest),
24441                    core::mem::transmute_copy(&pin),
24442                    core::mem::transmute_copy(&pout),
24443                )
24444                .into()
24445            }
24446        }
24447        unsafe extern "system" fn MLANG_ConvertInetReset<
24448            Identity: IMimeInternational_Impl,
24449            const OFFSET: isize,
24450        >(
24451            this: *mut core::ffi::c_void,
24452        ) -> windows_core::HRESULT {
24453            unsafe {
24454                let this: &Identity =
24455                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24456                IMimeInternational_Impl::MLANG_ConvertInetReset(this).into()
24457            }
24458        }
24459        unsafe extern "system" fn MLANG_ConvertInetString<
24460            Identity: IMimeInternational_Impl,
24461            const OFFSET: isize,
24462        >(
24463            this: *mut core::ffi::c_void,
24464            cpisource: u32,
24465            cpidest: u32,
24466            psource: windows_core::PCSTR,
24467            pnsizeofsource: *mut i32,
24468            pdestination: windows_core::PCSTR,
24469            pndstsize: *mut i32,
24470        ) -> windows_core::HRESULT {
24471            unsafe {
24472                let this: &Identity =
24473                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24474                IMimeInternational_Impl::MLANG_ConvertInetString(
24475                    this,
24476                    core::mem::transmute_copy(&cpisource),
24477                    core::mem::transmute_copy(&cpidest),
24478                    core::mem::transmute(&psource),
24479                    core::mem::transmute_copy(&pnsizeofsource),
24480                    core::mem::transmute(&pdestination),
24481                    core::mem::transmute_copy(&pndstsize),
24482                )
24483                .into()
24484            }
24485        }
24486        unsafe extern "system" fn Rfc1522Decode<
24487            Identity: IMimeInternational_Impl,
24488            const OFFSET: isize,
24489        >(
24490            this: *mut core::ffi::c_void,
24491            pszvalue: windows_core::PCSTR,
24492            pszcharset: windows_core::PCSTR,
24493            cchmax: u32,
24494            ppszdecoded: *mut windows_core::PSTR,
24495        ) -> windows_core::HRESULT {
24496            unsafe {
24497                let this: &Identity =
24498                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24499                IMimeInternational_Impl::Rfc1522Decode(
24500                    this,
24501                    core::mem::transmute(&pszvalue),
24502                    core::mem::transmute(&pszcharset),
24503                    core::mem::transmute_copy(&cchmax),
24504                    core::mem::transmute_copy(&ppszdecoded),
24505                )
24506                .into()
24507            }
24508        }
24509        unsafe extern "system" fn Rfc1522Encode<
24510            Identity: IMimeInternational_Impl,
24511            const OFFSET: isize,
24512        >(
24513            this: *mut core::ffi::c_void,
24514            pszvalue: windows_core::PCSTR,
24515            hcharset: *mut HCHARSET__,
24516            ppszencoded: *mut windows_core::PSTR,
24517        ) -> windows_core::HRESULT {
24518            unsafe {
24519                let this: &Identity =
24520                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24521                IMimeInternational_Impl::Rfc1522Encode(
24522                    this,
24523                    core::mem::transmute(&pszvalue),
24524                    core::mem::transmute_copy(&hcharset),
24525                    core::mem::transmute_copy(&ppszencoded),
24526                )
24527                .into()
24528            }
24529        }
24530        Self {
24531            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24532            SetDefaultCharset: SetDefaultCharset::<Identity, OFFSET>,
24533            GetDefaultCharset: GetDefaultCharset::<Identity, OFFSET>,
24534            GetCodePageCharset: GetCodePageCharset::<Identity, OFFSET>,
24535            FindCharset: FindCharset::<Identity, OFFSET>,
24536            GetCharsetInfo: GetCharsetInfo::<Identity, OFFSET>,
24537            GetCodePageInfo: GetCodePageInfo::<Identity, OFFSET>,
24538            CanConvertCodePages: CanConvertCodePages::<Identity, OFFSET>,
24539            DecodeHeader: DecodeHeader::<Identity, OFFSET>,
24540            EncodeHeader: EncodeHeader::<Identity, OFFSET>,
24541            ConvertBuffer: ConvertBuffer::<Identity, OFFSET>,
24542            ConvertString: ConvertString::<Identity, OFFSET>,
24543            MLANG_ConvertInetReset: MLANG_ConvertInetReset::<Identity, OFFSET>,
24544            MLANG_ConvertInetString: MLANG_ConvertInetString::<Identity, OFFSET>,
24545            Rfc1522Decode: Rfc1522Decode::<Identity, OFFSET>,
24546            Rfc1522Encode: Rfc1522Encode::<Identity, OFFSET>,
24547        }
24548    }
24549    pub fn matches(iid: &windows_core::GUID) -> bool {
24550        iid == &<IMimeInternational as windows_core::Interface>::IID
24551    }
24552}
24553impl windows_core::RuntimeName for IMimeInternational {}
24554windows_core::imp::define_interface!(
24555    IMimeMessage,
24556    IMimeMessage_Vtbl,
24557    0xfd853cd5_7f86_11d0_8252_00c04fd85ab4
24558);
24559impl core::ops::Deref for IMimeMessage {
24560    type Target = IMimeMessageTree;
24561    fn deref(&self) -> &Self::Target {
24562        unsafe { core::mem::transmute(self) }
24563    }
24564}
24565windows_core::imp::interface_hierarchy!(
24566    IMimeMessage,
24567    windows_core::IUnknown,
24568    windows::Win32::System::Com::IPersist,
24569    windows::Win32::System::Com::IPersistStreamInit,
24570    IMimeMessageTree
24571);
24572impl IMimeMessage {
24573    pub unsafe fn CreateWebPage<P0, P2>(
24574        &self,
24575        prootstm: P0,
24576        poptions: *mut WEBPAGEOPTIONS,
24577        pcallback: P2,
24578        ppmoniker: *mut Option<windows::Win32::System::Com::IMoniker>,
24579    ) -> windows_core::Result<()>
24580    where
24581        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
24582        P2: windows_core::Param<IMimeMessageCallback>,
24583    {
24584        unsafe {
24585            (windows_core::Interface::vtable(self).CreateWebPage)(
24586                windows_core::Interface::as_raw(self),
24587                prootstm.param().abi(),
24588                poptions as _,
24589                pcallback.param().abi(),
24590                core::mem::transmute(ppmoniker),
24591            )
24592            .ok()
24593        }
24594    }
24595    pub unsafe fn GetPropA<P0>(
24596        &self,
24597        pszname: P0,
24598        dwflags: u32,
24599        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24600    ) -> windows_core::Result<()>
24601    where
24602        P0: windows_core::Param<windows_core::PCSTR>,
24603    {
24604        unsafe {
24605            (windows_core::Interface::vtable(self).GetPropA)(
24606                windows_core::Interface::as_raw(self),
24607                pszname.param().abi(),
24608                dwflags,
24609                core::mem::transmute(pvalue),
24610            )
24611            .ok()
24612        }
24613    }
24614    pub unsafe fn SetPropA<P0>(
24615        &self,
24616        pszname: P0,
24617        dwflags: u32,
24618        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24619    ) -> windows_core::Result<()>
24620    where
24621        P0: windows_core::Param<windows_core::PCSTR>,
24622    {
24623        unsafe {
24624            (windows_core::Interface::vtable(self).SetPropA)(
24625                windows_core::Interface::as_raw(self),
24626                pszname.param().abi(),
24627                dwflags,
24628                core::mem::transmute(pvalue),
24629            )
24630            .ok()
24631        }
24632    }
24633    pub unsafe fn DeleteProp<P0>(&self, pszname: P0) -> windows_core::Result<()>
24634    where
24635        P0: windows_core::Param<windows_core::PCSTR>,
24636    {
24637        unsafe {
24638            (windows_core::Interface::vtable(self).DeleteProp)(
24639                windows_core::Interface::as_raw(self),
24640                pszname.param().abi(),
24641            )
24642            .ok()
24643        }
24644    }
24645    pub unsafe fn QueryProp<P0, P1>(
24646        &self,
24647        pszname: P0,
24648        pszcriteria: P1,
24649        fsubstring: u8,
24650        fcasesensitive: u8,
24651    ) -> windows_core::Result<()>
24652    where
24653        P0: windows_core::Param<windows_core::PCSTR>,
24654        P1: windows_core::Param<windows_core::PCSTR>,
24655    {
24656        unsafe {
24657            (windows_core::Interface::vtable(self).QueryProp)(
24658                windows_core::Interface::as_raw(self),
24659                pszname.param().abi(),
24660                pszcriteria.param().abi(),
24661                fsubstring,
24662                fcasesensitive,
24663            )
24664            .ok()
24665        }
24666    }
24667    pub unsafe fn GetTextBody(
24668        &self,
24669        dwtxttype: u32,
24670        ietencoding: ENCODINGTYPE,
24671        ppstream: *mut Option<windows::Win32::System::Com::IStream>,
24672        phbody: *mut *mut HBODY__,
24673    ) -> windows_core::Result<()> {
24674        unsafe {
24675            (windows_core::Interface::vtable(self).GetTextBody)(
24676                windows_core::Interface::as_raw(self),
24677                dwtxttype,
24678                ietencoding,
24679                core::mem::transmute(ppstream),
24680                phbody as _,
24681            )
24682            .ok()
24683        }
24684    }
24685    pub unsafe fn SetTextBody<P3>(
24686        &self,
24687        dwtxttype: u32,
24688        ietencoding: ENCODINGTYPE,
24689        halternative: *mut HBODY__,
24690        pstream: P3,
24691        phbody: *mut *mut HBODY__,
24692    ) -> windows_core::Result<()>
24693    where
24694        P3: windows_core::Param<windows::Win32::System::Com::IStream>,
24695    {
24696        unsafe {
24697            (windows_core::Interface::vtable(self).SetTextBody)(
24698                windows_core::Interface::as_raw(self),
24699                dwtxttype,
24700                ietencoding,
24701                halternative as _,
24702                pstream.param().abi(),
24703                phbody as _,
24704            )
24705            .ok()
24706        }
24707    }
24708    pub unsafe fn AttachObject(
24709        &self,
24710        riid: *const windows_core::GUID,
24711        pvobject: *mut core::ffi::c_void,
24712        phbody: *mut *mut HBODY__,
24713    ) -> windows_core::Result<()> {
24714        unsafe {
24715            (windows_core::Interface::vtable(self).AttachObject)(
24716                windows_core::Interface::as_raw(self),
24717                riid,
24718                pvobject as _,
24719                phbody as _,
24720            )
24721            .ok()
24722        }
24723    }
24724    pub unsafe fn AttachFile<P0, P1>(
24725        &self,
24726        pszfilepath: P0,
24727        pstmfile: P1,
24728        phbody: *mut *mut HBODY__,
24729    ) -> windows_core::Result<()>
24730    where
24731        P0: windows_core::Param<windows_core::PCSTR>,
24732        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
24733    {
24734        unsafe {
24735            (windows_core::Interface::vtable(self).AttachFile)(
24736                windows_core::Interface::as_raw(self),
24737                pszfilepath.param().abi(),
24738                pstmfile.param().abi(),
24739                phbody as _,
24740            )
24741            .ok()
24742        }
24743    }
24744    pub unsafe fn AttachURL<P0, P1, P3>(
24745        &self,
24746        pszbase: P0,
24747        pszurl: P1,
24748        dwflags: u32,
24749        pstmurl: P3,
24750        ppszcidurl: *mut windows_core::PSTR,
24751        phbody: *mut *mut HBODY__,
24752    ) -> windows_core::Result<()>
24753    where
24754        P0: windows_core::Param<windows_core::PCSTR>,
24755        P1: windows_core::Param<windows_core::PCSTR>,
24756        P3: windows_core::Param<windows::Win32::System::Com::IStream>,
24757    {
24758        unsafe {
24759            (windows_core::Interface::vtable(self).AttachURL)(
24760                windows_core::Interface::as_raw(self),
24761                pszbase.param().abi(),
24762                pszurl.param().abi(),
24763                dwflags,
24764                pstmurl.param().abi(),
24765                ppszcidurl as _,
24766                phbody as _,
24767            )
24768            .ok()
24769        }
24770    }
24771    pub unsafe fn GetAttachments(
24772        &self,
24773        pcattach: *mut u32,
24774        pprghattach: *mut *mut *mut HBODY__,
24775    ) -> windows_core::Result<()> {
24776        unsafe {
24777            (windows_core::Interface::vtable(self).GetAttachments)(
24778                windows_core::Interface::as_raw(self),
24779                pcattach as _,
24780                pprghattach as _,
24781            )
24782            .ok()
24783        }
24784    }
24785    pub unsafe fn GetAddressTable(&self) -> windows_core::Result<IMimeAddressTable> {
24786        unsafe {
24787            let mut result__ = core::mem::zeroed();
24788            (windows_core::Interface::vtable(self).GetAddressTable)(
24789                windows_core::Interface::as_raw(self),
24790                &mut result__,
24791            )
24792            .and_then(|| windows_core::Type::from_abi(result__))
24793        }
24794    }
24795    pub unsafe fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()> {
24796        unsafe {
24797            (windows_core::Interface::vtable(self).GetSender)(
24798                windows_core::Interface::as_raw(self),
24799                paddress as _,
24800            )
24801            .ok()
24802        }
24803    }
24804    pub unsafe fn GetAddressTypes(
24805        &self,
24806        dwadrtypes: u32,
24807        dwprops: u32,
24808        plist: *mut ADDRESSLIST,
24809    ) -> windows_core::Result<()> {
24810        unsafe {
24811            (windows_core::Interface::vtable(self).GetAddressTypes)(
24812                windows_core::Interface::as_raw(self),
24813                dwadrtypes,
24814                dwprops,
24815                plist as _,
24816            )
24817            .ok()
24818        }
24819    }
24820    pub unsafe fn GetAddressFormat(
24821        &self,
24822        dwadrtype: u32,
24823        format: ADDRESSFORMAT,
24824        ppszformat: *mut windows_core::PSTR,
24825    ) -> windows_core::Result<()> {
24826        unsafe {
24827            (windows_core::Interface::vtable(self).GetAddressFormat)(
24828                windows_core::Interface::as_raw(self),
24829                dwadrtype,
24830                format,
24831                ppszformat as _,
24832            )
24833            .ok()
24834        }
24835    }
24836    pub unsafe fn EnumAddressTypes(
24837        &self,
24838        dwadrtypes: u32,
24839        dwprops: u32,
24840    ) -> windows_core::Result<IMimeEnumAddressTypes> {
24841        unsafe {
24842            let mut result__ = core::mem::zeroed();
24843            (windows_core::Interface::vtable(self).EnumAddressTypes)(
24844                windows_core::Interface::as_raw(self),
24845                dwadrtypes,
24846                dwprops,
24847                &mut result__,
24848            )
24849            .and_then(|| windows_core::Type::from_abi(result__))
24850        }
24851    }
24852    pub unsafe fn SplitMessage(&self, cbmaxpart: u32) -> windows_core::Result<IMimeMessageParts> {
24853        unsafe {
24854            let mut result__ = core::mem::zeroed();
24855            (windows_core::Interface::vtable(self).SplitMessage)(
24856                windows_core::Interface::as_raw(self),
24857                cbmaxpart,
24858                &mut result__,
24859            )
24860            .and_then(|| windows_core::Type::from_abi(result__))
24861        }
24862    }
24863    pub unsafe fn GetRootMoniker(
24864        &self,
24865    ) -> windows_core::Result<windows::Win32::System::Com::IMoniker> {
24866        unsafe {
24867            let mut result__ = core::mem::zeroed();
24868            (windows_core::Interface::vtable(self).GetRootMoniker)(
24869                windows_core::Interface::as_raw(self),
24870                &mut result__,
24871            )
24872            .and_then(|| windows_core::Type::from_abi(result__))
24873        }
24874    }
24875}
24876#[repr(C)]
24877pub struct IMimeMessage_Vtbl {
24878    pub base__: IMimeMessageTree_Vtbl,
24879    pub CreateWebPage: unsafe extern "system" fn(
24880        *mut core::ffi::c_void,
24881        *mut core::ffi::c_void,
24882        *mut WEBPAGEOPTIONS,
24883        *mut core::ffi::c_void,
24884        *mut *mut core::ffi::c_void,
24885    ) -> windows_core::HRESULT,
24886    pub GetPropA: unsafe extern "system" fn(
24887        *mut core::ffi::c_void,
24888        windows_core::PCSTR,
24889        u32,
24890        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24891    ) -> windows_core::HRESULT,
24892    pub SetPropA: 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 DeleteProp: unsafe extern "system" fn(
24899        *mut core::ffi::c_void,
24900        windows_core::PCSTR,
24901    ) -> windows_core::HRESULT,
24902    pub QueryProp: unsafe extern "system" fn(
24903        *mut core::ffi::c_void,
24904        windows_core::PCSTR,
24905        windows_core::PCSTR,
24906        u8,
24907        u8,
24908    ) -> windows_core::HRESULT,
24909    pub GetTextBody: unsafe extern "system" fn(
24910        *mut core::ffi::c_void,
24911        u32,
24912        ENCODINGTYPE,
24913        *mut *mut core::ffi::c_void,
24914        *mut *mut HBODY__,
24915    ) -> windows_core::HRESULT,
24916    pub SetTextBody: unsafe extern "system" fn(
24917        *mut core::ffi::c_void,
24918        u32,
24919        ENCODINGTYPE,
24920        *mut HBODY__,
24921        *mut core::ffi::c_void,
24922        *mut *mut HBODY__,
24923    ) -> windows_core::HRESULT,
24924    pub AttachObject: unsafe extern "system" fn(
24925        *mut core::ffi::c_void,
24926        *const windows_core::GUID,
24927        *mut core::ffi::c_void,
24928        *mut *mut HBODY__,
24929    ) -> windows_core::HRESULT,
24930    pub AttachFile: unsafe extern "system" fn(
24931        *mut core::ffi::c_void,
24932        windows_core::PCSTR,
24933        *mut core::ffi::c_void,
24934        *mut *mut HBODY__,
24935    ) -> windows_core::HRESULT,
24936    pub AttachURL: unsafe extern "system" fn(
24937        *mut core::ffi::c_void,
24938        windows_core::PCSTR,
24939        windows_core::PCSTR,
24940        u32,
24941        *mut core::ffi::c_void,
24942        *mut windows_core::PSTR,
24943        *mut *mut HBODY__,
24944    ) -> windows_core::HRESULT,
24945    pub GetAttachments: unsafe extern "system" fn(
24946        *mut core::ffi::c_void,
24947        *mut u32,
24948        *mut *mut *mut HBODY__,
24949    ) -> windows_core::HRESULT,
24950    pub GetAddressTable: unsafe extern "system" fn(
24951        *mut core::ffi::c_void,
24952        *mut *mut core::ffi::c_void,
24953    ) -> windows_core::HRESULT,
24954    pub GetSender: unsafe extern "system" fn(
24955        *mut core::ffi::c_void,
24956        *mut ADDRESSPROPS,
24957    ) -> windows_core::HRESULT,
24958    pub GetAddressTypes: unsafe extern "system" fn(
24959        *mut core::ffi::c_void,
24960        u32,
24961        u32,
24962        *mut ADDRESSLIST,
24963    ) -> windows_core::HRESULT,
24964    pub GetAddressFormat: unsafe extern "system" fn(
24965        *mut core::ffi::c_void,
24966        u32,
24967        ADDRESSFORMAT,
24968        *mut windows_core::PSTR,
24969    ) -> windows_core::HRESULT,
24970    pub EnumAddressTypes: unsafe extern "system" fn(
24971        *mut core::ffi::c_void,
24972        u32,
24973        u32,
24974        *mut *mut core::ffi::c_void,
24975    ) -> windows_core::HRESULT,
24976    pub SplitMessage: unsafe extern "system" fn(
24977        *mut core::ffi::c_void,
24978        u32,
24979        *mut *mut core::ffi::c_void,
24980    ) -> windows_core::HRESULT,
24981    pub GetRootMoniker: unsafe extern "system" fn(
24982        *mut core::ffi::c_void,
24983        *mut *mut core::ffi::c_void,
24984    ) -> windows_core::HRESULT,
24985}
24986pub trait IMimeMessage_Impl: IMimeMessageTree_Impl {
24987    fn CreateWebPage(
24988        &self,
24989        prootstm: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
24990        poptions: *mut WEBPAGEOPTIONS,
24991        pcallback: windows_core::Ref<'_, IMimeMessageCallback>,
24992        ppmoniker: windows_core::OutRef<'_, windows::Win32::System::Com::IMoniker>,
24993    ) -> windows_core::Result<()>;
24994    fn GetPropA(
24995        &self,
24996        pszname: &windows_core::PCSTR,
24997        dwflags: u32,
24998        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24999    ) -> windows_core::Result<()>;
25000    fn SetPropA(
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 DeleteProp(&self, pszname: &windows_core::PCSTR) -> windows_core::Result<()>;
25007    fn QueryProp(
25008        &self,
25009        pszname: &windows_core::PCSTR,
25010        pszcriteria: &windows_core::PCSTR,
25011        fsubstring: u8,
25012        fcasesensitive: u8,
25013    ) -> windows_core::Result<()>;
25014    fn GetTextBody(
25015        &self,
25016        dwtxttype: u32,
25017        ietencoding: ENCODINGTYPE,
25018        ppstream: windows_core::OutRef<'_, windows::Win32::System::Com::IStream>,
25019        phbody: *mut *mut HBODY__,
25020    ) -> windows_core::Result<()>;
25021    fn SetTextBody(
25022        &self,
25023        dwtxttype: u32,
25024        ietencoding: ENCODINGTYPE,
25025        halternative: *mut HBODY__,
25026        pstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
25027        phbody: *mut *mut HBODY__,
25028    ) -> windows_core::Result<()>;
25029    fn AttachObject(
25030        &self,
25031        riid: *const windows_core::GUID,
25032        pvobject: *mut core::ffi::c_void,
25033        phbody: *mut *mut HBODY__,
25034    ) -> windows_core::Result<()>;
25035    fn AttachFile(
25036        &self,
25037        pszfilepath: &windows_core::PCSTR,
25038        pstmfile: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
25039        phbody: *mut *mut HBODY__,
25040    ) -> windows_core::Result<()>;
25041    fn AttachURL(
25042        &self,
25043        pszbase: &windows_core::PCSTR,
25044        pszurl: &windows_core::PCSTR,
25045        dwflags: u32,
25046        pstmurl: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
25047        ppszcidurl: *mut windows_core::PSTR,
25048        phbody: *mut *mut HBODY__,
25049    ) -> windows_core::Result<()>;
25050    fn GetAttachments(
25051        &self,
25052        pcattach: *mut u32,
25053        pprghattach: *mut *mut *mut HBODY__,
25054    ) -> windows_core::Result<()>;
25055    fn GetAddressTable(&self) -> windows_core::Result<IMimeAddressTable>;
25056    fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()>;
25057    fn GetAddressTypes(
25058        &self,
25059        dwadrtypes: u32,
25060        dwprops: u32,
25061        plist: *mut ADDRESSLIST,
25062    ) -> windows_core::Result<()>;
25063    fn GetAddressFormat(
25064        &self,
25065        dwadrtype: u32,
25066        format: ADDRESSFORMAT,
25067        ppszformat: *mut windows_core::PSTR,
25068    ) -> windows_core::Result<()>;
25069    fn EnumAddressTypes(
25070        &self,
25071        dwadrtypes: u32,
25072        dwprops: u32,
25073    ) -> windows_core::Result<IMimeEnumAddressTypes>;
25074    fn SplitMessage(&self, cbmaxpart: u32) -> windows_core::Result<IMimeMessageParts>;
25075    fn GetRootMoniker(&self) -> windows_core::Result<windows::Win32::System::Com::IMoniker>;
25076}
25077impl IMimeMessage_Vtbl {
25078    pub const fn new<Identity: IMimeMessage_Impl, const OFFSET: isize>() -> Self {
25079        unsafe extern "system" fn CreateWebPage<
25080            Identity: IMimeMessage_Impl,
25081            const OFFSET: isize,
25082        >(
25083            this: *mut core::ffi::c_void,
25084            prootstm: *mut core::ffi::c_void,
25085            poptions: *mut WEBPAGEOPTIONS,
25086            pcallback: *mut core::ffi::c_void,
25087            ppmoniker: *mut *mut core::ffi::c_void,
25088        ) -> windows_core::HRESULT {
25089            unsafe {
25090                let this: &Identity =
25091                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25092                IMimeMessage_Impl::CreateWebPage(
25093                    this,
25094                    core::mem::transmute_copy(&prootstm),
25095                    core::mem::transmute_copy(&poptions),
25096                    core::mem::transmute_copy(&pcallback),
25097                    core::mem::transmute_copy(&ppmoniker),
25098                )
25099                .into()
25100            }
25101        }
25102        unsafe extern "system" fn GetPropA<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25103            this: *mut core::ffi::c_void,
25104            pszname: windows_core::PCSTR,
25105            dwflags: u32,
25106            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
25107        ) -> windows_core::HRESULT {
25108            unsafe {
25109                let this: &Identity =
25110                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25111                IMimeMessage_Impl::GetPropA(
25112                    this,
25113                    core::mem::transmute(&pszname),
25114                    core::mem::transmute_copy(&dwflags),
25115                    core::mem::transmute_copy(&pvalue),
25116                )
25117                .into()
25118            }
25119        }
25120        unsafe extern "system" fn SetPropA<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25121            this: *mut core::ffi::c_void,
25122            pszname: windows_core::PCSTR,
25123            dwflags: u32,
25124            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
25125        ) -> windows_core::HRESULT {
25126            unsafe {
25127                let this: &Identity =
25128                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25129                IMimeMessage_Impl::SetPropA(
25130                    this,
25131                    core::mem::transmute(&pszname),
25132                    core::mem::transmute_copy(&dwflags),
25133                    core::mem::transmute_copy(&pvalue),
25134                )
25135                .into()
25136            }
25137        }
25138        unsafe extern "system" fn DeleteProp<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25139            this: *mut core::ffi::c_void,
25140            pszname: windows_core::PCSTR,
25141        ) -> windows_core::HRESULT {
25142            unsafe {
25143                let this: &Identity =
25144                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25145                IMimeMessage_Impl::DeleteProp(this, core::mem::transmute(&pszname)).into()
25146            }
25147        }
25148        unsafe extern "system" fn QueryProp<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25149            this: *mut core::ffi::c_void,
25150            pszname: windows_core::PCSTR,
25151            pszcriteria: windows_core::PCSTR,
25152            fsubstring: u8,
25153            fcasesensitive: u8,
25154        ) -> windows_core::HRESULT {
25155            unsafe {
25156                let this: &Identity =
25157                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25158                IMimeMessage_Impl::QueryProp(
25159                    this,
25160                    core::mem::transmute(&pszname),
25161                    core::mem::transmute(&pszcriteria),
25162                    core::mem::transmute_copy(&fsubstring),
25163                    core::mem::transmute_copy(&fcasesensitive),
25164                )
25165                .into()
25166            }
25167        }
25168        unsafe extern "system" fn GetTextBody<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25169            this: *mut core::ffi::c_void,
25170            dwtxttype: u32,
25171            ietencoding: ENCODINGTYPE,
25172            ppstream: *mut *mut core::ffi::c_void,
25173            phbody: *mut *mut HBODY__,
25174        ) -> windows_core::HRESULT {
25175            unsafe {
25176                let this: &Identity =
25177                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25178                IMimeMessage_Impl::GetTextBody(
25179                    this,
25180                    core::mem::transmute_copy(&dwtxttype),
25181                    core::mem::transmute_copy(&ietencoding),
25182                    core::mem::transmute_copy(&ppstream),
25183                    core::mem::transmute_copy(&phbody),
25184                )
25185                .into()
25186            }
25187        }
25188        unsafe extern "system" fn SetTextBody<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25189            this: *mut core::ffi::c_void,
25190            dwtxttype: u32,
25191            ietencoding: ENCODINGTYPE,
25192            halternative: *mut HBODY__,
25193            pstream: *mut core::ffi::c_void,
25194            phbody: *mut *mut HBODY__,
25195        ) -> windows_core::HRESULT {
25196            unsafe {
25197                let this: &Identity =
25198                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25199                IMimeMessage_Impl::SetTextBody(
25200                    this,
25201                    core::mem::transmute_copy(&dwtxttype),
25202                    core::mem::transmute_copy(&ietencoding),
25203                    core::mem::transmute_copy(&halternative),
25204                    core::mem::transmute_copy(&pstream),
25205                    core::mem::transmute_copy(&phbody),
25206                )
25207                .into()
25208            }
25209        }
25210        unsafe extern "system" fn AttachObject<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25211            this: *mut core::ffi::c_void,
25212            riid: *const windows_core::GUID,
25213            pvobject: *mut core::ffi::c_void,
25214            phbody: *mut *mut HBODY__,
25215        ) -> windows_core::HRESULT {
25216            unsafe {
25217                let this: &Identity =
25218                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25219                IMimeMessage_Impl::AttachObject(
25220                    this,
25221                    core::mem::transmute_copy(&riid),
25222                    core::mem::transmute_copy(&pvobject),
25223                    core::mem::transmute_copy(&phbody),
25224                )
25225                .into()
25226            }
25227        }
25228        unsafe extern "system" fn AttachFile<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25229            this: *mut core::ffi::c_void,
25230            pszfilepath: windows_core::PCSTR,
25231            pstmfile: *mut core::ffi::c_void,
25232            phbody: *mut *mut HBODY__,
25233        ) -> windows_core::HRESULT {
25234            unsafe {
25235                let this: &Identity =
25236                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25237                IMimeMessage_Impl::AttachFile(
25238                    this,
25239                    core::mem::transmute(&pszfilepath),
25240                    core::mem::transmute_copy(&pstmfile),
25241                    core::mem::transmute_copy(&phbody),
25242                )
25243                .into()
25244            }
25245        }
25246        unsafe extern "system" fn AttachURL<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25247            this: *mut core::ffi::c_void,
25248            pszbase: windows_core::PCSTR,
25249            pszurl: windows_core::PCSTR,
25250            dwflags: u32,
25251            pstmurl: *mut core::ffi::c_void,
25252            ppszcidurl: *mut windows_core::PSTR,
25253            phbody: *mut *mut HBODY__,
25254        ) -> windows_core::HRESULT {
25255            unsafe {
25256                let this: &Identity =
25257                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25258                IMimeMessage_Impl::AttachURL(
25259                    this,
25260                    core::mem::transmute(&pszbase),
25261                    core::mem::transmute(&pszurl),
25262                    core::mem::transmute_copy(&dwflags),
25263                    core::mem::transmute_copy(&pstmurl),
25264                    core::mem::transmute_copy(&ppszcidurl),
25265                    core::mem::transmute_copy(&phbody),
25266                )
25267                .into()
25268            }
25269        }
25270        unsafe extern "system" fn GetAttachments<
25271            Identity: IMimeMessage_Impl,
25272            const OFFSET: isize,
25273        >(
25274            this: *mut core::ffi::c_void,
25275            pcattach: *mut u32,
25276            pprghattach: *mut *mut *mut HBODY__,
25277        ) -> windows_core::HRESULT {
25278            unsafe {
25279                let this: &Identity =
25280                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25281                IMimeMessage_Impl::GetAttachments(
25282                    this,
25283                    core::mem::transmute_copy(&pcattach),
25284                    core::mem::transmute_copy(&pprghattach),
25285                )
25286                .into()
25287            }
25288        }
25289        unsafe extern "system" fn GetAddressTable<
25290            Identity: IMimeMessage_Impl,
25291            const OFFSET: isize,
25292        >(
25293            this: *mut core::ffi::c_void,
25294            pptable: *mut *mut core::ffi::c_void,
25295        ) -> windows_core::HRESULT {
25296            unsafe {
25297                let this: &Identity =
25298                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25299                match IMimeMessage_Impl::GetAddressTable(this) {
25300                    Ok(ok__) => {
25301                        pptable.write(core::mem::transmute(ok__));
25302                        windows_core::HRESULT(0)
25303                    }
25304                    Err(err) => err.into(),
25305                }
25306            }
25307        }
25308        unsafe extern "system" fn GetSender<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25309            this: *mut core::ffi::c_void,
25310            paddress: *mut ADDRESSPROPS,
25311        ) -> windows_core::HRESULT {
25312            unsafe {
25313                let this: &Identity =
25314                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25315                IMimeMessage_Impl::GetSender(this, core::mem::transmute_copy(&paddress)).into()
25316            }
25317        }
25318        unsafe extern "system" fn GetAddressTypes<
25319            Identity: IMimeMessage_Impl,
25320            const OFFSET: isize,
25321        >(
25322            this: *mut core::ffi::c_void,
25323            dwadrtypes: u32,
25324            dwprops: u32,
25325            plist: *mut ADDRESSLIST,
25326        ) -> windows_core::HRESULT {
25327            unsafe {
25328                let this: &Identity =
25329                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25330                IMimeMessage_Impl::GetAddressTypes(
25331                    this,
25332                    core::mem::transmute_copy(&dwadrtypes),
25333                    core::mem::transmute_copy(&dwprops),
25334                    core::mem::transmute_copy(&plist),
25335                )
25336                .into()
25337            }
25338        }
25339        unsafe extern "system" fn GetAddressFormat<
25340            Identity: IMimeMessage_Impl,
25341            const OFFSET: isize,
25342        >(
25343            this: *mut core::ffi::c_void,
25344            dwadrtype: u32,
25345            format: ADDRESSFORMAT,
25346            ppszformat: *mut windows_core::PSTR,
25347        ) -> windows_core::HRESULT {
25348            unsafe {
25349                let this: &Identity =
25350                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25351                IMimeMessage_Impl::GetAddressFormat(
25352                    this,
25353                    core::mem::transmute_copy(&dwadrtype),
25354                    core::mem::transmute_copy(&format),
25355                    core::mem::transmute_copy(&ppszformat),
25356                )
25357                .into()
25358            }
25359        }
25360        unsafe extern "system" fn EnumAddressTypes<
25361            Identity: IMimeMessage_Impl,
25362            const OFFSET: isize,
25363        >(
25364            this: *mut core::ffi::c_void,
25365            dwadrtypes: u32,
25366            dwprops: u32,
25367            ppenum: *mut *mut core::ffi::c_void,
25368        ) -> windows_core::HRESULT {
25369            unsafe {
25370                let this: &Identity =
25371                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25372                match IMimeMessage_Impl::EnumAddressTypes(
25373                    this,
25374                    core::mem::transmute_copy(&dwadrtypes),
25375                    core::mem::transmute_copy(&dwprops),
25376                ) {
25377                    Ok(ok__) => {
25378                        ppenum.write(core::mem::transmute(ok__));
25379                        windows_core::HRESULT(0)
25380                    }
25381                    Err(err) => err.into(),
25382                }
25383            }
25384        }
25385        unsafe extern "system" fn SplitMessage<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25386            this: *mut core::ffi::c_void,
25387            cbmaxpart: u32,
25388            ppparts: *mut *mut core::ffi::c_void,
25389        ) -> windows_core::HRESULT {
25390            unsafe {
25391                let this: &Identity =
25392                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25393                match IMimeMessage_Impl::SplitMessage(this, core::mem::transmute_copy(&cbmaxpart)) {
25394                    Ok(ok__) => {
25395                        ppparts.write(core::mem::transmute(ok__));
25396                        windows_core::HRESULT(0)
25397                    }
25398                    Err(err) => err.into(),
25399                }
25400            }
25401        }
25402        unsafe extern "system" fn GetRootMoniker<
25403            Identity: IMimeMessage_Impl,
25404            const OFFSET: isize,
25405        >(
25406            this: *mut core::ffi::c_void,
25407            ppmoniker: *mut *mut core::ffi::c_void,
25408        ) -> windows_core::HRESULT {
25409            unsafe {
25410                let this: &Identity =
25411                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25412                match IMimeMessage_Impl::GetRootMoniker(this) {
25413                    Ok(ok__) => {
25414                        ppmoniker.write(core::mem::transmute(ok__));
25415                        windows_core::HRESULT(0)
25416                    }
25417                    Err(err) => err.into(),
25418                }
25419            }
25420        }
25421        Self {
25422            base__: IMimeMessageTree_Vtbl::new::<Identity, OFFSET>(),
25423            CreateWebPage: CreateWebPage::<Identity, OFFSET>,
25424            GetPropA: GetPropA::<Identity, OFFSET>,
25425            SetPropA: SetPropA::<Identity, OFFSET>,
25426            DeleteProp: DeleteProp::<Identity, OFFSET>,
25427            QueryProp: QueryProp::<Identity, OFFSET>,
25428            GetTextBody: GetTextBody::<Identity, OFFSET>,
25429            SetTextBody: SetTextBody::<Identity, OFFSET>,
25430            AttachObject: AttachObject::<Identity, OFFSET>,
25431            AttachFile: AttachFile::<Identity, OFFSET>,
25432            AttachURL: AttachURL::<Identity, OFFSET>,
25433            GetAttachments: GetAttachments::<Identity, OFFSET>,
25434            GetAddressTable: GetAddressTable::<Identity, OFFSET>,
25435            GetSender: GetSender::<Identity, OFFSET>,
25436            GetAddressTypes: GetAddressTypes::<Identity, OFFSET>,
25437            GetAddressFormat: GetAddressFormat::<Identity, OFFSET>,
25438            EnumAddressTypes: EnumAddressTypes::<Identity, OFFSET>,
25439            SplitMessage: SplitMessage::<Identity, OFFSET>,
25440            GetRootMoniker: GetRootMoniker::<Identity, OFFSET>,
25441        }
25442    }
25443    pub fn matches(iid: &windows_core::GUID) -> bool {
25444        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
25445    }
25446}
25447impl windows_core::RuntimeName for IMimeMessage {}
25448windows_core::imp::define_interface!(
25449    IMimeMessageCallback,
25450    IMimeMessageCallback_Vtbl,
25451    0x761aa641_7bda_11d1_8aa9_00c04fb951f3
25452);
25453windows_core::imp::interface_hierarchy!(IMimeMessageCallback, windows_core::IUnknown);
25454impl IMimeMessageCallback {
25455    pub unsafe fn OnWebPageSplitter<P1>(
25456        &self,
25457        cinlined: u32,
25458        ppstream: P1,
25459    ) -> windows_core::Result<()>
25460    where
25461        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
25462    {
25463        unsafe {
25464            (windows_core::Interface::vtable(self).OnWebPageSplitter)(
25465                windows_core::Interface::as_raw(self),
25466                cinlined,
25467                ppstream.param().abi(),
25468            )
25469            .ok()
25470        }
25471    }
25472}
25473#[repr(C)]
25474pub struct IMimeMessageCallback_Vtbl {
25475    pub base__: windows_core::IUnknown_Vtbl,
25476    pub OnWebPageSplitter: unsafe extern "system" fn(
25477        *mut core::ffi::c_void,
25478        u32,
25479        *mut core::ffi::c_void,
25480    ) -> windows_core::HRESULT,
25481}
25482pub trait IMimeMessageCallback_Impl: windows_core::IUnknownImpl {
25483    fn OnWebPageSplitter(
25484        &self,
25485        cinlined: u32,
25486        ppstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
25487    ) -> windows_core::Result<()>;
25488}
25489impl IMimeMessageCallback_Vtbl {
25490    pub const fn new<Identity: IMimeMessageCallback_Impl, const OFFSET: isize>() -> Self {
25491        unsafe extern "system" fn OnWebPageSplitter<
25492            Identity: IMimeMessageCallback_Impl,
25493            const OFFSET: isize,
25494        >(
25495            this: *mut core::ffi::c_void,
25496            cinlined: u32,
25497            ppstream: *mut core::ffi::c_void,
25498        ) -> windows_core::HRESULT {
25499            unsafe {
25500                let this: &Identity =
25501                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25502                IMimeMessageCallback_Impl::OnWebPageSplitter(
25503                    this,
25504                    core::mem::transmute_copy(&cinlined),
25505                    core::mem::transmute_copy(&ppstream),
25506                )
25507                .into()
25508            }
25509        }
25510        Self {
25511            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25512            OnWebPageSplitter: OnWebPageSplitter::<Identity, OFFSET>,
25513        }
25514    }
25515    pub fn matches(iid: &windows_core::GUID) -> bool {
25516        iid == &<IMimeMessageCallback as windows_core::Interface>::IID
25517    }
25518}
25519impl windows_core::RuntimeName for IMimeMessageCallback {}
25520windows_core::imp::define_interface!(
25521    IMimeMessageParts,
25522    IMimeMessageParts_Vtbl,
25523    0xc558834f_7f86_11d0_8252_00c04fd85ab4
25524);
25525windows_core::imp::interface_hierarchy!(IMimeMessageParts, windows_core::IUnknown);
25526impl IMimeMessageParts {
25527    pub unsafe fn CombineParts(&self) -> windows_core::Result<IMimeMessage> {
25528        unsafe {
25529            let mut result__ = core::mem::zeroed();
25530            (windows_core::Interface::vtable(self).CombineParts)(
25531                windows_core::Interface::as_raw(self),
25532                &mut result__,
25533            )
25534            .and_then(|| windows_core::Type::from_abi(result__))
25535        }
25536    }
25537    pub unsafe fn AddPart<P0>(&self, pmessage: P0) -> windows_core::Result<()>
25538    where
25539        P0: windows_core::Param<IMimeMessage>,
25540    {
25541        unsafe {
25542            (windows_core::Interface::vtable(self).AddPart)(
25543                windows_core::Interface::as_raw(self),
25544                pmessage.param().abi(),
25545            )
25546            .ok()
25547        }
25548    }
25549    pub unsafe fn SetMaxParts(&self, cparts: u32) -> windows_core::Result<()> {
25550        unsafe {
25551            (windows_core::Interface::vtable(self).SetMaxParts)(
25552                windows_core::Interface::as_raw(self),
25553                cparts,
25554            )
25555            .ok()
25556        }
25557    }
25558    pub unsafe fn CountParts(&self, pcparts: *mut u32) -> windows_core::Result<()> {
25559        unsafe {
25560            (windows_core::Interface::vtable(self).CountParts)(
25561                windows_core::Interface::as_raw(self),
25562                pcparts as _,
25563            )
25564            .ok()
25565        }
25566    }
25567    pub unsafe fn EnumParts(&self) -> windows_core::Result<IMimeEnumMessageParts> {
25568        unsafe {
25569            let mut result__ = core::mem::zeroed();
25570            (windows_core::Interface::vtable(self).EnumParts)(
25571                windows_core::Interface::as_raw(self),
25572                &mut result__,
25573            )
25574            .and_then(|| windows_core::Type::from_abi(result__))
25575        }
25576    }
25577}
25578#[repr(C)]
25579pub struct IMimeMessageParts_Vtbl {
25580    pub base__: windows_core::IUnknown_Vtbl,
25581    pub CombineParts: unsafe extern "system" fn(
25582        *mut core::ffi::c_void,
25583        *mut *mut core::ffi::c_void,
25584    ) -> windows_core::HRESULT,
25585    pub AddPart: unsafe extern "system" fn(
25586        *mut core::ffi::c_void,
25587        *mut core::ffi::c_void,
25588    ) -> windows_core::HRESULT,
25589    pub SetMaxParts:
25590        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
25591    pub CountParts:
25592        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
25593    pub EnumParts: unsafe extern "system" fn(
25594        *mut core::ffi::c_void,
25595        *mut *mut core::ffi::c_void,
25596    ) -> windows_core::HRESULT,
25597}
25598pub trait IMimeMessageParts_Impl: windows_core::IUnknownImpl {
25599    fn CombineParts(&self) -> windows_core::Result<IMimeMessage>;
25600    fn AddPart(&self, pmessage: windows_core::Ref<'_, IMimeMessage>) -> windows_core::Result<()>;
25601    fn SetMaxParts(&self, cparts: u32) -> windows_core::Result<()>;
25602    fn CountParts(&self, pcparts: *mut u32) -> windows_core::Result<()>;
25603    fn EnumParts(&self) -> windows_core::Result<IMimeEnumMessageParts>;
25604}
25605impl IMimeMessageParts_Vtbl {
25606    pub const fn new<Identity: IMimeMessageParts_Impl, const OFFSET: isize>() -> Self {
25607        unsafe extern "system" fn CombineParts<
25608            Identity: IMimeMessageParts_Impl,
25609            const OFFSET: isize,
25610        >(
25611            this: *mut core::ffi::c_void,
25612            ppmessage: *mut *mut core::ffi::c_void,
25613        ) -> windows_core::HRESULT {
25614            unsafe {
25615                let this: &Identity =
25616                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25617                match IMimeMessageParts_Impl::CombineParts(this) {
25618                    Ok(ok__) => {
25619                        ppmessage.write(core::mem::transmute(ok__));
25620                        windows_core::HRESULT(0)
25621                    }
25622                    Err(err) => err.into(),
25623                }
25624            }
25625        }
25626        unsafe extern "system" fn AddPart<Identity: IMimeMessageParts_Impl, const OFFSET: isize>(
25627            this: *mut core::ffi::c_void,
25628            pmessage: *mut core::ffi::c_void,
25629        ) -> windows_core::HRESULT {
25630            unsafe {
25631                let this: &Identity =
25632                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25633                IMimeMessageParts_Impl::AddPart(this, core::mem::transmute_copy(&pmessage)).into()
25634            }
25635        }
25636        unsafe extern "system" fn SetMaxParts<
25637            Identity: IMimeMessageParts_Impl,
25638            const OFFSET: isize,
25639        >(
25640            this: *mut core::ffi::c_void,
25641            cparts: u32,
25642        ) -> windows_core::HRESULT {
25643            unsafe {
25644                let this: &Identity =
25645                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25646                IMimeMessageParts_Impl::SetMaxParts(this, core::mem::transmute_copy(&cparts)).into()
25647            }
25648        }
25649        unsafe extern "system" fn CountParts<
25650            Identity: IMimeMessageParts_Impl,
25651            const OFFSET: isize,
25652        >(
25653            this: *mut core::ffi::c_void,
25654            pcparts: *mut u32,
25655        ) -> windows_core::HRESULT {
25656            unsafe {
25657                let this: &Identity =
25658                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25659                IMimeMessageParts_Impl::CountParts(this, core::mem::transmute_copy(&pcparts)).into()
25660            }
25661        }
25662        unsafe extern "system" fn EnumParts<
25663            Identity: IMimeMessageParts_Impl,
25664            const OFFSET: isize,
25665        >(
25666            this: *mut core::ffi::c_void,
25667            ppenum: *mut *mut core::ffi::c_void,
25668        ) -> windows_core::HRESULT {
25669            unsafe {
25670                let this: &Identity =
25671                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25672                match IMimeMessageParts_Impl::EnumParts(this) {
25673                    Ok(ok__) => {
25674                        ppenum.write(core::mem::transmute(ok__));
25675                        windows_core::HRESULT(0)
25676                    }
25677                    Err(err) => err.into(),
25678                }
25679            }
25680        }
25681        Self {
25682            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25683            CombineParts: CombineParts::<Identity, OFFSET>,
25684            AddPart: AddPart::<Identity, OFFSET>,
25685            SetMaxParts: SetMaxParts::<Identity, OFFSET>,
25686            CountParts: CountParts::<Identity, OFFSET>,
25687            EnumParts: EnumParts::<Identity, OFFSET>,
25688        }
25689    }
25690    pub fn matches(iid: &windows_core::GUID) -> bool {
25691        iid == &<IMimeMessageParts as windows_core::Interface>::IID
25692    }
25693}
25694impl windows_core::RuntimeName for IMimeMessageParts {}
25695windows_core::imp::define_interface!(
25696    IMimeMessageTree,
25697    IMimeMessageTree_Vtbl,
25698    0xfd853cd4_7f86_11d0_8252_00c04fd85ab4
25699);
25700impl core::ops::Deref for IMimeMessageTree {
25701    type Target = windows::Win32::System::Com::IPersistStreamInit;
25702    fn deref(&self) -> &Self::Target {
25703        unsafe { core::mem::transmute(self) }
25704    }
25705}
25706windows_core::imp::interface_hierarchy!(
25707    IMimeMessageTree,
25708    windows_core::IUnknown,
25709    windows::Win32::System::Com::IPersist,
25710    windows::Win32::System::Com::IPersistStreamInit
25711);
25712impl IMimeMessageTree {
25713    pub unsafe fn Save<P0>(&self, pstm: P0, fcleardirty: bool) -> windows_core::Result<()>
25714    where
25715        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
25716    {
25717        unsafe {
25718            (windows_core::Interface::vtable(self).Save)(
25719                windows_core::Interface::as_raw(self),
25720                pstm.param().abi(),
25721                fcleardirty.into(),
25722            )
25723            .ok()
25724        }
25725    }
25726    pub unsafe fn GetSizeMax(&self) -> windows_core::Result<u64> {
25727        unsafe {
25728            let mut result__ = core::mem::zeroed();
25729            (windows_core::Interface::vtable(self).GetSizeMax)(
25730                windows_core::Interface::as_raw(self),
25731                &mut result__,
25732            )
25733            .map(|| result__)
25734        }
25735    }
25736    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
25737        unsafe {
25738            (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self))
25739                .ok()
25740        }
25741    }
25742    pub unsafe fn GetMessageSource(
25743        &self,
25744        ppstream: *mut Option<windows::Win32::System::Com::IStream>,
25745        dwflags: u32,
25746    ) -> windows_core::Result<()> {
25747        unsafe {
25748            (windows_core::Interface::vtable(self).GetMessageSource)(
25749                windows_core::Interface::as_raw(self),
25750                core::mem::transmute(ppstream),
25751                dwflags,
25752            )
25753            .ok()
25754        }
25755    }
25756    pub unsafe fn GetMessageSize(
25757        &self,
25758        pcbsize: *mut u32,
25759        dwflags: u32,
25760    ) -> windows_core::Result<()> {
25761        unsafe {
25762            (windows_core::Interface::vtable(self).GetMessageSize)(
25763                windows_core::Interface::as_raw(self),
25764                pcbsize as _,
25765                dwflags,
25766            )
25767            .ok()
25768        }
25769    }
25770    pub unsafe fn LoadOffsetTable<P0>(&self, pstream: P0) -> windows_core::Result<()>
25771    where
25772        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
25773    {
25774        unsafe {
25775            (windows_core::Interface::vtable(self).LoadOffsetTable)(
25776                windows_core::Interface::as_raw(self),
25777                pstream.param().abi(),
25778            )
25779            .ok()
25780        }
25781    }
25782    pub unsafe fn SaveOffsetTable<P0>(&self, pstream: P0, dwflags: u32) -> windows_core::Result<()>
25783    where
25784        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
25785    {
25786        unsafe {
25787            (windows_core::Interface::vtable(self).SaveOffsetTable)(
25788                windows_core::Interface::as_raw(self),
25789                pstream.param().abi(),
25790                dwflags,
25791            )
25792            .ok()
25793        }
25794    }
25795    pub unsafe fn GetFlags(&self, pdwflags: *mut u32) -> windows_core::Result<()> {
25796        unsafe {
25797            (windows_core::Interface::vtable(self).GetFlags)(
25798                windows_core::Interface::as_raw(self),
25799                pdwflags as _,
25800            )
25801            .ok()
25802        }
25803    }
25804    pub unsafe fn Commit(&self, dwflags: u32) -> windows_core::Result<()> {
25805        unsafe {
25806            (windows_core::Interface::vtable(self).Commit)(
25807                windows_core::Interface::as_raw(self),
25808                dwflags,
25809            )
25810            .ok()
25811        }
25812    }
25813    pub unsafe fn HandsOffStorage(&self) -> windows_core::Result<()> {
25814        unsafe {
25815            (windows_core::Interface::vtable(self).HandsOffStorage)(
25816                windows_core::Interface::as_raw(self),
25817            )
25818            .ok()
25819        }
25820    }
25821    pub unsafe fn BindToObject(
25822        &self,
25823        hbody: *const HBODY__,
25824        riid: *const windows_core::GUID,
25825        ppvobject: *mut *mut core::ffi::c_void,
25826    ) -> windows_core::Result<()> {
25827        unsafe {
25828            (windows_core::Interface::vtable(self).BindToObject)(
25829                windows_core::Interface::as_raw(self),
25830                hbody,
25831                riid,
25832                ppvobject as _,
25833            )
25834            .ok()
25835        }
25836    }
25837    pub unsafe fn SaveBody<P2>(
25838        &self,
25839        hbody: *mut HBODY__,
25840        dwflags: u32,
25841        pstream: P2,
25842    ) -> windows_core::Result<()>
25843    where
25844        P2: windows_core::Param<windows::Win32::System::Com::IStream>,
25845    {
25846        unsafe {
25847            (windows_core::Interface::vtable(self).SaveBody)(
25848                windows_core::Interface::as_raw(self),
25849                hbody as _,
25850                dwflags,
25851                pstream.param().abi(),
25852            )
25853            .ok()
25854        }
25855    }
25856    pub unsafe fn InsertBody(
25857        &self,
25858        location: BODYLOCATION,
25859        hpivot: *mut HBODY__,
25860        phbody: *mut *mut HBODY__,
25861    ) -> windows_core::Result<()> {
25862        unsafe {
25863            (windows_core::Interface::vtable(self).InsertBody)(
25864                windows_core::Interface::as_raw(self),
25865                location,
25866                hpivot as _,
25867                phbody as _,
25868            )
25869            .ok()
25870        }
25871    }
25872    pub unsafe fn GetBody(
25873        &self,
25874        location: BODYLOCATION,
25875        hpivot: *mut HBODY__,
25876        phbody: *mut *mut HBODY__,
25877    ) -> windows_core::Result<()> {
25878        unsafe {
25879            (windows_core::Interface::vtable(self).GetBody)(
25880                windows_core::Interface::as_raw(self),
25881                location,
25882                hpivot as _,
25883                phbody as _,
25884            )
25885            .ok()
25886        }
25887    }
25888    pub unsafe fn DeleteBody(&self, hbody: *mut HBODY__, dwflags: u32) -> windows_core::Result<()> {
25889        unsafe {
25890            (windows_core::Interface::vtable(self).DeleteBody)(
25891                windows_core::Interface::as_raw(self),
25892                hbody as _,
25893                dwflags,
25894            )
25895            .ok()
25896        }
25897    }
25898    pub unsafe fn MoveBody(
25899        &self,
25900        hbody: *mut HBODY__,
25901        location: BODYLOCATION,
25902    ) -> windows_core::Result<()> {
25903        unsafe {
25904            (windows_core::Interface::vtable(self).MoveBody)(
25905                windows_core::Interface::as_raw(self),
25906                hbody as _,
25907                location,
25908            )
25909            .ok()
25910        }
25911    }
25912    pub unsafe fn CountBodies(
25913        &self,
25914        hparent: *mut HBODY__,
25915        frecurse: u8,
25916        pcbodies: *mut u32,
25917    ) -> windows_core::Result<()> {
25918        unsafe {
25919            (windows_core::Interface::vtable(self).CountBodies)(
25920                windows_core::Interface::as_raw(self),
25921                hparent as _,
25922                frecurse,
25923                pcbodies as _,
25924            )
25925            .ok()
25926        }
25927    }
25928    pub unsafe fn FindFirst(
25929        &self,
25930        pfindbody: *mut FINDBODY,
25931        phbody: *mut *mut HBODY__,
25932    ) -> windows_core::Result<()> {
25933        unsafe {
25934            (windows_core::Interface::vtable(self).FindFirst)(
25935                windows_core::Interface::as_raw(self),
25936                pfindbody as _,
25937                phbody as _,
25938            )
25939            .ok()
25940        }
25941    }
25942    pub unsafe fn FindNext(
25943        &self,
25944        pfindbody: *mut FINDBODY,
25945        phbody: *mut *mut HBODY__,
25946    ) -> windows_core::Result<()> {
25947        unsafe {
25948            (windows_core::Interface::vtable(self).FindNext)(
25949                windows_core::Interface::as_raw(self),
25950                pfindbody as _,
25951                phbody as _,
25952            )
25953            .ok()
25954        }
25955    }
25956    pub unsafe fn ResolveURL<P1, P2>(
25957        &self,
25958        hrelated: *mut HBODY__,
25959        pszbase: P1,
25960        pszurl: P2,
25961        dwflags: u32,
25962        phbody: *mut *mut HBODY__,
25963    ) -> windows_core::Result<()>
25964    where
25965        P1: windows_core::Param<windows_core::PCSTR>,
25966        P2: windows_core::Param<windows_core::PCSTR>,
25967    {
25968        unsafe {
25969            (windows_core::Interface::vtable(self).ResolveURL)(
25970                windows_core::Interface::as_raw(self),
25971                hrelated as _,
25972                pszbase.param().abi(),
25973                pszurl.param().abi(),
25974                dwflags,
25975                phbody as _,
25976            )
25977            .ok()
25978        }
25979    }
25980    pub unsafe fn ToMultipart<P1>(
25981        &self,
25982        hbody: *mut HBODY__,
25983        pszsubtype: P1,
25984        phmultipart: *mut *mut HBODY__,
25985    ) -> windows_core::Result<()>
25986    where
25987        P1: windows_core::Param<windows_core::PCSTR>,
25988    {
25989        unsafe {
25990            (windows_core::Interface::vtable(self).ToMultipart)(
25991                windows_core::Interface::as_raw(self),
25992                hbody as _,
25993                pszsubtype.param().abi(),
25994                phmultipart as _,
25995            )
25996            .ok()
25997        }
25998    }
25999    pub unsafe fn GetBodyOffsets(
26000        &self,
26001        hbody: *mut HBODY__,
26002        poffsets: *mut BODYOFFSETS,
26003    ) -> windows_core::Result<()> {
26004        unsafe {
26005            (windows_core::Interface::vtable(self).GetBodyOffsets)(
26006                windows_core::Interface::as_raw(self),
26007                hbody as _,
26008                poffsets as _,
26009            )
26010            .ok()
26011        }
26012    }
26013    pub unsafe fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()> {
26014        unsafe {
26015            (windows_core::Interface::vtable(self).GetCharset)(
26016                windows_core::Interface::as_raw(self),
26017                phcharset as _,
26018            )
26019            .ok()
26020        }
26021    }
26022    pub unsafe fn SetCharset(
26023        &self,
26024        hcharset: *mut HCHARSET__,
26025        applytype: CSETAPPLYTYPE,
26026    ) -> windows_core::Result<()> {
26027        unsafe {
26028            (windows_core::Interface::vtable(self).SetCharset)(
26029                windows_core::Interface::as_raw(self),
26030                hcharset as _,
26031                applytype,
26032            )
26033            .ok()
26034        }
26035    }
26036    pub unsafe fn IsBodyType(
26037        &self,
26038        hbody: *mut HBODY__,
26039        bodytype: IMSGBODYTYPE,
26040    ) -> windows_core::Result<()> {
26041        unsafe {
26042            (windows_core::Interface::vtable(self).IsBodyType)(
26043                windows_core::Interface::as_raw(self),
26044                hbody as _,
26045                bodytype,
26046            )
26047            .ok()
26048        }
26049    }
26050    pub unsafe fn IsContentType<P1, P2>(
26051        &self,
26052        hbody: *mut HBODY__,
26053        pszpritype: P1,
26054        pszsubtype: P2,
26055    ) -> windows_core::Result<()>
26056    where
26057        P1: windows_core::Param<windows_core::PCSTR>,
26058        P2: windows_core::Param<windows_core::PCSTR>,
26059    {
26060        unsafe {
26061            (windows_core::Interface::vtable(self).IsContentType)(
26062                windows_core::Interface::as_raw(self),
26063                hbody as _,
26064                pszpritype.param().abi(),
26065                pszsubtype.param().abi(),
26066            )
26067            .ok()
26068        }
26069    }
26070    pub unsafe fn QueryBodyProp<P1, P2>(
26071        &self,
26072        hbody: *mut HBODY__,
26073        pszname: P1,
26074        pszcriteria: P2,
26075        fsubstring: u8,
26076        fcasesensitive: u8,
26077    ) -> windows_core::Result<()>
26078    where
26079        P1: windows_core::Param<windows_core::PCSTR>,
26080        P2: windows_core::Param<windows_core::PCSTR>,
26081    {
26082        unsafe {
26083            (windows_core::Interface::vtable(self).QueryBodyProp)(
26084                windows_core::Interface::as_raw(self),
26085                hbody as _,
26086                pszname.param().abi(),
26087                pszcriteria.param().abi(),
26088                fsubstring,
26089                fcasesensitive,
26090            )
26091            .ok()
26092        }
26093    }
26094    pub unsafe fn GetBodyProp<P1>(
26095        &self,
26096        hbody: *mut HBODY__,
26097        pszname: P1,
26098        dwflags: u32,
26099        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26100    ) -> windows_core::Result<()>
26101    where
26102        P1: windows_core::Param<windows_core::PCSTR>,
26103    {
26104        unsafe {
26105            (windows_core::Interface::vtable(self).GetBodyProp)(
26106                windows_core::Interface::as_raw(self),
26107                hbody as _,
26108                pszname.param().abi(),
26109                dwflags,
26110                core::mem::transmute(pvalue),
26111            )
26112            .ok()
26113        }
26114    }
26115    pub unsafe fn SetBodyProp<P1>(
26116        &self,
26117        hbody: *mut HBODY__,
26118        pszname: P1,
26119        dwflags: u32,
26120        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26121    ) -> windows_core::Result<()>
26122    where
26123        P1: windows_core::Param<windows_core::PCSTR>,
26124    {
26125        unsafe {
26126            (windows_core::Interface::vtable(self).SetBodyProp)(
26127                windows_core::Interface::as_raw(self),
26128                hbody as _,
26129                pszname.param().abi(),
26130                dwflags,
26131                core::mem::transmute(pvalue),
26132            )
26133            .ok()
26134        }
26135    }
26136    pub unsafe fn DeleteBodyProp<P1>(
26137        &self,
26138        hbody: *mut HBODY__,
26139        pszname: P1,
26140    ) -> windows_core::Result<()>
26141    where
26142        P1: windows_core::Param<windows_core::PCSTR>,
26143    {
26144        unsafe {
26145            (windows_core::Interface::vtable(self).DeleteBodyProp)(
26146                windows_core::Interface::as_raw(self),
26147                hbody as _,
26148                pszname.param().abi(),
26149            )
26150            .ok()
26151        }
26152    }
26153    pub unsafe fn SetOption(
26154        &self,
26155        oid: u32,
26156        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26157    ) -> windows_core::Result<()> {
26158        unsafe {
26159            (windows_core::Interface::vtable(self).SetOption)(
26160                windows_core::Interface::as_raw(self),
26161                oid,
26162                core::mem::transmute(pvalue),
26163            )
26164            .ok()
26165        }
26166    }
26167    pub unsafe fn GetOption(
26168        &self,
26169        oid: u32,
26170        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26171    ) -> windows_core::Result<()> {
26172        unsafe {
26173            (windows_core::Interface::vtable(self).GetOption)(
26174                windows_core::Interface::as_raw(self),
26175                oid,
26176                core::mem::transmute(pvalue),
26177            )
26178            .ok()
26179        }
26180    }
26181}
26182#[repr(C)]
26183pub struct IMimeMessageTree_Vtbl {
26184    pub base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl,
26185    pub Save: unsafe extern "system" fn(
26186        *mut core::ffi::c_void,
26187        *mut core::ffi::c_void,
26188        windows_core::BOOL,
26189    ) -> windows_core::HRESULT,
26190    pub GetSizeMax:
26191        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
26192    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
26193    pub GetMessageSource: unsafe extern "system" fn(
26194        *mut core::ffi::c_void,
26195        *mut *mut core::ffi::c_void,
26196        u32,
26197    ) -> windows_core::HRESULT,
26198    pub GetMessageSize:
26199        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32) -> windows_core::HRESULT,
26200    pub LoadOffsetTable: unsafe extern "system" fn(
26201        *mut core::ffi::c_void,
26202        *mut core::ffi::c_void,
26203    ) -> windows_core::HRESULT,
26204    pub SaveOffsetTable: unsafe extern "system" fn(
26205        *mut core::ffi::c_void,
26206        *mut core::ffi::c_void,
26207        u32,
26208    ) -> windows_core::HRESULT,
26209    pub GetFlags:
26210        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26211    pub Commit: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26212    pub HandsOffStorage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
26213    pub BindToObject: unsafe extern "system" fn(
26214        *mut core::ffi::c_void,
26215        *const HBODY__,
26216        *const windows_core::GUID,
26217        *mut *mut core::ffi::c_void,
26218    ) -> windows_core::HRESULT,
26219    pub SaveBody: unsafe extern "system" fn(
26220        *mut core::ffi::c_void,
26221        *mut HBODY__,
26222        u32,
26223        *mut core::ffi::c_void,
26224    ) -> windows_core::HRESULT,
26225    pub InsertBody: unsafe extern "system" fn(
26226        *mut core::ffi::c_void,
26227        BODYLOCATION,
26228        *mut HBODY__,
26229        *mut *mut HBODY__,
26230    ) -> windows_core::HRESULT,
26231    pub GetBody: unsafe extern "system" fn(
26232        *mut core::ffi::c_void,
26233        BODYLOCATION,
26234        *mut HBODY__,
26235        *mut *mut HBODY__,
26236    ) -> windows_core::HRESULT,
26237    pub DeleteBody: unsafe extern "system" fn(
26238        *mut core::ffi::c_void,
26239        *mut HBODY__,
26240        u32,
26241    ) -> windows_core::HRESULT,
26242    pub MoveBody: unsafe extern "system" fn(
26243        *mut core::ffi::c_void,
26244        *mut HBODY__,
26245        BODYLOCATION,
26246    ) -> windows_core::HRESULT,
26247    pub CountBodies: unsafe extern "system" fn(
26248        *mut core::ffi::c_void,
26249        *mut HBODY__,
26250        u8,
26251        *mut u32,
26252    ) -> windows_core::HRESULT,
26253    pub FindFirst: unsafe extern "system" fn(
26254        *mut core::ffi::c_void,
26255        *mut FINDBODY,
26256        *mut *mut HBODY__,
26257    ) -> windows_core::HRESULT,
26258    pub FindNext: unsafe extern "system" fn(
26259        *mut core::ffi::c_void,
26260        *mut FINDBODY,
26261        *mut *mut HBODY__,
26262    ) -> windows_core::HRESULT,
26263    pub ResolveURL: unsafe extern "system" fn(
26264        *mut core::ffi::c_void,
26265        *mut HBODY__,
26266        windows_core::PCSTR,
26267        windows_core::PCSTR,
26268        u32,
26269        *mut *mut HBODY__,
26270    ) -> windows_core::HRESULT,
26271    pub ToMultipart: unsafe extern "system" fn(
26272        *mut core::ffi::c_void,
26273        *mut HBODY__,
26274        windows_core::PCSTR,
26275        *mut *mut HBODY__,
26276    ) -> windows_core::HRESULT,
26277    pub GetBodyOffsets: unsafe extern "system" fn(
26278        *mut core::ffi::c_void,
26279        *mut HBODY__,
26280        *mut BODYOFFSETS,
26281    ) -> windows_core::HRESULT,
26282    pub GetCharset: unsafe extern "system" fn(
26283        *mut core::ffi::c_void,
26284        *mut *mut HCHARSET__,
26285    ) -> windows_core::HRESULT,
26286    pub SetCharset: unsafe extern "system" fn(
26287        *mut core::ffi::c_void,
26288        *mut HCHARSET__,
26289        CSETAPPLYTYPE,
26290    ) -> windows_core::HRESULT,
26291    pub IsBodyType: unsafe extern "system" fn(
26292        *mut core::ffi::c_void,
26293        *mut HBODY__,
26294        IMSGBODYTYPE,
26295    ) -> windows_core::HRESULT,
26296    pub IsContentType: unsafe extern "system" fn(
26297        *mut core::ffi::c_void,
26298        *mut HBODY__,
26299        windows_core::PCSTR,
26300        windows_core::PCSTR,
26301    ) -> windows_core::HRESULT,
26302    pub QueryBodyProp: unsafe extern "system" fn(
26303        *mut core::ffi::c_void,
26304        *mut HBODY__,
26305        windows_core::PCSTR,
26306        windows_core::PCSTR,
26307        u8,
26308        u8,
26309    ) -> windows_core::HRESULT,
26310    pub GetBodyProp: unsafe extern "system" fn(
26311        *mut core::ffi::c_void,
26312        *mut HBODY__,
26313        windows_core::PCSTR,
26314        u32,
26315        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26316    ) -> windows_core::HRESULT,
26317    pub SetBodyProp: unsafe extern "system" fn(
26318        *mut core::ffi::c_void,
26319        *mut HBODY__,
26320        windows_core::PCSTR,
26321        u32,
26322        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26323    ) -> windows_core::HRESULT,
26324    pub DeleteBodyProp: unsafe extern "system" fn(
26325        *mut core::ffi::c_void,
26326        *mut HBODY__,
26327        windows_core::PCSTR,
26328    ) -> windows_core::HRESULT,
26329    pub SetOption: unsafe extern "system" fn(
26330        *mut core::ffi::c_void,
26331        u32,
26332        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26333    ) -> windows_core::HRESULT,
26334    pub GetOption: unsafe extern "system" fn(
26335        *mut core::ffi::c_void,
26336        u32,
26337        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26338    ) -> windows_core::HRESULT,
26339}
26340pub trait IMimeMessageTree_Impl: windows::Win32::System::Com::IPersistStreamInit_Impl {
26341    fn Save(
26342        &self,
26343        pstm: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
26344        fcleardirty: windows_core::BOOL,
26345    ) -> windows_core::Result<()>;
26346    fn GetSizeMax(&self) -> windows_core::Result<u64>;
26347    fn InitNew(&self) -> windows_core::Result<()>;
26348    fn GetMessageSource(
26349        &self,
26350        ppstream: windows_core::OutRef<'_, windows::Win32::System::Com::IStream>,
26351        dwflags: u32,
26352    ) -> windows_core::Result<()>;
26353    fn GetMessageSize(&self, pcbsize: *mut u32, dwflags: u32) -> windows_core::Result<()>;
26354    fn LoadOffsetTable(
26355        &self,
26356        pstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
26357    ) -> windows_core::Result<()>;
26358    fn SaveOffsetTable(
26359        &self,
26360        pstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
26361        dwflags: u32,
26362    ) -> windows_core::Result<()>;
26363    fn GetFlags(&self, pdwflags: *mut u32) -> windows_core::Result<()>;
26364    fn Commit(&self, dwflags: u32) -> windows_core::Result<()>;
26365    fn HandsOffStorage(&self) -> windows_core::Result<()>;
26366    fn BindToObject(
26367        &self,
26368        hbody: *const HBODY__,
26369        riid: *const windows_core::GUID,
26370        ppvobject: *mut *mut core::ffi::c_void,
26371    ) -> windows_core::Result<()>;
26372    fn SaveBody(
26373        &self,
26374        hbody: *mut HBODY__,
26375        dwflags: u32,
26376        pstream: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
26377    ) -> windows_core::Result<()>;
26378    fn InsertBody(
26379        &self,
26380        location: BODYLOCATION,
26381        hpivot: *mut HBODY__,
26382        phbody: *mut *mut HBODY__,
26383    ) -> windows_core::Result<()>;
26384    fn GetBody(
26385        &self,
26386        location: BODYLOCATION,
26387        hpivot: *mut HBODY__,
26388        phbody: *mut *mut HBODY__,
26389    ) -> windows_core::Result<()>;
26390    fn DeleteBody(&self, hbody: *mut HBODY__, dwflags: u32) -> windows_core::Result<()>;
26391    fn MoveBody(&self, hbody: *mut HBODY__, location: BODYLOCATION) -> windows_core::Result<()>;
26392    fn CountBodies(
26393        &self,
26394        hparent: *mut HBODY__,
26395        frecurse: u8,
26396        pcbodies: *mut u32,
26397    ) -> windows_core::Result<()>;
26398    fn FindFirst(
26399        &self,
26400        pfindbody: *mut FINDBODY,
26401        phbody: *mut *mut HBODY__,
26402    ) -> windows_core::Result<()>;
26403    fn FindNext(
26404        &self,
26405        pfindbody: *mut FINDBODY,
26406        phbody: *mut *mut HBODY__,
26407    ) -> windows_core::Result<()>;
26408    fn ResolveURL(
26409        &self,
26410        hrelated: *mut HBODY__,
26411        pszbase: &windows_core::PCSTR,
26412        pszurl: &windows_core::PCSTR,
26413        dwflags: u32,
26414        phbody: *mut *mut HBODY__,
26415    ) -> windows_core::Result<()>;
26416    fn ToMultipart(
26417        &self,
26418        hbody: *mut HBODY__,
26419        pszsubtype: &windows_core::PCSTR,
26420        phmultipart: *mut *mut HBODY__,
26421    ) -> windows_core::Result<()>;
26422    fn GetBodyOffsets(
26423        &self,
26424        hbody: *mut HBODY__,
26425        poffsets: *mut BODYOFFSETS,
26426    ) -> windows_core::Result<()>;
26427    fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()>;
26428    fn SetCharset(
26429        &self,
26430        hcharset: *mut HCHARSET__,
26431        applytype: CSETAPPLYTYPE,
26432    ) -> windows_core::Result<()>;
26433    fn IsBodyType(&self, hbody: *mut HBODY__, bodytype: IMSGBODYTYPE) -> windows_core::Result<()>;
26434    fn IsContentType(
26435        &self,
26436        hbody: *mut HBODY__,
26437        pszpritype: &windows_core::PCSTR,
26438        pszsubtype: &windows_core::PCSTR,
26439    ) -> windows_core::Result<()>;
26440    fn QueryBodyProp(
26441        &self,
26442        hbody: *mut HBODY__,
26443        pszname: &windows_core::PCSTR,
26444        pszcriteria: &windows_core::PCSTR,
26445        fsubstring: u8,
26446        fcasesensitive: u8,
26447    ) -> windows_core::Result<()>;
26448    fn GetBodyProp(
26449        &self,
26450        hbody: *mut HBODY__,
26451        pszname: &windows_core::PCSTR,
26452        dwflags: u32,
26453        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26454    ) -> windows_core::Result<()>;
26455    fn SetBodyProp(
26456        &self,
26457        hbody: *mut HBODY__,
26458        pszname: &windows_core::PCSTR,
26459        dwflags: u32,
26460        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26461    ) -> windows_core::Result<()>;
26462    fn DeleteBodyProp(
26463        &self,
26464        hbody: *mut HBODY__,
26465        pszname: &windows_core::PCSTR,
26466    ) -> windows_core::Result<()>;
26467    fn SetOption(
26468        &self,
26469        oid: u32,
26470        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26471    ) -> windows_core::Result<()>;
26472    fn GetOption(
26473        &self,
26474        oid: u32,
26475        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26476    ) -> windows_core::Result<()>;
26477}
26478impl IMimeMessageTree_Vtbl {
26479    pub const fn new<Identity: IMimeMessageTree_Impl, const OFFSET: isize>() -> Self {
26480        unsafe extern "system" fn Save<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26481            this: *mut core::ffi::c_void,
26482            pstm: *mut core::ffi::c_void,
26483            fcleardirty: windows_core::BOOL,
26484        ) -> windows_core::HRESULT {
26485            unsafe {
26486                let this: &Identity =
26487                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26488                IMimeMessageTree_Impl::Save(
26489                    this,
26490                    core::mem::transmute_copy(&pstm),
26491                    core::mem::transmute_copy(&fcleardirty),
26492                )
26493                .into()
26494            }
26495        }
26496        unsafe extern "system" fn GetSizeMax<
26497            Identity: IMimeMessageTree_Impl,
26498            const OFFSET: isize,
26499        >(
26500            this: *mut core::ffi::c_void,
26501            pcbsize: *mut u64,
26502        ) -> windows_core::HRESULT {
26503            unsafe {
26504                let this: &Identity =
26505                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26506                match IMimeMessageTree_Impl::GetSizeMax(this) {
26507                    Ok(ok__) => {
26508                        pcbsize.write(core::mem::transmute(ok__));
26509                        windows_core::HRESULT(0)
26510                    }
26511                    Err(err) => err.into(),
26512                }
26513            }
26514        }
26515        unsafe extern "system" fn InitNew<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26516            this: *mut core::ffi::c_void,
26517        ) -> windows_core::HRESULT {
26518            unsafe {
26519                let this: &Identity =
26520                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26521                IMimeMessageTree_Impl::InitNew(this).into()
26522            }
26523        }
26524        unsafe extern "system" fn GetMessageSource<
26525            Identity: IMimeMessageTree_Impl,
26526            const OFFSET: isize,
26527        >(
26528            this: *mut core::ffi::c_void,
26529            ppstream: *mut *mut core::ffi::c_void,
26530            dwflags: u32,
26531        ) -> windows_core::HRESULT {
26532            unsafe {
26533                let this: &Identity =
26534                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26535                IMimeMessageTree_Impl::GetMessageSource(
26536                    this,
26537                    core::mem::transmute_copy(&ppstream),
26538                    core::mem::transmute_copy(&dwflags),
26539                )
26540                .into()
26541            }
26542        }
26543        unsafe extern "system" fn GetMessageSize<
26544            Identity: IMimeMessageTree_Impl,
26545            const OFFSET: isize,
26546        >(
26547            this: *mut core::ffi::c_void,
26548            pcbsize: *mut u32,
26549            dwflags: u32,
26550        ) -> windows_core::HRESULT {
26551            unsafe {
26552                let this: &Identity =
26553                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26554                IMimeMessageTree_Impl::GetMessageSize(
26555                    this,
26556                    core::mem::transmute_copy(&pcbsize),
26557                    core::mem::transmute_copy(&dwflags),
26558                )
26559                .into()
26560            }
26561        }
26562        unsafe extern "system" fn LoadOffsetTable<
26563            Identity: IMimeMessageTree_Impl,
26564            const OFFSET: isize,
26565        >(
26566            this: *mut core::ffi::c_void,
26567            pstream: *mut core::ffi::c_void,
26568        ) -> windows_core::HRESULT {
26569            unsafe {
26570                let this: &Identity =
26571                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26572                IMimeMessageTree_Impl::LoadOffsetTable(this, core::mem::transmute_copy(&pstream))
26573                    .into()
26574            }
26575        }
26576        unsafe extern "system" fn SaveOffsetTable<
26577            Identity: IMimeMessageTree_Impl,
26578            const OFFSET: isize,
26579        >(
26580            this: *mut core::ffi::c_void,
26581            pstream: *mut core::ffi::c_void,
26582            dwflags: u32,
26583        ) -> windows_core::HRESULT {
26584            unsafe {
26585                let this: &Identity =
26586                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26587                IMimeMessageTree_Impl::SaveOffsetTable(
26588                    this,
26589                    core::mem::transmute_copy(&pstream),
26590                    core::mem::transmute_copy(&dwflags),
26591                )
26592                .into()
26593            }
26594        }
26595        unsafe extern "system" fn GetFlags<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26596            this: *mut core::ffi::c_void,
26597            pdwflags: *mut u32,
26598        ) -> windows_core::HRESULT {
26599            unsafe {
26600                let this: &Identity =
26601                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26602                IMimeMessageTree_Impl::GetFlags(this, core::mem::transmute_copy(&pdwflags)).into()
26603            }
26604        }
26605        unsafe extern "system" fn Commit<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26606            this: *mut core::ffi::c_void,
26607            dwflags: u32,
26608        ) -> windows_core::HRESULT {
26609            unsafe {
26610                let this: &Identity =
26611                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26612                IMimeMessageTree_Impl::Commit(this, core::mem::transmute_copy(&dwflags)).into()
26613            }
26614        }
26615        unsafe extern "system" fn HandsOffStorage<
26616            Identity: IMimeMessageTree_Impl,
26617            const OFFSET: isize,
26618        >(
26619            this: *mut core::ffi::c_void,
26620        ) -> windows_core::HRESULT {
26621            unsafe {
26622                let this: &Identity =
26623                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26624                IMimeMessageTree_Impl::HandsOffStorage(this).into()
26625            }
26626        }
26627        unsafe extern "system" fn BindToObject<
26628            Identity: IMimeMessageTree_Impl,
26629            const OFFSET: isize,
26630        >(
26631            this: *mut core::ffi::c_void,
26632            hbody: *const HBODY__,
26633            riid: *const windows_core::GUID,
26634            ppvobject: *mut *mut core::ffi::c_void,
26635        ) -> windows_core::HRESULT {
26636            unsafe {
26637                let this: &Identity =
26638                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26639                IMimeMessageTree_Impl::BindToObject(
26640                    this,
26641                    core::mem::transmute_copy(&hbody),
26642                    core::mem::transmute_copy(&riid),
26643                    core::mem::transmute_copy(&ppvobject),
26644                )
26645                .into()
26646            }
26647        }
26648        unsafe extern "system" fn SaveBody<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26649            this: *mut core::ffi::c_void,
26650            hbody: *mut HBODY__,
26651            dwflags: u32,
26652            pstream: *mut core::ffi::c_void,
26653        ) -> windows_core::HRESULT {
26654            unsafe {
26655                let this: &Identity =
26656                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26657                IMimeMessageTree_Impl::SaveBody(
26658                    this,
26659                    core::mem::transmute_copy(&hbody),
26660                    core::mem::transmute_copy(&dwflags),
26661                    core::mem::transmute_copy(&pstream),
26662                )
26663                .into()
26664            }
26665        }
26666        unsafe extern "system" fn InsertBody<
26667            Identity: IMimeMessageTree_Impl,
26668            const OFFSET: isize,
26669        >(
26670            this: *mut core::ffi::c_void,
26671            location: BODYLOCATION,
26672            hpivot: *mut HBODY__,
26673            phbody: *mut *mut HBODY__,
26674        ) -> windows_core::HRESULT {
26675            unsafe {
26676                let this: &Identity =
26677                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26678                IMimeMessageTree_Impl::InsertBody(
26679                    this,
26680                    core::mem::transmute_copy(&location),
26681                    core::mem::transmute_copy(&hpivot),
26682                    core::mem::transmute_copy(&phbody),
26683                )
26684                .into()
26685            }
26686        }
26687        unsafe extern "system" fn GetBody<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26688            this: *mut core::ffi::c_void,
26689            location: BODYLOCATION,
26690            hpivot: *mut HBODY__,
26691            phbody: *mut *mut HBODY__,
26692        ) -> windows_core::HRESULT {
26693            unsafe {
26694                let this: &Identity =
26695                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26696                IMimeMessageTree_Impl::GetBody(
26697                    this,
26698                    core::mem::transmute_copy(&location),
26699                    core::mem::transmute_copy(&hpivot),
26700                    core::mem::transmute_copy(&phbody),
26701                )
26702                .into()
26703            }
26704        }
26705        unsafe extern "system" fn DeleteBody<
26706            Identity: IMimeMessageTree_Impl,
26707            const OFFSET: isize,
26708        >(
26709            this: *mut core::ffi::c_void,
26710            hbody: *mut HBODY__,
26711            dwflags: u32,
26712        ) -> windows_core::HRESULT {
26713            unsafe {
26714                let this: &Identity =
26715                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26716                IMimeMessageTree_Impl::DeleteBody(
26717                    this,
26718                    core::mem::transmute_copy(&hbody),
26719                    core::mem::transmute_copy(&dwflags),
26720                )
26721                .into()
26722            }
26723        }
26724        unsafe extern "system" fn MoveBody<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26725            this: *mut core::ffi::c_void,
26726            hbody: *mut HBODY__,
26727            location: BODYLOCATION,
26728        ) -> windows_core::HRESULT {
26729            unsafe {
26730                let this: &Identity =
26731                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26732                IMimeMessageTree_Impl::MoveBody(
26733                    this,
26734                    core::mem::transmute_copy(&hbody),
26735                    core::mem::transmute_copy(&location),
26736                )
26737                .into()
26738            }
26739        }
26740        unsafe extern "system" fn CountBodies<
26741            Identity: IMimeMessageTree_Impl,
26742            const OFFSET: isize,
26743        >(
26744            this: *mut core::ffi::c_void,
26745            hparent: *mut HBODY__,
26746            frecurse: u8,
26747            pcbodies: *mut u32,
26748        ) -> windows_core::HRESULT {
26749            unsafe {
26750                let this: &Identity =
26751                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26752                IMimeMessageTree_Impl::CountBodies(
26753                    this,
26754                    core::mem::transmute_copy(&hparent),
26755                    core::mem::transmute_copy(&frecurse),
26756                    core::mem::transmute_copy(&pcbodies),
26757                )
26758                .into()
26759            }
26760        }
26761        unsafe extern "system" fn FindFirst<
26762            Identity: IMimeMessageTree_Impl,
26763            const OFFSET: isize,
26764        >(
26765            this: *mut core::ffi::c_void,
26766            pfindbody: *mut FINDBODY,
26767            phbody: *mut *mut HBODY__,
26768        ) -> windows_core::HRESULT {
26769            unsafe {
26770                let this: &Identity =
26771                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26772                IMimeMessageTree_Impl::FindFirst(
26773                    this,
26774                    core::mem::transmute_copy(&pfindbody),
26775                    core::mem::transmute_copy(&phbody),
26776                )
26777                .into()
26778            }
26779        }
26780        unsafe extern "system" fn FindNext<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26781            this: *mut core::ffi::c_void,
26782            pfindbody: *mut FINDBODY,
26783            phbody: *mut *mut HBODY__,
26784        ) -> windows_core::HRESULT {
26785            unsafe {
26786                let this: &Identity =
26787                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26788                IMimeMessageTree_Impl::FindNext(
26789                    this,
26790                    core::mem::transmute_copy(&pfindbody),
26791                    core::mem::transmute_copy(&phbody),
26792                )
26793                .into()
26794            }
26795        }
26796        unsafe extern "system" fn ResolveURL<
26797            Identity: IMimeMessageTree_Impl,
26798            const OFFSET: isize,
26799        >(
26800            this: *mut core::ffi::c_void,
26801            hrelated: *mut HBODY__,
26802            pszbase: windows_core::PCSTR,
26803            pszurl: windows_core::PCSTR,
26804            dwflags: u32,
26805            phbody: *mut *mut HBODY__,
26806        ) -> windows_core::HRESULT {
26807            unsafe {
26808                let this: &Identity =
26809                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26810                IMimeMessageTree_Impl::ResolveURL(
26811                    this,
26812                    core::mem::transmute_copy(&hrelated),
26813                    core::mem::transmute(&pszbase),
26814                    core::mem::transmute(&pszurl),
26815                    core::mem::transmute_copy(&dwflags),
26816                    core::mem::transmute_copy(&phbody),
26817                )
26818                .into()
26819            }
26820        }
26821        unsafe extern "system" fn ToMultipart<
26822            Identity: IMimeMessageTree_Impl,
26823            const OFFSET: isize,
26824        >(
26825            this: *mut core::ffi::c_void,
26826            hbody: *mut HBODY__,
26827            pszsubtype: windows_core::PCSTR,
26828            phmultipart: *mut *mut HBODY__,
26829        ) -> windows_core::HRESULT {
26830            unsafe {
26831                let this: &Identity =
26832                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26833                IMimeMessageTree_Impl::ToMultipart(
26834                    this,
26835                    core::mem::transmute_copy(&hbody),
26836                    core::mem::transmute(&pszsubtype),
26837                    core::mem::transmute_copy(&phmultipart),
26838                )
26839                .into()
26840            }
26841        }
26842        unsafe extern "system" fn GetBodyOffsets<
26843            Identity: IMimeMessageTree_Impl,
26844            const OFFSET: isize,
26845        >(
26846            this: *mut core::ffi::c_void,
26847            hbody: *mut HBODY__,
26848            poffsets: *mut BODYOFFSETS,
26849        ) -> windows_core::HRESULT {
26850            unsafe {
26851                let this: &Identity =
26852                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26853                IMimeMessageTree_Impl::GetBodyOffsets(
26854                    this,
26855                    core::mem::transmute_copy(&hbody),
26856                    core::mem::transmute_copy(&poffsets),
26857                )
26858                .into()
26859            }
26860        }
26861        unsafe extern "system" fn GetCharset<
26862            Identity: IMimeMessageTree_Impl,
26863            const OFFSET: isize,
26864        >(
26865            this: *mut core::ffi::c_void,
26866            phcharset: *mut *mut HCHARSET__,
26867        ) -> windows_core::HRESULT {
26868            unsafe {
26869                let this: &Identity =
26870                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26871                IMimeMessageTree_Impl::GetCharset(this, core::mem::transmute_copy(&phcharset))
26872                    .into()
26873            }
26874        }
26875        unsafe extern "system" fn SetCharset<
26876            Identity: IMimeMessageTree_Impl,
26877            const OFFSET: isize,
26878        >(
26879            this: *mut core::ffi::c_void,
26880            hcharset: *mut HCHARSET__,
26881            applytype: CSETAPPLYTYPE,
26882        ) -> windows_core::HRESULT {
26883            unsafe {
26884                let this: &Identity =
26885                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26886                IMimeMessageTree_Impl::SetCharset(
26887                    this,
26888                    core::mem::transmute_copy(&hcharset),
26889                    core::mem::transmute_copy(&applytype),
26890                )
26891                .into()
26892            }
26893        }
26894        unsafe extern "system" fn IsBodyType<
26895            Identity: IMimeMessageTree_Impl,
26896            const OFFSET: isize,
26897        >(
26898            this: *mut core::ffi::c_void,
26899            hbody: *mut HBODY__,
26900            bodytype: IMSGBODYTYPE,
26901        ) -> windows_core::HRESULT {
26902            unsafe {
26903                let this: &Identity =
26904                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26905                IMimeMessageTree_Impl::IsBodyType(
26906                    this,
26907                    core::mem::transmute_copy(&hbody),
26908                    core::mem::transmute_copy(&bodytype),
26909                )
26910                .into()
26911            }
26912        }
26913        unsafe extern "system" fn IsContentType<
26914            Identity: IMimeMessageTree_Impl,
26915            const OFFSET: isize,
26916        >(
26917            this: *mut core::ffi::c_void,
26918            hbody: *mut HBODY__,
26919            pszpritype: windows_core::PCSTR,
26920            pszsubtype: windows_core::PCSTR,
26921        ) -> windows_core::HRESULT {
26922            unsafe {
26923                let this: &Identity =
26924                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26925                IMimeMessageTree_Impl::IsContentType(
26926                    this,
26927                    core::mem::transmute_copy(&hbody),
26928                    core::mem::transmute(&pszpritype),
26929                    core::mem::transmute(&pszsubtype),
26930                )
26931                .into()
26932            }
26933        }
26934        unsafe extern "system" fn QueryBodyProp<
26935            Identity: IMimeMessageTree_Impl,
26936            const OFFSET: isize,
26937        >(
26938            this: *mut core::ffi::c_void,
26939            hbody: *mut HBODY__,
26940            pszname: windows_core::PCSTR,
26941            pszcriteria: windows_core::PCSTR,
26942            fsubstring: u8,
26943            fcasesensitive: u8,
26944        ) -> windows_core::HRESULT {
26945            unsafe {
26946                let this: &Identity =
26947                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26948                IMimeMessageTree_Impl::QueryBodyProp(
26949                    this,
26950                    core::mem::transmute_copy(&hbody),
26951                    core::mem::transmute(&pszname),
26952                    core::mem::transmute(&pszcriteria),
26953                    core::mem::transmute_copy(&fsubstring),
26954                    core::mem::transmute_copy(&fcasesensitive),
26955                )
26956                .into()
26957            }
26958        }
26959        unsafe extern "system" fn GetBodyProp<
26960            Identity: IMimeMessageTree_Impl,
26961            const OFFSET: isize,
26962        >(
26963            this: *mut core::ffi::c_void,
26964            hbody: *mut HBODY__,
26965            pszname: windows_core::PCSTR,
26966            dwflags: u32,
26967            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26968        ) -> windows_core::HRESULT {
26969            unsafe {
26970                let this: &Identity =
26971                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26972                IMimeMessageTree_Impl::GetBodyProp(
26973                    this,
26974                    core::mem::transmute_copy(&hbody),
26975                    core::mem::transmute(&pszname),
26976                    core::mem::transmute_copy(&dwflags),
26977                    core::mem::transmute_copy(&pvalue),
26978                )
26979                .into()
26980            }
26981        }
26982        unsafe extern "system" fn SetBodyProp<
26983            Identity: IMimeMessageTree_Impl,
26984            const OFFSET: isize,
26985        >(
26986            this: *mut core::ffi::c_void,
26987            hbody: *mut HBODY__,
26988            pszname: windows_core::PCSTR,
26989            dwflags: u32,
26990            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26991        ) -> windows_core::HRESULT {
26992            unsafe {
26993                let this: &Identity =
26994                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26995                IMimeMessageTree_Impl::SetBodyProp(
26996                    this,
26997                    core::mem::transmute_copy(&hbody),
26998                    core::mem::transmute(&pszname),
26999                    core::mem::transmute_copy(&dwflags),
27000                    core::mem::transmute_copy(&pvalue),
27001                )
27002                .into()
27003            }
27004        }
27005        unsafe extern "system" fn DeleteBodyProp<
27006            Identity: IMimeMessageTree_Impl,
27007            const OFFSET: isize,
27008        >(
27009            this: *mut core::ffi::c_void,
27010            hbody: *mut HBODY__,
27011            pszname: windows_core::PCSTR,
27012        ) -> windows_core::HRESULT {
27013            unsafe {
27014                let this: &Identity =
27015                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27016                IMimeMessageTree_Impl::DeleteBodyProp(
27017                    this,
27018                    core::mem::transmute_copy(&hbody),
27019                    core::mem::transmute(&pszname),
27020                )
27021                .into()
27022            }
27023        }
27024        unsafe extern "system" fn SetOption<
27025            Identity: IMimeMessageTree_Impl,
27026            const OFFSET: isize,
27027        >(
27028            this: *mut core::ffi::c_void,
27029            oid: u32,
27030            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27031        ) -> windows_core::HRESULT {
27032            unsafe {
27033                let this: &Identity =
27034                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27035                IMimeMessageTree_Impl::SetOption(
27036                    this,
27037                    core::mem::transmute_copy(&oid),
27038                    core::mem::transmute_copy(&pvalue),
27039                )
27040                .into()
27041            }
27042        }
27043        unsafe extern "system" fn GetOption<
27044            Identity: IMimeMessageTree_Impl,
27045            const OFFSET: isize,
27046        >(
27047            this: *mut core::ffi::c_void,
27048            oid: u32,
27049            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27050        ) -> windows_core::HRESULT {
27051            unsafe {
27052                let this: &Identity =
27053                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27054                IMimeMessageTree_Impl::GetOption(
27055                    this,
27056                    core::mem::transmute_copy(&oid),
27057                    core::mem::transmute_copy(&pvalue),
27058                )
27059                .into()
27060            }
27061        }
27062        Self {
27063            base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl::new::<Identity, OFFSET>(),
27064            Save: Save::<Identity, OFFSET>,
27065            GetSizeMax: GetSizeMax::<Identity, OFFSET>,
27066            InitNew: InitNew::<Identity, OFFSET>,
27067            GetMessageSource: GetMessageSource::<Identity, OFFSET>,
27068            GetMessageSize: GetMessageSize::<Identity, OFFSET>,
27069            LoadOffsetTable: LoadOffsetTable::<Identity, OFFSET>,
27070            SaveOffsetTable: SaveOffsetTable::<Identity, OFFSET>,
27071            GetFlags: GetFlags::<Identity, OFFSET>,
27072            Commit: Commit::<Identity, OFFSET>,
27073            HandsOffStorage: HandsOffStorage::<Identity, OFFSET>,
27074            BindToObject: BindToObject::<Identity, OFFSET>,
27075            SaveBody: SaveBody::<Identity, OFFSET>,
27076            InsertBody: InsertBody::<Identity, OFFSET>,
27077            GetBody: GetBody::<Identity, OFFSET>,
27078            DeleteBody: DeleteBody::<Identity, OFFSET>,
27079            MoveBody: MoveBody::<Identity, OFFSET>,
27080            CountBodies: CountBodies::<Identity, OFFSET>,
27081            FindFirst: FindFirst::<Identity, OFFSET>,
27082            FindNext: FindNext::<Identity, OFFSET>,
27083            ResolveURL: ResolveURL::<Identity, OFFSET>,
27084            ToMultipart: ToMultipart::<Identity, OFFSET>,
27085            GetBodyOffsets: GetBodyOffsets::<Identity, OFFSET>,
27086            GetCharset: GetCharset::<Identity, OFFSET>,
27087            SetCharset: SetCharset::<Identity, OFFSET>,
27088            IsBodyType: IsBodyType::<Identity, OFFSET>,
27089            IsContentType: IsContentType::<Identity, OFFSET>,
27090            QueryBodyProp: QueryBodyProp::<Identity, OFFSET>,
27091            GetBodyProp: GetBodyProp::<Identity, OFFSET>,
27092            SetBodyProp: SetBodyProp::<Identity, OFFSET>,
27093            DeleteBodyProp: DeleteBodyProp::<Identity, OFFSET>,
27094            SetOption: SetOption::<Identity, OFFSET>,
27095            GetOption: GetOption::<Identity, OFFSET>,
27096        }
27097    }
27098    pub fn matches(iid: &windows_core::GUID) -> bool {
27099        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
27100    }
27101}
27102impl windows_core::RuntimeName for IMimeMessageTree {}
27103windows_core::imp::define_interface!(
27104    IMimeObjResolver,
27105    IMimeObjResolver_Vtbl,
27106    0xfeceaffd_c441_11d1_960e_00c04fbd7c09
27107);
27108windows_core::imp::interface_hierarchy!(IMimeObjResolver, windows_core::IUnknown);
27109impl IMimeObjResolver {
27110    pub unsafe fn MimeOleObjectFromMoniker<P1, P2>(
27111        &self,
27112        bindf: windows::Win32::System::Com::Urlmon::BINDF,
27113        pmkoriginal: P1,
27114        pbindctx: P2,
27115        riid: *const windows_core::GUID,
27116        ppvobject: *mut *mut core::ffi::c_void,
27117        ppmknew: *mut Option<windows::Win32::System::Com::IMoniker>,
27118    ) -> windows_core::Result<()>
27119    where
27120        P1: windows_core::Param<windows::Win32::System::Com::IMoniker>,
27121        P2: windows_core::Param<windows::Win32::System::Com::IBindCtx>,
27122    {
27123        unsafe {
27124            (windows_core::Interface::vtable(self).MimeOleObjectFromMoniker)(
27125                windows_core::Interface::as_raw(self),
27126                bindf,
27127                pmkoriginal.param().abi(),
27128                pbindctx.param().abi(),
27129                riid,
27130                ppvobject as _,
27131                core::mem::transmute(ppmknew),
27132            )
27133            .ok()
27134        }
27135    }
27136}
27137#[repr(C)]
27138pub struct IMimeObjResolver_Vtbl {
27139    pub base__: windows_core::IUnknown_Vtbl,
27140    pub MimeOleObjectFromMoniker: unsafe extern "system" fn(
27141        *mut core::ffi::c_void,
27142        windows::Win32::System::Com::Urlmon::BINDF,
27143        *mut core::ffi::c_void,
27144        *mut core::ffi::c_void,
27145        *const windows_core::GUID,
27146        *mut *mut core::ffi::c_void,
27147        *mut *mut core::ffi::c_void,
27148    ) -> windows_core::HRESULT,
27149}
27150pub trait IMimeObjResolver_Impl: windows_core::IUnknownImpl {
27151    fn MimeOleObjectFromMoniker(
27152        &self,
27153        bindf: windows::Win32::System::Com::Urlmon::BINDF,
27154        pmkoriginal: windows_core::Ref<'_, windows::Win32::System::Com::IMoniker>,
27155        pbindctx: windows_core::Ref<'_, windows::Win32::System::Com::IBindCtx>,
27156        riid: *const windows_core::GUID,
27157        ppvobject: *mut *mut core::ffi::c_void,
27158        ppmknew: windows_core::OutRef<'_, windows::Win32::System::Com::IMoniker>,
27159    ) -> windows_core::Result<()>;
27160}
27161impl IMimeObjResolver_Vtbl {
27162    pub const fn new<Identity: IMimeObjResolver_Impl, const OFFSET: isize>() -> Self {
27163        unsafe extern "system" fn MimeOleObjectFromMoniker<
27164            Identity: IMimeObjResolver_Impl,
27165            const OFFSET: isize,
27166        >(
27167            this: *mut core::ffi::c_void,
27168            bindf: windows::Win32::System::Com::Urlmon::BINDF,
27169            pmkoriginal: *mut core::ffi::c_void,
27170            pbindctx: *mut core::ffi::c_void,
27171            riid: *const windows_core::GUID,
27172            ppvobject: *mut *mut core::ffi::c_void,
27173            ppmknew: *mut *mut core::ffi::c_void,
27174        ) -> windows_core::HRESULT {
27175            unsafe {
27176                let this: &Identity =
27177                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27178                IMimeObjResolver_Impl::MimeOleObjectFromMoniker(
27179                    this,
27180                    core::mem::transmute_copy(&bindf),
27181                    core::mem::transmute_copy(&pmkoriginal),
27182                    core::mem::transmute_copy(&pbindctx),
27183                    core::mem::transmute_copy(&riid),
27184                    core::mem::transmute_copy(&ppvobject),
27185                    core::mem::transmute_copy(&ppmknew),
27186                )
27187                .into()
27188            }
27189        }
27190        Self {
27191            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
27192            MimeOleObjectFromMoniker: MimeOleObjectFromMoniker::<Identity, OFFSET>,
27193        }
27194    }
27195    pub fn matches(iid: &windows_core::GUID) -> bool {
27196        iid == &<IMimeObjResolver as windows_core::Interface>::IID
27197    }
27198}
27199impl windows_core::RuntimeName for IMimeObjResolver {}
27200windows_core::imp::define_interface!(
27201    IMimePropertySchema,
27202    IMimePropertySchema_Vtbl,
27203    0xfd853cec_7f86_11d0_8252_00c04fd85ab4
27204);
27205windows_core::imp::interface_hierarchy!(IMimePropertySchema, windows_core::IUnknown);
27206impl IMimePropertySchema {
27207    pub unsafe fn RegisterProperty<P0>(
27208        &self,
27209        pszname: P0,
27210        dwflags: u32,
27211        dwrownumber: u32,
27212        vtdefault: u16,
27213        pdwpropid: *mut u32,
27214    ) -> windows_core::Result<()>
27215    where
27216        P0: windows_core::Param<windows_core::PCSTR>,
27217    {
27218        unsafe {
27219            (windows_core::Interface::vtable(self).RegisterProperty)(
27220                windows_core::Interface::as_raw(self),
27221                pszname.param().abi(),
27222                dwflags,
27223                dwrownumber,
27224                vtdefault,
27225                pdwpropid as _,
27226            )
27227            .ok()
27228        }
27229    }
27230    pub unsafe fn ModifyProperty<P0>(
27231        &self,
27232        pszname: P0,
27233        dwflags: u32,
27234        dwrownumber: u32,
27235        vtdefault: u16,
27236    ) -> windows_core::Result<()>
27237    where
27238        P0: windows_core::Param<windows_core::PCSTR>,
27239    {
27240        unsafe {
27241            (windows_core::Interface::vtable(self).ModifyProperty)(
27242                windows_core::Interface::as_raw(self),
27243                pszname.param().abi(),
27244                dwflags,
27245                dwrownumber,
27246                vtdefault,
27247            )
27248            .ok()
27249        }
27250    }
27251    pub unsafe fn GetPropertyId<P0>(
27252        &self,
27253        pszname: P0,
27254        pdwpropid: *mut u32,
27255    ) -> windows_core::Result<()>
27256    where
27257        P0: windows_core::Param<windows_core::PCSTR>,
27258    {
27259        unsafe {
27260            (windows_core::Interface::vtable(self).GetPropertyId)(
27261                windows_core::Interface::as_raw(self),
27262                pszname.param().abi(),
27263                pdwpropid as _,
27264            )
27265            .ok()
27266        }
27267    }
27268    pub unsafe fn GetPropertyName(
27269        &self,
27270        dwpropid: u32,
27271        ppszname: *mut windows_core::PSTR,
27272    ) -> windows_core::Result<()> {
27273        unsafe {
27274            (windows_core::Interface::vtable(self).GetPropertyName)(
27275                windows_core::Interface::as_raw(self),
27276                dwpropid,
27277                ppszname as _,
27278            )
27279            .ok()
27280        }
27281    }
27282    pub unsafe fn RegisterAddressType<P0>(
27283        &self,
27284        pszname: P0,
27285        pdwadrtype: *mut u32,
27286    ) -> windows_core::Result<()>
27287    where
27288        P0: windows_core::Param<windows_core::PCSTR>,
27289    {
27290        unsafe {
27291            (windows_core::Interface::vtable(self).RegisterAddressType)(
27292                windows_core::Interface::as_raw(self),
27293                pszname.param().abi(),
27294                pdwadrtype as _,
27295            )
27296            .ok()
27297        }
27298    }
27299}
27300#[repr(C)]
27301pub struct IMimePropertySchema_Vtbl {
27302    pub base__: windows_core::IUnknown_Vtbl,
27303    pub RegisterProperty: unsafe extern "system" fn(
27304        *mut core::ffi::c_void,
27305        windows_core::PCSTR,
27306        u32,
27307        u32,
27308        u16,
27309        *mut u32,
27310    ) -> windows_core::HRESULT,
27311    pub ModifyProperty: unsafe extern "system" fn(
27312        *mut core::ffi::c_void,
27313        windows_core::PCSTR,
27314        u32,
27315        u32,
27316        u16,
27317    ) -> windows_core::HRESULT,
27318    pub GetPropertyId: unsafe extern "system" fn(
27319        *mut core::ffi::c_void,
27320        windows_core::PCSTR,
27321        *mut u32,
27322    ) -> windows_core::HRESULT,
27323    pub GetPropertyName: unsafe extern "system" fn(
27324        *mut core::ffi::c_void,
27325        u32,
27326        *mut windows_core::PSTR,
27327    ) -> windows_core::HRESULT,
27328    pub RegisterAddressType: unsafe extern "system" fn(
27329        *mut core::ffi::c_void,
27330        windows_core::PCSTR,
27331        *mut u32,
27332    ) -> windows_core::HRESULT,
27333}
27334pub trait IMimePropertySchema_Impl: windows_core::IUnknownImpl {
27335    fn RegisterProperty(
27336        &self,
27337        pszname: &windows_core::PCSTR,
27338        dwflags: u32,
27339        dwrownumber: u32,
27340        vtdefault: u16,
27341        pdwpropid: *mut u32,
27342    ) -> windows_core::Result<()>;
27343    fn ModifyProperty(
27344        &self,
27345        pszname: &windows_core::PCSTR,
27346        dwflags: u32,
27347        dwrownumber: u32,
27348        vtdefault: u16,
27349    ) -> windows_core::Result<()>;
27350    fn GetPropertyId(
27351        &self,
27352        pszname: &windows_core::PCSTR,
27353        pdwpropid: *mut u32,
27354    ) -> windows_core::Result<()>;
27355    fn GetPropertyName(
27356        &self,
27357        dwpropid: u32,
27358        ppszname: *mut windows_core::PSTR,
27359    ) -> windows_core::Result<()>;
27360    fn RegisterAddressType(
27361        &self,
27362        pszname: &windows_core::PCSTR,
27363        pdwadrtype: *mut u32,
27364    ) -> windows_core::Result<()>;
27365}
27366impl IMimePropertySchema_Vtbl {
27367    pub const fn new<Identity: IMimePropertySchema_Impl, const OFFSET: isize>() -> Self {
27368        unsafe extern "system" fn RegisterProperty<
27369            Identity: IMimePropertySchema_Impl,
27370            const OFFSET: isize,
27371        >(
27372            this: *mut core::ffi::c_void,
27373            pszname: windows_core::PCSTR,
27374            dwflags: u32,
27375            dwrownumber: u32,
27376            vtdefault: u16,
27377            pdwpropid: *mut u32,
27378        ) -> windows_core::HRESULT {
27379            unsafe {
27380                let this: &Identity =
27381                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27382                IMimePropertySchema_Impl::RegisterProperty(
27383                    this,
27384                    core::mem::transmute(&pszname),
27385                    core::mem::transmute_copy(&dwflags),
27386                    core::mem::transmute_copy(&dwrownumber),
27387                    core::mem::transmute_copy(&vtdefault),
27388                    core::mem::transmute_copy(&pdwpropid),
27389                )
27390                .into()
27391            }
27392        }
27393        unsafe extern "system" fn ModifyProperty<
27394            Identity: IMimePropertySchema_Impl,
27395            const OFFSET: isize,
27396        >(
27397            this: *mut core::ffi::c_void,
27398            pszname: windows_core::PCSTR,
27399            dwflags: u32,
27400            dwrownumber: u32,
27401            vtdefault: u16,
27402        ) -> windows_core::HRESULT {
27403            unsafe {
27404                let this: &Identity =
27405                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27406                IMimePropertySchema_Impl::ModifyProperty(
27407                    this,
27408                    core::mem::transmute(&pszname),
27409                    core::mem::transmute_copy(&dwflags),
27410                    core::mem::transmute_copy(&dwrownumber),
27411                    core::mem::transmute_copy(&vtdefault),
27412                )
27413                .into()
27414            }
27415        }
27416        unsafe extern "system" fn GetPropertyId<
27417            Identity: IMimePropertySchema_Impl,
27418            const OFFSET: isize,
27419        >(
27420            this: *mut core::ffi::c_void,
27421            pszname: windows_core::PCSTR,
27422            pdwpropid: *mut u32,
27423        ) -> windows_core::HRESULT {
27424            unsafe {
27425                let this: &Identity =
27426                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27427                IMimePropertySchema_Impl::GetPropertyId(
27428                    this,
27429                    core::mem::transmute(&pszname),
27430                    core::mem::transmute_copy(&pdwpropid),
27431                )
27432                .into()
27433            }
27434        }
27435        unsafe extern "system" fn GetPropertyName<
27436            Identity: IMimePropertySchema_Impl,
27437            const OFFSET: isize,
27438        >(
27439            this: *mut core::ffi::c_void,
27440            dwpropid: u32,
27441            ppszname: *mut windows_core::PSTR,
27442        ) -> windows_core::HRESULT {
27443            unsafe {
27444                let this: &Identity =
27445                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27446                IMimePropertySchema_Impl::GetPropertyName(
27447                    this,
27448                    core::mem::transmute_copy(&dwpropid),
27449                    core::mem::transmute_copy(&ppszname),
27450                )
27451                .into()
27452            }
27453        }
27454        unsafe extern "system" fn RegisterAddressType<
27455            Identity: IMimePropertySchema_Impl,
27456            const OFFSET: isize,
27457        >(
27458            this: *mut core::ffi::c_void,
27459            pszname: windows_core::PCSTR,
27460            pdwadrtype: *mut u32,
27461        ) -> windows_core::HRESULT {
27462            unsafe {
27463                let this: &Identity =
27464                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27465                IMimePropertySchema_Impl::RegisterAddressType(
27466                    this,
27467                    core::mem::transmute(&pszname),
27468                    core::mem::transmute_copy(&pdwadrtype),
27469                )
27470                .into()
27471            }
27472        }
27473        Self {
27474            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
27475            RegisterProperty: RegisterProperty::<Identity, OFFSET>,
27476            ModifyProperty: ModifyProperty::<Identity, OFFSET>,
27477            GetPropertyId: GetPropertyId::<Identity, OFFSET>,
27478            GetPropertyName: GetPropertyName::<Identity, OFFSET>,
27479            RegisterAddressType: RegisterAddressType::<Identity, OFFSET>,
27480        }
27481    }
27482    pub fn matches(iid: &windows_core::GUID) -> bool {
27483        iid == &<IMimePropertySchema as windows_core::Interface>::IID
27484    }
27485}
27486impl windows_core::RuntimeName for IMimePropertySchema {}
27487windows_core::imp::define_interface!(
27488    IMimePropertySet,
27489    IMimePropertySet_Vtbl,
27490    0xfd853cd3_7f86_11d0_8252_00c04fd85ab4
27491);
27492impl core::ops::Deref for IMimePropertySet {
27493    type Target = windows::Win32::System::Com::IPersistStreamInit;
27494    fn deref(&self) -> &Self::Target {
27495        unsafe { core::mem::transmute(self) }
27496    }
27497}
27498windows_core::imp::interface_hierarchy!(
27499    IMimePropertySet,
27500    windows_core::IUnknown,
27501    windows::Win32::System::Com::IPersist,
27502    windows::Win32::System::Com::IPersistStreamInit
27503);
27504impl IMimePropertySet {
27505    pub unsafe fn Save<P0>(&self, pstm: P0, fcleardirty: bool) -> windows_core::Result<()>
27506    where
27507        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
27508    {
27509        unsafe {
27510            (windows_core::Interface::vtable(self).Save)(
27511                windows_core::Interface::as_raw(self),
27512                pstm.param().abi(),
27513                fcleardirty.into(),
27514            )
27515            .ok()
27516        }
27517    }
27518    pub unsafe fn GetSizeMax(&self) -> windows_core::Result<u64> {
27519        unsafe {
27520            let mut result__ = core::mem::zeroed();
27521            (windows_core::Interface::vtable(self).GetSizeMax)(
27522                windows_core::Interface::as_raw(self),
27523                &mut result__,
27524            )
27525            .map(|| result__)
27526        }
27527    }
27528    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
27529        unsafe {
27530            (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self))
27531                .ok()
27532        }
27533    }
27534    pub unsafe fn GetPropInfo<P0>(
27535        &self,
27536        pszname: P0,
27537        pinfo: *mut MIMEPROPINFO,
27538    ) -> windows_core::Result<()>
27539    where
27540        P0: windows_core::Param<windows_core::PCSTR>,
27541    {
27542        unsafe {
27543            (windows_core::Interface::vtable(self).GetPropInfo)(
27544                windows_core::Interface::as_raw(self),
27545                pszname.param().abi(),
27546                pinfo as _,
27547            )
27548            .ok()
27549        }
27550    }
27551    pub unsafe fn SetPropInfo<P0>(
27552        &self,
27553        pszname: P0,
27554        pinfo: *mut MIMEPROPINFO,
27555    ) -> windows_core::Result<()>
27556    where
27557        P0: windows_core::Param<windows_core::PCSTR>,
27558    {
27559        unsafe {
27560            (windows_core::Interface::vtable(self).SetPropInfo)(
27561                windows_core::Interface::as_raw(self),
27562                pszname.param().abi(),
27563                pinfo as _,
27564            )
27565            .ok()
27566        }
27567    }
27568    pub unsafe fn GetPropA<P0>(
27569        &self,
27570        pszname: P0,
27571        dwflags: u32,
27572        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27573    ) -> windows_core::Result<()>
27574    where
27575        P0: windows_core::Param<windows_core::PCSTR>,
27576    {
27577        unsafe {
27578            (windows_core::Interface::vtable(self).GetPropA)(
27579                windows_core::Interface::as_raw(self),
27580                pszname.param().abi(),
27581                dwflags,
27582                core::mem::transmute(pvalue),
27583            )
27584            .ok()
27585        }
27586    }
27587    pub unsafe fn SetPropA<P0>(
27588        &self,
27589        pszname: P0,
27590        dwflags: u32,
27591        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27592    ) -> windows_core::Result<()>
27593    where
27594        P0: windows_core::Param<windows_core::PCSTR>,
27595    {
27596        unsafe {
27597            (windows_core::Interface::vtable(self).SetPropA)(
27598                windows_core::Interface::as_raw(self),
27599                pszname.param().abi(),
27600                dwflags,
27601                core::mem::transmute(pvalue),
27602            )
27603            .ok()
27604        }
27605    }
27606    pub unsafe fn AppendProp<P0>(
27607        &self,
27608        pszname: P0,
27609        dwflags: u32,
27610        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27611    ) -> windows_core::Result<()>
27612    where
27613        P0: windows_core::Param<windows_core::PCSTR>,
27614    {
27615        unsafe {
27616            (windows_core::Interface::vtable(self).AppendProp)(
27617                windows_core::Interface::as_raw(self),
27618                pszname.param().abi(),
27619                dwflags,
27620                core::mem::transmute(pvalue),
27621            )
27622            .ok()
27623        }
27624    }
27625    pub unsafe fn DeleteProp<P0>(&self, pszname: P0) -> windows_core::Result<()>
27626    where
27627        P0: windows_core::Param<windows_core::PCSTR>,
27628    {
27629        unsafe {
27630            (windows_core::Interface::vtable(self).DeleteProp)(
27631                windows_core::Interface::as_raw(self),
27632                pszname.param().abi(),
27633            )
27634            .ok()
27635        }
27636    }
27637    pub unsafe fn CopyProps<P2>(
27638        &self,
27639        cnames: u32,
27640        prgszname: *const windows_core::PCSTR,
27641        ppropertyset: P2,
27642    ) -> windows_core::Result<()>
27643    where
27644        P2: windows_core::Param<IMimePropertySet>,
27645    {
27646        unsafe {
27647            (windows_core::Interface::vtable(self).CopyProps)(
27648                windows_core::Interface::as_raw(self),
27649                cnames,
27650                prgszname,
27651                ppropertyset.param().abi(),
27652            )
27653            .ok()
27654        }
27655    }
27656    pub unsafe fn MoveProps<P2>(
27657        &self,
27658        cnames: u32,
27659        prgszname: *const windows_core::PCSTR,
27660        ppropertyset: P2,
27661    ) -> windows_core::Result<()>
27662    where
27663        P2: windows_core::Param<IMimePropertySet>,
27664    {
27665        unsafe {
27666            (windows_core::Interface::vtable(self).MoveProps)(
27667                windows_core::Interface::as_raw(self),
27668                cnames,
27669                prgszname,
27670                ppropertyset.param().abi(),
27671            )
27672            .ok()
27673        }
27674    }
27675    pub unsafe fn DeleteExcept(
27676        &self,
27677        cnames: u32,
27678        prgszname: *const windows_core::PCSTR,
27679    ) -> windows_core::Result<()> {
27680        unsafe {
27681            (windows_core::Interface::vtable(self).DeleteExcept)(
27682                windows_core::Interface::as_raw(self),
27683                cnames,
27684                prgszname,
27685            )
27686            .ok()
27687        }
27688    }
27689    pub unsafe fn QueryProp<P0, P1>(
27690        &self,
27691        pszname: P0,
27692        pszcriteria: P1,
27693        fsubstring: u8,
27694        fcasesensitive: u8,
27695    ) -> windows_core::Result<()>
27696    where
27697        P0: windows_core::Param<windows_core::PCSTR>,
27698        P1: windows_core::Param<windows_core::PCSTR>,
27699    {
27700        unsafe {
27701            (windows_core::Interface::vtable(self).QueryProp)(
27702                windows_core::Interface::as_raw(self),
27703                pszname.param().abi(),
27704                pszcriteria.param().abi(),
27705                fsubstring,
27706                fcasesensitive,
27707            )
27708            .ok()
27709        }
27710    }
27711    pub unsafe fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()> {
27712        unsafe {
27713            (windows_core::Interface::vtable(self).GetCharset)(
27714                windows_core::Interface::as_raw(self),
27715                phcharset as _,
27716            )
27717            .ok()
27718        }
27719    }
27720    pub unsafe fn SetCharset(
27721        &self,
27722        hcharset: *mut HCHARSET__,
27723        applytype: CSETAPPLYTYPE,
27724    ) -> windows_core::Result<()> {
27725        unsafe {
27726            (windows_core::Interface::vtable(self).SetCharset)(
27727                windows_core::Interface::as_raw(self),
27728                hcharset as _,
27729                applytype,
27730            )
27731            .ok()
27732        }
27733    }
27734    pub unsafe fn GetParameters<P0>(
27735        &self,
27736        pszname: P0,
27737        pcparams: *mut u32,
27738        pprgparam: *mut *mut MIMEPARAMINFO,
27739    ) -> windows_core::Result<()>
27740    where
27741        P0: windows_core::Param<windows_core::PCSTR>,
27742    {
27743        unsafe {
27744            (windows_core::Interface::vtable(self).GetParameters)(
27745                windows_core::Interface::as_raw(self),
27746                pszname.param().abi(),
27747                pcparams as _,
27748                pprgparam as _,
27749            )
27750            .ok()
27751        }
27752    }
27753    pub unsafe fn IsContentType<P0, P1>(
27754        &self,
27755        pszpritype: P0,
27756        pszsubtype: P1,
27757    ) -> windows_core::Result<()>
27758    where
27759        P0: windows_core::Param<windows_core::PCSTR>,
27760        P1: windows_core::Param<windows_core::PCSTR>,
27761    {
27762        unsafe {
27763            (windows_core::Interface::vtable(self).IsContentType)(
27764                windows_core::Interface::as_raw(self),
27765                pszpritype.param().abi(),
27766                pszsubtype.param().abi(),
27767            )
27768            .ok()
27769        }
27770    }
27771    pub unsafe fn BindToObject(
27772        &self,
27773        riid: *const windows_core::GUID,
27774        ppvobject: *mut *mut core::ffi::c_void,
27775    ) -> windows_core::Result<()> {
27776        unsafe {
27777            (windows_core::Interface::vtable(self).BindToObject)(
27778                windows_core::Interface::as_raw(self),
27779                riid,
27780                ppvobject as _,
27781            )
27782            .ok()
27783        }
27784    }
27785    pub unsafe fn Clone(&self) -> windows_core::Result<IMimePropertySet> {
27786        unsafe {
27787            let mut result__ = core::mem::zeroed();
27788            (windows_core::Interface::vtable(self).Clone)(
27789                windows_core::Interface::as_raw(self),
27790                &mut result__,
27791            )
27792            .and_then(|| windows_core::Type::from_abi(result__))
27793        }
27794    }
27795    pub unsafe fn SetOption(
27796        &self,
27797        oid: u32,
27798        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27799    ) -> windows_core::Result<()> {
27800        unsafe {
27801            (windows_core::Interface::vtable(self).SetOption)(
27802                windows_core::Interface::as_raw(self),
27803                oid,
27804                core::mem::transmute(pvalue),
27805            )
27806            .ok()
27807        }
27808    }
27809    pub unsafe fn GetOption(
27810        &self,
27811        oid: u32,
27812        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27813    ) -> windows_core::Result<()> {
27814        unsafe {
27815            (windows_core::Interface::vtable(self).GetOption)(
27816                windows_core::Interface::as_raw(self),
27817                oid,
27818                core::mem::transmute(pvalue),
27819            )
27820            .ok()
27821        }
27822    }
27823    pub unsafe fn EnumPropsA(&self, dwflags: u32) -> windows_core::Result<IMimeEnumProperties> {
27824        unsafe {
27825            let mut result__ = core::mem::zeroed();
27826            (windows_core::Interface::vtable(self).EnumPropsA)(
27827                windows_core::Interface::as_raw(self),
27828                dwflags,
27829                &mut result__,
27830            )
27831            .and_then(|| windows_core::Type::from_abi(result__))
27832        }
27833    }
27834}
27835#[repr(C)]
27836pub struct IMimePropertySet_Vtbl {
27837    pub base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl,
27838    pub Save: unsafe extern "system" fn(
27839        *mut core::ffi::c_void,
27840        *mut core::ffi::c_void,
27841        windows_core::BOOL,
27842    ) -> windows_core::HRESULT,
27843    pub GetSizeMax:
27844        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
27845    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
27846    pub GetPropInfo: unsafe extern "system" fn(
27847        *mut core::ffi::c_void,
27848        windows_core::PCSTR,
27849        *mut MIMEPROPINFO,
27850    ) -> windows_core::HRESULT,
27851    pub SetPropInfo: unsafe extern "system" fn(
27852        *mut core::ffi::c_void,
27853        windows_core::PCSTR,
27854        *mut MIMEPROPINFO,
27855    ) -> windows_core::HRESULT,
27856    pub GetPropA: unsafe extern "system" fn(
27857        *mut core::ffi::c_void,
27858        windows_core::PCSTR,
27859        u32,
27860        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27861    ) -> windows_core::HRESULT,
27862    pub SetPropA: unsafe extern "system" fn(
27863        *mut core::ffi::c_void,
27864        windows_core::PCSTR,
27865        u32,
27866        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27867    ) -> windows_core::HRESULT,
27868    pub AppendProp: 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 DeleteProp: unsafe extern "system" fn(
27875        *mut core::ffi::c_void,
27876        windows_core::PCSTR,
27877    ) -> windows_core::HRESULT,
27878    pub CopyProps: unsafe extern "system" fn(
27879        *mut core::ffi::c_void,
27880        u32,
27881        *const windows_core::PCSTR,
27882        *mut core::ffi::c_void,
27883    ) -> windows_core::HRESULT,
27884    pub MoveProps: unsafe extern "system" fn(
27885        *mut core::ffi::c_void,
27886        u32,
27887        *const windows_core::PCSTR,
27888        *mut core::ffi::c_void,
27889    ) -> windows_core::HRESULT,
27890    pub DeleteExcept: unsafe extern "system" fn(
27891        *mut core::ffi::c_void,
27892        u32,
27893        *const windows_core::PCSTR,
27894    ) -> windows_core::HRESULT,
27895    pub QueryProp: unsafe extern "system" fn(
27896        *mut core::ffi::c_void,
27897        windows_core::PCSTR,
27898        windows_core::PCSTR,
27899        u8,
27900        u8,
27901    ) -> windows_core::HRESULT,
27902    pub GetCharset: unsafe extern "system" fn(
27903        *mut core::ffi::c_void,
27904        *mut *mut HCHARSET__,
27905    ) -> windows_core::HRESULT,
27906    pub SetCharset: unsafe extern "system" fn(
27907        *mut core::ffi::c_void,
27908        *mut HCHARSET__,
27909        CSETAPPLYTYPE,
27910    ) -> windows_core::HRESULT,
27911    pub GetParameters: unsafe extern "system" fn(
27912        *mut core::ffi::c_void,
27913        windows_core::PCSTR,
27914        *mut u32,
27915        *mut *mut MIMEPARAMINFO,
27916    ) -> windows_core::HRESULT,
27917    pub IsContentType: unsafe extern "system" fn(
27918        *mut core::ffi::c_void,
27919        windows_core::PCSTR,
27920        windows_core::PCSTR,
27921    ) -> windows_core::HRESULT,
27922    pub BindToObject: unsafe extern "system" fn(
27923        *mut core::ffi::c_void,
27924        *const windows_core::GUID,
27925        *mut *mut core::ffi::c_void,
27926    ) -> windows_core::HRESULT,
27927    pub Clone: unsafe extern "system" fn(
27928        *mut core::ffi::c_void,
27929        *mut *mut core::ffi::c_void,
27930    ) -> windows_core::HRESULT,
27931    pub SetOption: unsafe extern "system" fn(
27932        *mut core::ffi::c_void,
27933        u32,
27934        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27935    ) -> windows_core::HRESULT,
27936    pub GetOption: unsafe extern "system" fn(
27937        *mut core::ffi::c_void,
27938        u32,
27939        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27940    ) -> windows_core::HRESULT,
27941    pub EnumPropsA: unsafe extern "system" fn(
27942        *mut core::ffi::c_void,
27943        u32,
27944        *mut *mut core::ffi::c_void,
27945    ) -> windows_core::HRESULT,
27946}
27947pub trait IMimePropertySet_Impl: windows::Win32::System::Com::IPersistStreamInit_Impl {
27948    fn Save(
27949        &self,
27950        pstm: windows_core::Ref<'_, windows::Win32::System::Com::IStream>,
27951        fcleardirty: windows_core::BOOL,
27952    ) -> windows_core::Result<()>;
27953    fn GetSizeMax(&self) -> windows_core::Result<u64>;
27954    fn InitNew(&self) -> windows_core::Result<()>;
27955    fn GetPropInfo(
27956        &self,
27957        pszname: &windows_core::PCSTR,
27958        pinfo: *mut MIMEPROPINFO,
27959    ) -> windows_core::Result<()>;
27960    fn SetPropInfo(
27961        &self,
27962        pszname: &windows_core::PCSTR,
27963        pinfo: *mut MIMEPROPINFO,
27964    ) -> windows_core::Result<()>;
27965    fn GetPropA(
27966        &self,
27967        pszname: &windows_core::PCSTR,
27968        dwflags: u32,
27969        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27970    ) -> windows_core::Result<()>;
27971    fn SetPropA(
27972        &self,
27973        pszname: &windows_core::PCSTR,
27974        dwflags: u32,
27975        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27976    ) -> windows_core::Result<()>;
27977    fn AppendProp(
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 DeleteProp(&self, pszname: &windows_core::PCSTR) -> windows_core::Result<()>;
27984    fn CopyProps(
27985        &self,
27986        cnames: u32,
27987        prgszname: *const windows_core::PCSTR,
27988        ppropertyset: windows_core::Ref<'_, IMimePropertySet>,
27989    ) -> windows_core::Result<()>;
27990    fn MoveProps(
27991        &self,
27992        cnames: u32,
27993        prgszname: *const windows_core::PCSTR,
27994        ppropertyset: windows_core::Ref<'_, IMimePropertySet>,
27995    ) -> windows_core::Result<()>;
27996    fn DeleteExcept(
27997        &self,
27998        cnames: u32,
27999        prgszname: *const windows_core::PCSTR,
28000    ) -> windows_core::Result<()>;
28001    fn QueryProp(
28002        &self,
28003        pszname: &windows_core::PCSTR,
28004        pszcriteria: &windows_core::PCSTR,
28005        fsubstring: u8,
28006        fcasesensitive: u8,
28007    ) -> windows_core::Result<()>;
28008    fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()>;
28009    fn SetCharset(
28010        &self,
28011        hcharset: *mut HCHARSET__,
28012        applytype: CSETAPPLYTYPE,
28013    ) -> windows_core::Result<()>;
28014    fn GetParameters(
28015        &self,
28016        pszname: &windows_core::PCSTR,
28017        pcparams: *mut u32,
28018        pprgparam: *mut *mut MIMEPARAMINFO,
28019    ) -> windows_core::Result<()>;
28020    fn IsContentType(
28021        &self,
28022        pszpritype: &windows_core::PCSTR,
28023        pszsubtype: &windows_core::PCSTR,
28024    ) -> windows_core::Result<()>;
28025    fn BindToObject(
28026        &self,
28027        riid: *const windows_core::GUID,
28028        ppvobject: *mut *mut core::ffi::c_void,
28029    ) -> windows_core::Result<()>;
28030    fn Clone(&self) -> windows_core::Result<IMimePropertySet>;
28031    fn SetOption(
28032        &self,
28033        oid: u32,
28034        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28035    ) -> windows_core::Result<()>;
28036    fn GetOption(
28037        &self,
28038        oid: u32,
28039        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28040    ) -> windows_core::Result<()>;
28041    fn EnumPropsA(&self, dwflags: u32) -> windows_core::Result<IMimeEnumProperties>;
28042}
28043impl IMimePropertySet_Vtbl {
28044    pub const fn new<Identity: IMimePropertySet_Impl, const OFFSET: isize>() -> Self {
28045        unsafe extern "system" fn Save<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28046            this: *mut core::ffi::c_void,
28047            pstm: *mut core::ffi::c_void,
28048            fcleardirty: windows_core::BOOL,
28049        ) -> windows_core::HRESULT {
28050            unsafe {
28051                let this: &Identity =
28052                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28053                IMimePropertySet_Impl::Save(
28054                    this,
28055                    core::mem::transmute_copy(&pstm),
28056                    core::mem::transmute_copy(&fcleardirty),
28057                )
28058                .into()
28059            }
28060        }
28061        unsafe extern "system" fn GetSizeMax<
28062            Identity: IMimePropertySet_Impl,
28063            const OFFSET: isize,
28064        >(
28065            this: *mut core::ffi::c_void,
28066            pcbsize: *mut u64,
28067        ) -> windows_core::HRESULT {
28068            unsafe {
28069                let this: &Identity =
28070                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28071                match IMimePropertySet_Impl::GetSizeMax(this) {
28072                    Ok(ok__) => {
28073                        pcbsize.write(core::mem::transmute(ok__));
28074                        windows_core::HRESULT(0)
28075                    }
28076                    Err(err) => err.into(),
28077                }
28078            }
28079        }
28080        unsafe extern "system" fn InitNew<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28081            this: *mut core::ffi::c_void,
28082        ) -> windows_core::HRESULT {
28083            unsafe {
28084                let this: &Identity =
28085                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28086                IMimePropertySet_Impl::InitNew(this).into()
28087            }
28088        }
28089        unsafe extern "system" fn GetPropInfo<
28090            Identity: IMimePropertySet_Impl,
28091            const OFFSET: isize,
28092        >(
28093            this: *mut core::ffi::c_void,
28094            pszname: windows_core::PCSTR,
28095            pinfo: *mut MIMEPROPINFO,
28096        ) -> windows_core::HRESULT {
28097            unsafe {
28098                let this: &Identity =
28099                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28100                IMimePropertySet_Impl::GetPropInfo(
28101                    this,
28102                    core::mem::transmute(&pszname),
28103                    core::mem::transmute_copy(&pinfo),
28104                )
28105                .into()
28106            }
28107        }
28108        unsafe extern "system" fn SetPropInfo<
28109            Identity: IMimePropertySet_Impl,
28110            const OFFSET: isize,
28111        >(
28112            this: *mut core::ffi::c_void,
28113            pszname: windows_core::PCSTR,
28114            pinfo: *mut MIMEPROPINFO,
28115        ) -> windows_core::HRESULT {
28116            unsafe {
28117                let this: &Identity =
28118                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28119                IMimePropertySet_Impl::SetPropInfo(
28120                    this,
28121                    core::mem::transmute(&pszname),
28122                    core::mem::transmute_copy(&pinfo),
28123                )
28124                .into()
28125            }
28126        }
28127        unsafe extern "system" fn GetPropA<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28128            this: *mut core::ffi::c_void,
28129            pszname: windows_core::PCSTR,
28130            dwflags: u32,
28131            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28132        ) -> windows_core::HRESULT {
28133            unsafe {
28134                let this: &Identity =
28135                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28136                IMimePropertySet_Impl::GetPropA(
28137                    this,
28138                    core::mem::transmute(&pszname),
28139                    core::mem::transmute_copy(&dwflags),
28140                    core::mem::transmute_copy(&pvalue),
28141                )
28142                .into()
28143            }
28144        }
28145        unsafe extern "system" fn SetPropA<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28146            this: *mut core::ffi::c_void,
28147            pszname: windows_core::PCSTR,
28148            dwflags: u32,
28149            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28150        ) -> windows_core::HRESULT {
28151            unsafe {
28152                let this: &Identity =
28153                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28154                IMimePropertySet_Impl::SetPropA(
28155                    this,
28156                    core::mem::transmute(&pszname),
28157                    core::mem::transmute_copy(&dwflags),
28158                    core::mem::transmute_copy(&pvalue),
28159                )
28160                .into()
28161            }
28162        }
28163        unsafe extern "system" fn AppendProp<
28164            Identity: IMimePropertySet_Impl,
28165            const OFFSET: isize,
28166        >(
28167            this: *mut core::ffi::c_void,
28168            pszname: windows_core::PCSTR,
28169            dwflags: u32,
28170            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28171        ) -> windows_core::HRESULT {
28172            unsafe {
28173                let this: &Identity =
28174                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28175                IMimePropertySet_Impl::AppendProp(
28176                    this,
28177                    core::mem::transmute(&pszname),
28178                    core::mem::transmute_copy(&dwflags),
28179                    core::mem::transmute_copy(&pvalue),
28180                )
28181                .into()
28182            }
28183        }
28184        unsafe extern "system" fn DeleteProp<
28185            Identity: IMimePropertySet_Impl,
28186            const OFFSET: isize,
28187        >(
28188            this: *mut core::ffi::c_void,
28189            pszname: windows_core::PCSTR,
28190        ) -> windows_core::HRESULT {
28191            unsafe {
28192                let this: &Identity =
28193                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28194                IMimePropertySet_Impl::DeleteProp(this, core::mem::transmute(&pszname)).into()
28195            }
28196        }
28197        unsafe extern "system" fn CopyProps<
28198            Identity: IMimePropertySet_Impl,
28199            const OFFSET: isize,
28200        >(
28201            this: *mut core::ffi::c_void,
28202            cnames: u32,
28203            prgszname: *const windows_core::PCSTR,
28204            ppropertyset: *mut core::ffi::c_void,
28205        ) -> windows_core::HRESULT {
28206            unsafe {
28207                let this: &Identity =
28208                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28209                IMimePropertySet_Impl::CopyProps(
28210                    this,
28211                    core::mem::transmute_copy(&cnames),
28212                    core::mem::transmute_copy(&prgszname),
28213                    core::mem::transmute_copy(&ppropertyset),
28214                )
28215                .into()
28216            }
28217        }
28218        unsafe extern "system" fn MoveProps<
28219            Identity: IMimePropertySet_Impl,
28220            const OFFSET: isize,
28221        >(
28222            this: *mut core::ffi::c_void,
28223            cnames: u32,
28224            prgszname: *const windows_core::PCSTR,
28225            ppropertyset: *mut core::ffi::c_void,
28226        ) -> windows_core::HRESULT {
28227            unsafe {
28228                let this: &Identity =
28229                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28230                IMimePropertySet_Impl::MoveProps(
28231                    this,
28232                    core::mem::transmute_copy(&cnames),
28233                    core::mem::transmute_copy(&prgszname),
28234                    core::mem::transmute_copy(&ppropertyset),
28235                )
28236                .into()
28237            }
28238        }
28239        unsafe extern "system" fn DeleteExcept<
28240            Identity: IMimePropertySet_Impl,
28241            const OFFSET: isize,
28242        >(
28243            this: *mut core::ffi::c_void,
28244            cnames: u32,
28245            prgszname: *const windows_core::PCSTR,
28246        ) -> windows_core::HRESULT {
28247            unsafe {
28248                let this: &Identity =
28249                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28250                IMimePropertySet_Impl::DeleteExcept(
28251                    this,
28252                    core::mem::transmute_copy(&cnames),
28253                    core::mem::transmute_copy(&prgszname),
28254                )
28255                .into()
28256            }
28257        }
28258        unsafe extern "system" fn QueryProp<
28259            Identity: IMimePropertySet_Impl,
28260            const OFFSET: isize,
28261        >(
28262            this: *mut core::ffi::c_void,
28263            pszname: windows_core::PCSTR,
28264            pszcriteria: windows_core::PCSTR,
28265            fsubstring: u8,
28266            fcasesensitive: u8,
28267        ) -> windows_core::HRESULT {
28268            unsafe {
28269                let this: &Identity =
28270                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28271                IMimePropertySet_Impl::QueryProp(
28272                    this,
28273                    core::mem::transmute(&pszname),
28274                    core::mem::transmute(&pszcriteria),
28275                    core::mem::transmute_copy(&fsubstring),
28276                    core::mem::transmute_copy(&fcasesensitive),
28277                )
28278                .into()
28279            }
28280        }
28281        unsafe extern "system" fn GetCharset<
28282            Identity: IMimePropertySet_Impl,
28283            const OFFSET: isize,
28284        >(
28285            this: *mut core::ffi::c_void,
28286            phcharset: *mut *mut HCHARSET__,
28287        ) -> windows_core::HRESULT {
28288            unsafe {
28289                let this: &Identity =
28290                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28291                IMimePropertySet_Impl::GetCharset(this, core::mem::transmute_copy(&phcharset))
28292                    .into()
28293            }
28294        }
28295        unsafe extern "system" fn SetCharset<
28296            Identity: IMimePropertySet_Impl,
28297            const OFFSET: isize,
28298        >(
28299            this: *mut core::ffi::c_void,
28300            hcharset: *mut HCHARSET__,
28301            applytype: CSETAPPLYTYPE,
28302        ) -> windows_core::HRESULT {
28303            unsafe {
28304                let this: &Identity =
28305                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28306                IMimePropertySet_Impl::SetCharset(
28307                    this,
28308                    core::mem::transmute_copy(&hcharset),
28309                    core::mem::transmute_copy(&applytype),
28310                )
28311                .into()
28312            }
28313        }
28314        unsafe extern "system" fn GetParameters<
28315            Identity: IMimePropertySet_Impl,
28316            const OFFSET: isize,
28317        >(
28318            this: *mut core::ffi::c_void,
28319            pszname: windows_core::PCSTR,
28320            pcparams: *mut u32,
28321            pprgparam: *mut *mut MIMEPARAMINFO,
28322        ) -> windows_core::HRESULT {
28323            unsafe {
28324                let this: &Identity =
28325                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28326                IMimePropertySet_Impl::GetParameters(
28327                    this,
28328                    core::mem::transmute(&pszname),
28329                    core::mem::transmute_copy(&pcparams),
28330                    core::mem::transmute_copy(&pprgparam),
28331                )
28332                .into()
28333            }
28334        }
28335        unsafe extern "system" fn IsContentType<
28336            Identity: IMimePropertySet_Impl,
28337            const OFFSET: isize,
28338        >(
28339            this: *mut core::ffi::c_void,
28340            pszpritype: windows_core::PCSTR,
28341            pszsubtype: windows_core::PCSTR,
28342        ) -> windows_core::HRESULT {
28343            unsafe {
28344                let this: &Identity =
28345                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28346                IMimePropertySet_Impl::IsContentType(
28347                    this,
28348                    core::mem::transmute(&pszpritype),
28349                    core::mem::transmute(&pszsubtype),
28350                )
28351                .into()
28352            }
28353        }
28354        unsafe extern "system" fn BindToObject<
28355            Identity: IMimePropertySet_Impl,
28356            const OFFSET: isize,
28357        >(
28358            this: *mut core::ffi::c_void,
28359            riid: *const windows_core::GUID,
28360            ppvobject: *mut *mut core::ffi::c_void,
28361        ) -> windows_core::HRESULT {
28362            unsafe {
28363                let this: &Identity =
28364                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28365                IMimePropertySet_Impl::BindToObject(
28366                    this,
28367                    core::mem::transmute_copy(&riid),
28368                    core::mem::transmute_copy(&ppvobject),
28369                )
28370                .into()
28371            }
28372        }
28373        unsafe extern "system" fn Clone<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28374            this: *mut core::ffi::c_void,
28375            pppropertyset: *mut *mut core::ffi::c_void,
28376        ) -> windows_core::HRESULT {
28377            unsafe {
28378                let this: &Identity =
28379                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28380                match IMimePropertySet_Impl::Clone(this) {
28381                    Ok(ok__) => {
28382                        pppropertyset.write(core::mem::transmute(ok__));
28383                        windows_core::HRESULT(0)
28384                    }
28385                    Err(err) => err.into(),
28386                }
28387            }
28388        }
28389        unsafe extern "system" fn SetOption<
28390            Identity: IMimePropertySet_Impl,
28391            const OFFSET: isize,
28392        >(
28393            this: *mut core::ffi::c_void,
28394            oid: u32,
28395            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28396        ) -> windows_core::HRESULT {
28397            unsafe {
28398                let this: &Identity =
28399                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28400                IMimePropertySet_Impl::SetOption(
28401                    this,
28402                    core::mem::transmute_copy(&oid),
28403                    core::mem::transmute_copy(&pvalue),
28404                )
28405                .into()
28406            }
28407        }
28408        unsafe extern "system" fn GetOption<
28409            Identity: IMimePropertySet_Impl,
28410            const OFFSET: isize,
28411        >(
28412            this: *mut core::ffi::c_void,
28413            oid: u32,
28414            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28415        ) -> windows_core::HRESULT {
28416            unsafe {
28417                let this: &Identity =
28418                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28419                IMimePropertySet_Impl::GetOption(
28420                    this,
28421                    core::mem::transmute_copy(&oid),
28422                    core::mem::transmute_copy(&pvalue),
28423                )
28424                .into()
28425            }
28426        }
28427        unsafe extern "system" fn EnumPropsA<
28428            Identity: IMimePropertySet_Impl,
28429            const OFFSET: isize,
28430        >(
28431            this: *mut core::ffi::c_void,
28432            dwflags: u32,
28433            ppenum: *mut *mut core::ffi::c_void,
28434        ) -> windows_core::HRESULT {
28435            unsafe {
28436                let this: &Identity =
28437                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28438                match IMimePropertySet_Impl::EnumPropsA(this, core::mem::transmute_copy(&dwflags)) {
28439                    Ok(ok__) => {
28440                        ppenum.write(core::mem::transmute(ok__));
28441                        windows_core::HRESULT(0)
28442                    }
28443                    Err(err) => err.into(),
28444                }
28445            }
28446        }
28447        Self {
28448            base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl::new::<Identity, OFFSET>(),
28449            Save: Save::<Identity, OFFSET>,
28450            GetSizeMax: GetSizeMax::<Identity, OFFSET>,
28451            InitNew: InitNew::<Identity, OFFSET>,
28452            GetPropInfo: GetPropInfo::<Identity, OFFSET>,
28453            SetPropInfo: SetPropInfo::<Identity, OFFSET>,
28454            GetPropA: GetPropA::<Identity, OFFSET>,
28455            SetPropA: SetPropA::<Identity, OFFSET>,
28456            AppendProp: AppendProp::<Identity, OFFSET>,
28457            DeleteProp: DeleteProp::<Identity, OFFSET>,
28458            CopyProps: CopyProps::<Identity, OFFSET>,
28459            MoveProps: MoveProps::<Identity, OFFSET>,
28460            DeleteExcept: DeleteExcept::<Identity, OFFSET>,
28461            QueryProp: QueryProp::<Identity, OFFSET>,
28462            GetCharset: GetCharset::<Identity, OFFSET>,
28463            SetCharset: SetCharset::<Identity, OFFSET>,
28464            GetParameters: GetParameters::<Identity, OFFSET>,
28465            IsContentType: IsContentType::<Identity, OFFSET>,
28466            BindToObject: BindToObject::<Identity, OFFSET>,
28467            Clone: Clone::<Identity, OFFSET>,
28468            SetOption: SetOption::<Identity, OFFSET>,
28469            GetOption: GetOption::<Identity, OFFSET>,
28470            EnumPropsA: EnumPropsA::<Identity, OFFSET>,
28471        }
28472    }
28473    pub fn matches(iid: &windows_core::GUID) -> bool {
28474        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
28475    }
28476}
28477impl windows_core::RuntimeName for IMimePropertySet {}
28478windows_core::imp::define_interface!(
28479    IMimeSecurity,
28480    IMimeSecurity_Vtbl,
28481    0xc5588353_7f86_11d0_8252_00c04fd85ab4
28482);
28483windows_core::imp::interface_hierarchy!(IMimeSecurity, windows_core::IUnknown);
28484impl IMimeSecurity {
28485    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
28486        unsafe {
28487            (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self))
28488                .ok()
28489        }
28490    }
28491    pub unsafe fn CheckInit(&self) -> windows_core::Result<()> {
28492        unsafe {
28493            (windows_core::Interface::vtable(self).CheckInit)(windows_core::Interface::as_raw(self))
28494                .ok()
28495        }
28496    }
28497    pub unsafe fn EncodeMessage<P0>(&self, ptree: P0, dwflags: u32) -> windows_core::Result<()>
28498    where
28499        P0: windows_core::Param<IMimeMessageTree>,
28500    {
28501        unsafe {
28502            (windows_core::Interface::vtable(self).EncodeMessage)(
28503                windows_core::Interface::as_raw(self),
28504                ptree.param().abi(),
28505                dwflags,
28506            )
28507            .ok()
28508        }
28509    }
28510    pub unsafe fn EncodeBody<P0>(
28511        &self,
28512        ptree: P0,
28513        hencoderoot: *mut HBODY__,
28514        dwflags: u32,
28515    ) -> windows_core::Result<()>
28516    where
28517        P0: windows_core::Param<IMimeMessageTree>,
28518    {
28519        unsafe {
28520            (windows_core::Interface::vtable(self).EncodeBody)(
28521                windows_core::Interface::as_raw(self),
28522                ptree.param().abi(),
28523                hencoderoot as _,
28524                dwflags,
28525            )
28526            .ok()
28527        }
28528    }
28529    pub unsafe fn DecodeMessage<P0>(&self, ptree: P0, dwflags: u32) -> windows_core::Result<()>
28530    where
28531        P0: windows_core::Param<IMimeMessageTree>,
28532    {
28533        unsafe {
28534            (windows_core::Interface::vtable(self).DecodeMessage)(
28535                windows_core::Interface::as_raw(self),
28536                ptree.param().abi(),
28537                dwflags,
28538            )
28539            .ok()
28540        }
28541    }
28542    pub unsafe fn DecodeBody<P0>(
28543        &self,
28544        ptree: P0,
28545        hdecoderoot: *mut HBODY__,
28546        dwflags: u32,
28547    ) -> windows_core::Result<()>
28548    where
28549        P0: windows_core::Param<IMimeMessageTree>,
28550    {
28551        unsafe {
28552            (windows_core::Interface::vtable(self).DecodeBody)(
28553                windows_core::Interface::as_raw(self),
28554                ptree.param().abi(),
28555                hdecoderoot as _,
28556                dwflags,
28557            )
28558            .ok()
28559        }
28560    }
28561    pub unsafe fn EnumCertificates(
28562        &self,
28563        hc: *mut core::ffi::c_void,
28564        dwusage: u32,
28565        pprev: *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28566        ppcert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28567    ) -> windows_core::Result<()> {
28568        unsafe {
28569            (windows_core::Interface::vtable(self).EnumCertificates)(
28570                windows_core::Interface::as_raw(self),
28571                hc as _,
28572                dwusage,
28573                pprev as _,
28574                ppcert as _,
28575            )
28576            .ok()
28577        }
28578    }
28579    pub unsafe fn GetCertificateName(
28580        &self,
28581        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28582        cn: CERTNAMETYPE,
28583        ppszname: *mut windows_core::PSTR,
28584    ) -> windows_core::Result<()> {
28585        unsafe {
28586            (windows_core::Interface::vtable(self).GetCertificateName)(
28587                windows_core::Interface::as_raw(self),
28588                px509cert,
28589                cn,
28590                ppszname as _,
28591            )
28592            .ok()
28593        }
28594    }
28595    pub unsafe fn GetMessageType<P1>(
28596        &self,
28597        hwndparent: windows::Win32::Foundation::HWND,
28598        pbody: P1,
28599        pdwsectype: *mut u32,
28600    ) -> windows_core::Result<()>
28601    where
28602        P1: windows_core::Param<IMimeBody>,
28603    {
28604        unsafe {
28605            (windows_core::Interface::vtable(self).GetMessageType)(
28606                windows_core::Interface::as_raw(self),
28607                hwndparent,
28608                pbody.param().abi(),
28609                pdwsectype as _,
28610            )
28611            .ok()
28612        }
28613    }
28614    pub unsafe fn GetCertData(
28615        &self,
28616        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28617        dataid: CERTDATAID,
28618        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28619    ) -> windows_core::Result<()> {
28620        unsafe {
28621            (windows_core::Interface::vtable(self).GetCertData)(
28622                windows_core::Interface::as_raw(self),
28623                px509cert,
28624                dataid,
28625                core::mem::transmute(pvalue),
28626            )
28627            .ok()
28628        }
28629    }
28630}
28631#[repr(C)]
28632pub struct IMimeSecurity_Vtbl {
28633    pub base__: windows_core::IUnknown_Vtbl,
28634    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
28635    pub CheckInit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
28636    pub EncodeMessage: unsafe extern "system" fn(
28637        *mut core::ffi::c_void,
28638        *mut core::ffi::c_void,
28639        u32,
28640    ) -> windows_core::HRESULT,
28641    pub EncodeBody: unsafe extern "system" fn(
28642        *mut core::ffi::c_void,
28643        *mut core::ffi::c_void,
28644        *mut HBODY__,
28645        u32,
28646    ) -> windows_core::HRESULT,
28647    pub DecodeMessage: unsafe extern "system" fn(
28648        *mut core::ffi::c_void,
28649        *mut core::ffi::c_void,
28650        u32,
28651    ) -> windows_core::HRESULT,
28652    pub DecodeBody: unsafe extern "system" fn(
28653        *mut core::ffi::c_void,
28654        *mut core::ffi::c_void,
28655        *mut HBODY__,
28656        u32,
28657    ) -> windows_core::HRESULT,
28658    pub EnumCertificates: unsafe extern "system" fn(
28659        *mut core::ffi::c_void,
28660        *mut core::ffi::c_void,
28661        u32,
28662        *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28663        *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28664    ) -> windows_core::HRESULT,
28665    pub GetCertificateName: unsafe extern "system" fn(
28666        *mut core::ffi::c_void,
28667        *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28668        CERTNAMETYPE,
28669        *mut windows_core::PSTR,
28670    ) -> windows_core::HRESULT,
28671    pub GetMessageType: unsafe extern "system" fn(
28672        *mut core::ffi::c_void,
28673        windows::Win32::Foundation::HWND,
28674        *mut core::ffi::c_void,
28675        *mut u32,
28676    ) -> windows_core::HRESULT,
28677    pub GetCertData: unsafe extern "system" fn(
28678        *mut core::ffi::c_void,
28679        *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28680        CERTDATAID,
28681        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28682    ) -> windows_core::HRESULT,
28683}
28684pub trait IMimeSecurity_Impl: windows_core::IUnknownImpl {
28685    fn InitNew(&self) -> windows_core::Result<()>;
28686    fn CheckInit(&self) -> windows_core::Result<()>;
28687    fn EncodeMessage(
28688        &self,
28689        ptree: windows_core::Ref<'_, IMimeMessageTree>,
28690        dwflags: u32,
28691    ) -> windows_core::Result<()>;
28692    fn EncodeBody(
28693        &self,
28694        ptree: windows_core::Ref<'_, IMimeMessageTree>,
28695        hencoderoot: *mut HBODY__,
28696        dwflags: u32,
28697    ) -> windows_core::Result<()>;
28698    fn DecodeMessage(
28699        &self,
28700        ptree: windows_core::Ref<'_, IMimeMessageTree>,
28701        dwflags: u32,
28702    ) -> windows_core::Result<()>;
28703    fn DecodeBody(
28704        &self,
28705        ptree: windows_core::Ref<'_, IMimeMessageTree>,
28706        hdecoderoot: *mut HBODY__,
28707        dwflags: u32,
28708    ) -> windows_core::Result<()>;
28709    fn EnumCertificates(
28710        &self,
28711        hc: *mut core::ffi::c_void,
28712        dwusage: u32,
28713        pprev: *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28714        ppcert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28715    ) -> windows_core::Result<()>;
28716    fn GetCertificateName(
28717        &self,
28718        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28719        cn: CERTNAMETYPE,
28720        ppszname: *mut windows_core::PSTR,
28721    ) -> windows_core::Result<()>;
28722    fn GetMessageType(
28723        &self,
28724        hwndparent: windows::Win32::Foundation::HWND,
28725        pbody: windows_core::Ref<'_, IMimeBody>,
28726        pdwsectype: *mut u32,
28727    ) -> windows_core::Result<()>;
28728    fn GetCertData(
28729        &self,
28730        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28731        dataid: CERTDATAID,
28732        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28733    ) -> windows_core::Result<()>;
28734}
28735impl IMimeSecurity_Vtbl {
28736    pub const fn new<Identity: IMimeSecurity_Impl, const OFFSET: isize>() -> Self {
28737        unsafe extern "system" fn InitNew<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28738            this: *mut core::ffi::c_void,
28739        ) -> windows_core::HRESULT {
28740            unsafe {
28741                let this: &Identity =
28742                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28743                IMimeSecurity_Impl::InitNew(this).into()
28744            }
28745        }
28746        unsafe extern "system" fn CheckInit<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28747            this: *mut core::ffi::c_void,
28748        ) -> windows_core::HRESULT {
28749            unsafe {
28750                let this: &Identity =
28751                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28752                IMimeSecurity_Impl::CheckInit(this).into()
28753            }
28754        }
28755        unsafe extern "system" fn EncodeMessage<
28756            Identity: IMimeSecurity_Impl,
28757            const OFFSET: isize,
28758        >(
28759            this: *mut core::ffi::c_void,
28760            ptree: *mut core::ffi::c_void,
28761            dwflags: u32,
28762        ) -> windows_core::HRESULT {
28763            unsafe {
28764                let this: &Identity =
28765                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28766                IMimeSecurity_Impl::EncodeMessage(
28767                    this,
28768                    core::mem::transmute_copy(&ptree),
28769                    core::mem::transmute_copy(&dwflags),
28770                )
28771                .into()
28772            }
28773        }
28774        unsafe extern "system" fn EncodeBody<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28775            this: *mut core::ffi::c_void,
28776            ptree: *mut core::ffi::c_void,
28777            hencoderoot: *mut HBODY__,
28778            dwflags: u32,
28779        ) -> windows_core::HRESULT {
28780            unsafe {
28781                let this: &Identity =
28782                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28783                IMimeSecurity_Impl::EncodeBody(
28784                    this,
28785                    core::mem::transmute_copy(&ptree),
28786                    core::mem::transmute_copy(&hencoderoot),
28787                    core::mem::transmute_copy(&dwflags),
28788                )
28789                .into()
28790            }
28791        }
28792        unsafe extern "system" fn DecodeMessage<
28793            Identity: IMimeSecurity_Impl,
28794            const OFFSET: isize,
28795        >(
28796            this: *mut core::ffi::c_void,
28797            ptree: *mut core::ffi::c_void,
28798            dwflags: u32,
28799        ) -> windows_core::HRESULT {
28800            unsafe {
28801                let this: &Identity =
28802                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28803                IMimeSecurity_Impl::DecodeMessage(
28804                    this,
28805                    core::mem::transmute_copy(&ptree),
28806                    core::mem::transmute_copy(&dwflags),
28807                )
28808                .into()
28809            }
28810        }
28811        unsafe extern "system" fn DecodeBody<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28812            this: *mut core::ffi::c_void,
28813            ptree: *mut core::ffi::c_void,
28814            hdecoderoot: *mut HBODY__,
28815            dwflags: u32,
28816        ) -> windows_core::HRESULT {
28817            unsafe {
28818                let this: &Identity =
28819                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28820                IMimeSecurity_Impl::DecodeBody(
28821                    this,
28822                    core::mem::transmute_copy(&ptree),
28823                    core::mem::transmute_copy(&hdecoderoot),
28824                    core::mem::transmute_copy(&dwflags),
28825                )
28826                .into()
28827            }
28828        }
28829        unsafe extern "system" fn EnumCertificates<
28830            Identity: IMimeSecurity_Impl,
28831            const OFFSET: isize,
28832        >(
28833            this: *mut core::ffi::c_void,
28834            hc: *mut core::ffi::c_void,
28835            dwusage: u32,
28836            pprev: *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28837            ppcert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28838        ) -> windows_core::HRESULT {
28839            unsafe {
28840                let this: &Identity =
28841                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28842                IMimeSecurity_Impl::EnumCertificates(
28843                    this,
28844                    core::mem::transmute_copy(&hc),
28845                    core::mem::transmute_copy(&dwusage),
28846                    core::mem::transmute_copy(&pprev),
28847                    core::mem::transmute_copy(&ppcert),
28848                )
28849                .into()
28850            }
28851        }
28852        unsafe extern "system" fn GetCertificateName<
28853            Identity: IMimeSecurity_Impl,
28854            const OFFSET: isize,
28855        >(
28856            this: *mut core::ffi::c_void,
28857            px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28858            cn: CERTNAMETYPE,
28859            ppszname: *mut windows_core::PSTR,
28860        ) -> windows_core::HRESULT {
28861            unsafe {
28862                let this: &Identity =
28863                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28864                IMimeSecurity_Impl::GetCertificateName(
28865                    this,
28866                    core::mem::transmute_copy(&px509cert),
28867                    core::mem::transmute_copy(&cn),
28868                    core::mem::transmute_copy(&ppszname),
28869                )
28870                .into()
28871            }
28872        }
28873        unsafe extern "system" fn GetMessageType<
28874            Identity: IMimeSecurity_Impl,
28875            const OFFSET: isize,
28876        >(
28877            this: *mut core::ffi::c_void,
28878            hwndparent: windows::Win32::Foundation::HWND,
28879            pbody: *mut core::ffi::c_void,
28880            pdwsectype: *mut u32,
28881        ) -> windows_core::HRESULT {
28882            unsafe {
28883                let this: &Identity =
28884                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28885                IMimeSecurity_Impl::GetMessageType(
28886                    this,
28887                    core::mem::transmute_copy(&hwndparent),
28888                    core::mem::transmute_copy(&pbody),
28889                    core::mem::transmute_copy(&pdwsectype),
28890                )
28891                .into()
28892            }
28893        }
28894        unsafe extern "system" fn GetCertData<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28895            this: *mut core::ffi::c_void,
28896            px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28897            dataid: CERTDATAID,
28898            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28899        ) -> windows_core::HRESULT {
28900            unsafe {
28901                let this: &Identity =
28902                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28903                IMimeSecurity_Impl::GetCertData(
28904                    this,
28905                    core::mem::transmute_copy(&px509cert),
28906                    core::mem::transmute_copy(&dataid),
28907                    core::mem::transmute_copy(&pvalue),
28908                )
28909                .into()
28910            }
28911        }
28912        Self {
28913            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
28914            InitNew: InitNew::<Identity, OFFSET>,
28915            CheckInit: CheckInit::<Identity, OFFSET>,
28916            EncodeMessage: EncodeMessage::<Identity, OFFSET>,
28917            EncodeBody: EncodeBody::<Identity, OFFSET>,
28918            DecodeMessage: DecodeMessage::<Identity, OFFSET>,
28919            DecodeBody: DecodeBody::<Identity, OFFSET>,
28920            EnumCertificates: EnumCertificates::<Identity, OFFSET>,
28921            GetCertificateName: GetCertificateName::<Identity, OFFSET>,
28922            GetMessageType: GetMessageType::<Identity, OFFSET>,
28923            GetCertData: GetCertData::<Identity, OFFSET>,
28924        }
28925    }
28926    pub fn matches(iid: &windows_core::GUID) -> bool {
28927        iid == &<IMimeSecurity as windows_core::Interface>::IID
28928    }
28929}
28930impl windows_core::RuntimeName for IMimeSecurity {}
28931windows_core::imp::define_interface!(
28932    IMimeWebDocument,
28933    IMimeWebDocument_Vtbl,
28934    0xee519f11_851a_11d0_825c_00c04fd85ab4
28935);
28936windows_core::imp::interface_hierarchy!(IMimeWebDocument, windows_core::IUnknown);
28937impl IMimeWebDocument {
28938    pub unsafe fn GetURL(&self, ppszurl: *mut windows_core::PSTR) -> windows_core::Result<()> {
28939        unsafe {
28940            (windows_core::Interface::vtable(self).GetURL)(
28941                windows_core::Interface::as_raw(self),
28942                ppszurl as _,
28943            )
28944            .ok()
28945        }
28946    }
28947    pub unsafe fn BindToStorage(
28948        &self,
28949        riid: *const windows_core::GUID,
28950        ppvobject: *mut *mut core::ffi::c_void,
28951    ) -> windows_core::Result<()> {
28952        unsafe {
28953            (windows_core::Interface::vtable(self).BindToStorage)(
28954                windows_core::Interface::as_raw(self),
28955                riid,
28956                ppvobject as _,
28957            )
28958            .ok()
28959        }
28960    }
28961}
28962#[repr(C)]
28963pub struct IMimeWebDocument_Vtbl {
28964    pub base__: windows_core::IUnknown_Vtbl,
28965    pub GetURL: unsafe extern "system" fn(
28966        *mut core::ffi::c_void,
28967        *mut windows_core::PSTR,
28968    ) -> windows_core::HRESULT,
28969    pub BindToStorage: unsafe extern "system" fn(
28970        *mut core::ffi::c_void,
28971        *const windows_core::GUID,
28972        *mut *mut core::ffi::c_void,
28973    ) -> windows_core::HRESULT,
28974}
28975pub trait IMimeWebDocument_Impl: windows_core::IUnknownImpl {
28976    fn GetURL(&self, ppszurl: *mut windows_core::PSTR) -> windows_core::Result<()>;
28977    fn BindToStorage(
28978        &self,
28979        riid: *const windows_core::GUID,
28980        ppvobject: *mut *mut core::ffi::c_void,
28981    ) -> windows_core::Result<()>;
28982}
28983impl IMimeWebDocument_Vtbl {
28984    pub const fn new<Identity: IMimeWebDocument_Impl, const OFFSET: isize>() -> Self {
28985        unsafe extern "system" fn GetURL<Identity: IMimeWebDocument_Impl, const OFFSET: isize>(
28986            this: *mut core::ffi::c_void,
28987            ppszurl: *mut windows_core::PSTR,
28988        ) -> windows_core::HRESULT {
28989            unsafe {
28990                let this: &Identity =
28991                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28992                IMimeWebDocument_Impl::GetURL(this, core::mem::transmute_copy(&ppszurl)).into()
28993            }
28994        }
28995        unsafe extern "system" fn BindToStorage<
28996            Identity: IMimeWebDocument_Impl,
28997            const OFFSET: isize,
28998        >(
28999            this: *mut core::ffi::c_void,
29000            riid: *const windows_core::GUID,
29001            ppvobject: *mut *mut core::ffi::c_void,
29002        ) -> windows_core::HRESULT {
29003            unsafe {
29004                let this: &Identity =
29005                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29006                IMimeWebDocument_Impl::BindToStorage(
29007                    this,
29008                    core::mem::transmute_copy(&riid),
29009                    core::mem::transmute_copy(&ppvobject),
29010                )
29011                .into()
29012            }
29013        }
29014        Self {
29015            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29016            GetURL: GetURL::<Identity, OFFSET>,
29017            BindToStorage: BindToStorage::<Identity, OFFSET>,
29018        }
29019    }
29020    pub fn matches(iid: &windows_core::GUID) -> bool {
29021        iid == &<IMimeWebDocument as windows_core::Interface>::IID
29022    }
29023}
29024impl windows_core::RuntimeName for IMimeWebDocument {}
29025windows_core::imp::define_interface!(
29026    IMsgServiceAdmin,
29027    IMsgServiceAdmin_Vtbl,
29028    0x0002031d_0000_0000_c000_000000000046
29029);
29030windows_core::imp::interface_hierarchy!(IMsgServiceAdmin, windows_core::IUnknown);
29031impl IMsgServiceAdmin {
29032    pub unsafe fn GetLastError(
29033        &self,
29034        hresult: windows_core::HRESULT,
29035        ulflags: u32,
29036        lppmapierror: *mut *mut MAPIERROR,
29037    ) -> windows_core::Result<()> {
29038        unsafe {
29039            (windows_core::Interface::vtable(self).GetLastError)(
29040                windows_core::Interface::as_raw(self),
29041                hresult,
29042                ulflags,
29043                lppmapierror as _,
29044            )
29045            .ok()
29046        }
29047    }
29048    pub unsafe fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29049        unsafe {
29050            let mut result__ = core::mem::zeroed();
29051            (windows_core::Interface::vtable(self).GetMsgServiceTable)(
29052                windows_core::Interface::as_raw(self),
29053                ulflags,
29054                &mut result__,
29055            )
29056            .and_then(|| windows_core::Type::from_abi(result__))
29057        }
29058    }
29059    pub unsafe fn CreateMsgService(
29060        &self,
29061        lpszservice: *mut i8,
29062        lpszdisplayname: *mut i8,
29063        uluiparam: usize,
29064        ulflags: u32,
29065    ) -> windows_core::Result<()> {
29066        unsafe {
29067            (windows_core::Interface::vtable(self).CreateMsgService)(
29068                windows_core::Interface::as_raw(self),
29069                lpszservice as _,
29070                lpszdisplayname as _,
29071                uluiparam,
29072                ulflags,
29073            )
29074            .ok()
29075        }
29076    }
29077    pub unsafe fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()> {
29078        unsafe {
29079            (windows_core::Interface::vtable(self).DeleteMsgService)(
29080                windows_core::Interface::as_raw(self),
29081                lpuid as _,
29082            )
29083            .ok()
29084        }
29085    }
29086    pub unsafe fn CopyMsgService(
29087        &self,
29088        lpuid: *mut MAPIUID,
29089        lpszdisplayname: *mut i8,
29090        lpinterfacetocopy: *mut windows_core::GUID,
29091        lpinterfacedst: *mut windows_core::GUID,
29092        lpobjectdst: *mut core::ffi::c_void,
29093        uluiparam: usize,
29094        ulflags: u32,
29095    ) -> windows_core::Result<()> {
29096        unsafe {
29097            (windows_core::Interface::vtable(self).CopyMsgService)(
29098                windows_core::Interface::as_raw(self),
29099                lpuid as _,
29100                lpszdisplayname as _,
29101                lpinterfacetocopy as _,
29102                lpinterfacedst as _,
29103                lpobjectdst as _,
29104                uluiparam,
29105                ulflags,
29106            )
29107            .ok()
29108        }
29109    }
29110    pub unsafe fn RenameMsgService(
29111        &self,
29112        lpuid: *mut MAPIUID,
29113        ulflags: u32,
29114        lpszdisplayname: *mut i8,
29115    ) -> windows_core::Result<()> {
29116        unsafe {
29117            (windows_core::Interface::vtable(self).RenameMsgService)(
29118                windows_core::Interface::as_raw(self),
29119                lpuid as _,
29120                ulflags,
29121                lpszdisplayname as _,
29122            )
29123            .ok()
29124        }
29125    }
29126    pub unsafe fn ConfigureMsgService(
29127        &self,
29128        lpuid: *mut MAPIUID,
29129        uluiparam: usize,
29130        ulflags: u32,
29131        cvalues: u32,
29132        lpprops: *mut SPropValue,
29133    ) -> windows_core::Result<()> {
29134        unsafe {
29135            (windows_core::Interface::vtable(self).ConfigureMsgService)(
29136                windows_core::Interface::as_raw(self),
29137                lpuid as _,
29138                uluiparam,
29139                ulflags,
29140                cvalues,
29141                lpprops as _,
29142            )
29143            .ok()
29144        }
29145    }
29146    pub unsafe fn OpenProfileSection(
29147        &self,
29148        lpuid: *mut MAPIUID,
29149        lpinterface: *mut windows_core::GUID,
29150        ulflags: u32,
29151        lppprofsect: *mut Option<IProfSect>,
29152    ) -> windows_core::Result<()> {
29153        unsafe {
29154            (windows_core::Interface::vtable(self).OpenProfileSection)(
29155                windows_core::Interface::as_raw(self),
29156                lpuid as _,
29157                lpinterface as _,
29158                ulflags,
29159                core::mem::transmute(lppprofsect),
29160            )
29161            .ok()
29162        }
29163    }
29164    pub unsafe fn MsgServiceTransportOrder(
29165        &self,
29166        cuid: u32,
29167        lpuidlist: *mut MAPIUID,
29168        ulflags: u32,
29169    ) -> windows_core::Result<()> {
29170        unsafe {
29171            (windows_core::Interface::vtable(self).MsgServiceTransportOrder)(
29172                windows_core::Interface::as_raw(self),
29173                cuid,
29174                lpuidlist as _,
29175                ulflags,
29176            )
29177            .ok()
29178        }
29179    }
29180    pub unsafe fn AdminProviders(
29181        &self,
29182        lpuid: *mut MAPIUID,
29183        ulflags: u32,
29184        lppprovideradmin: *mut Option<IProviderAdmin>,
29185    ) -> windows_core::Result<()> {
29186        unsafe {
29187            (windows_core::Interface::vtable(self).AdminProviders)(
29188                windows_core::Interface::as_raw(self),
29189                lpuid as _,
29190                ulflags,
29191                core::mem::transmute(lppprovideradmin),
29192            )
29193            .ok()
29194        }
29195    }
29196    pub unsafe fn SetPrimaryIdentity(
29197        &self,
29198        lpuid: *mut MAPIUID,
29199        ulflags: u32,
29200    ) -> windows_core::Result<()> {
29201        unsafe {
29202            (windows_core::Interface::vtable(self).SetPrimaryIdentity)(
29203                windows_core::Interface::as_raw(self),
29204                lpuid as _,
29205                ulflags,
29206            )
29207            .ok()
29208        }
29209    }
29210    pub unsafe fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29211        unsafe {
29212            let mut result__ = core::mem::zeroed();
29213            (windows_core::Interface::vtable(self).GetProviderTable)(
29214                windows_core::Interface::as_raw(self),
29215                ulflags,
29216                &mut result__,
29217            )
29218            .and_then(|| windows_core::Type::from_abi(result__))
29219        }
29220    }
29221}
29222#[repr(C)]
29223pub struct IMsgServiceAdmin_Vtbl {
29224    pub base__: windows_core::IUnknown_Vtbl,
29225    pub GetLastError: unsafe extern "system" fn(
29226        *mut core::ffi::c_void,
29227        windows_core::HRESULT,
29228        u32,
29229        *mut *mut MAPIERROR,
29230    ) -> windows_core::HRESULT,
29231    pub GetMsgServiceTable: unsafe extern "system" fn(
29232        *mut core::ffi::c_void,
29233        u32,
29234        *mut *mut core::ffi::c_void,
29235    ) -> windows_core::HRESULT,
29236    pub CreateMsgService: unsafe extern "system" fn(
29237        *mut core::ffi::c_void,
29238        *mut i8,
29239        *mut i8,
29240        usize,
29241        u32,
29242    ) -> windows_core::HRESULT,
29243    pub DeleteMsgService:
29244        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
29245    pub CopyMsgService: unsafe extern "system" fn(
29246        *mut core::ffi::c_void,
29247        *mut MAPIUID,
29248        *mut i8,
29249        *mut windows_core::GUID,
29250        *mut windows_core::GUID,
29251        *mut core::ffi::c_void,
29252        usize,
29253        u32,
29254    ) -> windows_core::HRESULT,
29255    pub RenameMsgService: unsafe extern "system" fn(
29256        *mut core::ffi::c_void,
29257        *mut MAPIUID,
29258        u32,
29259        *mut i8,
29260    ) -> windows_core::HRESULT,
29261    pub ConfigureMsgService: unsafe extern "system" fn(
29262        *mut core::ffi::c_void,
29263        *mut MAPIUID,
29264        usize,
29265        u32,
29266        u32,
29267        *mut SPropValue,
29268    ) -> windows_core::HRESULT,
29269    pub OpenProfileSection: unsafe extern "system" fn(
29270        *mut core::ffi::c_void,
29271        *mut MAPIUID,
29272        *mut windows_core::GUID,
29273        u32,
29274        *mut *mut core::ffi::c_void,
29275    ) -> windows_core::HRESULT,
29276    pub MsgServiceTransportOrder: unsafe extern "system" fn(
29277        *mut core::ffi::c_void,
29278        u32,
29279        *mut MAPIUID,
29280        u32,
29281    ) -> windows_core::HRESULT,
29282    pub AdminProviders: unsafe extern "system" fn(
29283        *mut core::ffi::c_void,
29284        *mut MAPIUID,
29285        u32,
29286        *mut *mut core::ffi::c_void,
29287    ) -> windows_core::HRESULT,
29288    pub SetPrimaryIdentity: unsafe extern "system" fn(
29289        *mut core::ffi::c_void,
29290        *mut MAPIUID,
29291        u32,
29292    ) -> windows_core::HRESULT,
29293    pub GetProviderTable: unsafe extern "system" fn(
29294        *mut core::ffi::c_void,
29295        u32,
29296        *mut *mut core::ffi::c_void,
29297    ) -> windows_core::HRESULT,
29298}
29299pub trait IMsgServiceAdmin_Impl: windows_core::IUnknownImpl {
29300    fn GetLastError(
29301        &self,
29302        hresult: windows_core::HRESULT,
29303        ulflags: u32,
29304        lppmapierror: *mut *mut MAPIERROR,
29305    ) -> windows_core::Result<()>;
29306    fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
29307    fn CreateMsgService(
29308        &self,
29309        lpszservice: *mut i8,
29310        lpszdisplayname: *mut i8,
29311        uluiparam: usize,
29312        ulflags: u32,
29313    ) -> windows_core::Result<()>;
29314    fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()>;
29315    fn CopyMsgService(
29316        &self,
29317        lpuid: *mut MAPIUID,
29318        lpszdisplayname: *mut i8,
29319        lpinterfacetocopy: *mut windows_core::GUID,
29320        lpinterfacedst: *mut windows_core::GUID,
29321        lpobjectdst: *mut core::ffi::c_void,
29322        uluiparam: usize,
29323        ulflags: u32,
29324    ) -> windows_core::Result<()>;
29325    fn RenameMsgService(
29326        &self,
29327        lpuid: *mut MAPIUID,
29328        ulflags: u32,
29329        lpszdisplayname: *mut i8,
29330    ) -> windows_core::Result<()>;
29331    fn ConfigureMsgService(
29332        &self,
29333        lpuid: *mut MAPIUID,
29334        uluiparam: usize,
29335        ulflags: u32,
29336        cvalues: u32,
29337        lpprops: *mut SPropValue,
29338    ) -> windows_core::Result<()>;
29339    fn OpenProfileSection(
29340        &self,
29341        lpuid: *mut MAPIUID,
29342        lpinterface: *mut windows_core::GUID,
29343        ulflags: u32,
29344        lppprofsect: windows_core::OutRef<'_, IProfSect>,
29345    ) -> windows_core::Result<()>;
29346    fn MsgServiceTransportOrder(
29347        &self,
29348        cuid: u32,
29349        lpuidlist: *mut MAPIUID,
29350        ulflags: u32,
29351    ) -> windows_core::Result<()>;
29352    fn AdminProviders(
29353        &self,
29354        lpuid: *mut MAPIUID,
29355        ulflags: u32,
29356        lppprovideradmin: windows_core::OutRef<'_, IProviderAdmin>,
29357    ) -> windows_core::Result<()>;
29358    fn SetPrimaryIdentity(&self, lpuid: *mut MAPIUID, ulflags: u32) -> windows_core::Result<()>;
29359    fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
29360}
29361impl IMsgServiceAdmin_Vtbl {
29362    pub const fn new<Identity: IMsgServiceAdmin_Impl, const OFFSET: isize>() -> Self {
29363        unsafe extern "system" fn GetLastError<
29364            Identity: IMsgServiceAdmin_Impl,
29365            const OFFSET: isize,
29366        >(
29367            this: *mut core::ffi::c_void,
29368            hresult: windows_core::HRESULT,
29369            ulflags: u32,
29370            lppmapierror: *mut *mut MAPIERROR,
29371        ) -> windows_core::HRESULT {
29372            unsafe {
29373                let this: &Identity =
29374                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29375                IMsgServiceAdmin_Impl::GetLastError(
29376                    this,
29377                    core::mem::transmute_copy(&hresult),
29378                    core::mem::transmute_copy(&ulflags),
29379                    core::mem::transmute_copy(&lppmapierror),
29380                )
29381                .into()
29382            }
29383        }
29384        unsafe extern "system" fn GetMsgServiceTable<
29385            Identity: IMsgServiceAdmin_Impl,
29386            const OFFSET: isize,
29387        >(
29388            this: *mut core::ffi::c_void,
29389            ulflags: u32,
29390            lpptable: *mut *mut core::ffi::c_void,
29391        ) -> windows_core::HRESULT {
29392            unsafe {
29393                let this: &Identity =
29394                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29395                match IMsgServiceAdmin_Impl::GetMsgServiceTable(
29396                    this,
29397                    core::mem::transmute_copy(&ulflags),
29398                ) {
29399                    Ok(ok__) => {
29400                        lpptable.write(core::mem::transmute(ok__));
29401                        windows_core::HRESULT(0)
29402                    }
29403                    Err(err) => err.into(),
29404                }
29405            }
29406        }
29407        unsafe extern "system" fn CreateMsgService<
29408            Identity: IMsgServiceAdmin_Impl,
29409            const OFFSET: isize,
29410        >(
29411            this: *mut core::ffi::c_void,
29412            lpszservice: *mut i8,
29413            lpszdisplayname: *mut i8,
29414            uluiparam: usize,
29415            ulflags: u32,
29416        ) -> windows_core::HRESULT {
29417            unsafe {
29418                let this: &Identity =
29419                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29420                IMsgServiceAdmin_Impl::CreateMsgService(
29421                    this,
29422                    core::mem::transmute_copy(&lpszservice),
29423                    core::mem::transmute_copy(&lpszdisplayname),
29424                    core::mem::transmute_copy(&uluiparam),
29425                    core::mem::transmute_copy(&ulflags),
29426                )
29427                .into()
29428            }
29429        }
29430        unsafe extern "system" fn DeleteMsgService<
29431            Identity: IMsgServiceAdmin_Impl,
29432            const OFFSET: isize,
29433        >(
29434            this: *mut core::ffi::c_void,
29435            lpuid: *mut MAPIUID,
29436        ) -> windows_core::HRESULT {
29437            unsafe {
29438                let this: &Identity =
29439                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29440                IMsgServiceAdmin_Impl::DeleteMsgService(this, core::mem::transmute_copy(&lpuid))
29441                    .into()
29442            }
29443        }
29444        unsafe extern "system" fn CopyMsgService<
29445            Identity: IMsgServiceAdmin_Impl,
29446            const OFFSET: isize,
29447        >(
29448            this: *mut core::ffi::c_void,
29449            lpuid: *mut MAPIUID,
29450            lpszdisplayname: *mut i8,
29451            lpinterfacetocopy: *mut windows_core::GUID,
29452            lpinterfacedst: *mut windows_core::GUID,
29453            lpobjectdst: *mut core::ffi::c_void,
29454            uluiparam: usize,
29455            ulflags: u32,
29456        ) -> windows_core::HRESULT {
29457            unsafe {
29458                let this: &Identity =
29459                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29460                IMsgServiceAdmin_Impl::CopyMsgService(
29461                    this,
29462                    core::mem::transmute_copy(&lpuid),
29463                    core::mem::transmute_copy(&lpszdisplayname),
29464                    core::mem::transmute_copy(&lpinterfacetocopy),
29465                    core::mem::transmute_copy(&lpinterfacedst),
29466                    core::mem::transmute_copy(&lpobjectdst),
29467                    core::mem::transmute_copy(&uluiparam),
29468                    core::mem::transmute_copy(&ulflags),
29469                )
29470                .into()
29471            }
29472        }
29473        unsafe extern "system" fn RenameMsgService<
29474            Identity: IMsgServiceAdmin_Impl,
29475            const OFFSET: isize,
29476        >(
29477            this: *mut core::ffi::c_void,
29478            lpuid: *mut MAPIUID,
29479            ulflags: u32,
29480            lpszdisplayname: *mut i8,
29481        ) -> windows_core::HRESULT {
29482            unsafe {
29483                let this: &Identity =
29484                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29485                IMsgServiceAdmin_Impl::RenameMsgService(
29486                    this,
29487                    core::mem::transmute_copy(&lpuid),
29488                    core::mem::transmute_copy(&ulflags),
29489                    core::mem::transmute_copy(&lpszdisplayname),
29490                )
29491                .into()
29492            }
29493        }
29494        unsafe extern "system" fn ConfigureMsgService<
29495            Identity: IMsgServiceAdmin_Impl,
29496            const OFFSET: isize,
29497        >(
29498            this: *mut core::ffi::c_void,
29499            lpuid: *mut MAPIUID,
29500            uluiparam: usize,
29501            ulflags: u32,
29502            cvalues: u32,
29503            lpprops: *mut SPropValue,
29504        ) -> windows_core::HRESULT {
29505            unsafe {
29506                let this: &Identity =
29507                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29508                IMsgServiceAdmin_Impl::ConfigureMsgService(
29509                    this,
29510                    core::mem::transmute_copy(&lpuid),
29511                    core::mem::transmute_copy(&uluiparam),
29512                    core::mem::transmute_copy(&ulflags),
29513                    core::mem::transmute_copy(&cvalues),
29514                    core::mem::transmute_copy(&lpprops),
29515                )
29516                .into()
29517            }
29518        }
29519        unsafe extern "system" fn OpenProfileSection<
29520            Identity: IMsgServiceAdmin_Impl,
29521            const OFFSET: isize,
29522        >(
29523            this: *mut core::ffi::c_void,
29524            lpuid: *mut MAPIUID,
29525            lpinterface: *mut windows_core::GUID,
29526            ulflags: u32,
29527            lppprofsect: *mut *mut core::ffi::c_void,
29528        ) -> windows_core::HRESULT {
29529            unsafe {
29530                let this: &Identity =
29531                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29532                IMsgServiceAdmin_Impl::OpenProfileSection(
29533                    this,
29534                    core::mem::transmute_copy(&lpuid),
29535                    core::mem::transmute_copy(&lpinterface),
29536                    core::mem::transmute_copy(&ulflags),
29537                    core::mem::transmute_copy(&lppprofsect),
29538                )
29539                .into()
29540            }
29541        }
29542        unsafe extern "system" fn MsgServiceTransportOrder<
29543            Identity: IMsgServiceAdmin_Impl,
29544            const OFFSET: isize,
29545        >(
29546            this: *mut core::ffi::c_void,
29547            cuid: u32,
29548            lpuidlist: *mut MAPIUID,
29549            ulflags: u32,
29550        ) -> windows_core::HRESULT {
29551            unsafe {
29552                let this: &Identity =
29553                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29554                IMsgServiceAdmin_Impl::MsgServiceTransportOrder(
29555                    this,
29556                    core::mem::transmute_copy(&cuid),
29557                    core::mem::transmute_copy(&lpuidlist),
29558                    core::mem::transmute_copy(&ulflags),
29559                )
29560                .into()
29561            }
29562        }
29563        unsafe extern "system" fn AdminProviders<
29564            Identity: IMsgServiceAdmin_Impl,
29565            const OFFSET: isize,
29566        >(
29567            this: *mut core::ffi::c_void,
29568            lpuid: *mut MAPIUID,
29569            ulflags: u32,
29570            lppprovideradmin: *mut *mut core::ffi::c_void,
29571        ) -> windows_core::HRESULT {
29572            unsafe {
29573                let this: &Identity =
29574                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29575                IMsgServiceAdmin_Impl::AdminProviders(
29576                    this,
29577                    core::mem::transmute_copy(&lpuid),
29578                    core::mem::transmute_copy(&ulflags),
29579                    core::mem::transmute_copy(&lppprovideradmin),
29580                )
29581                .into()
29582            }
29583        }
29584        unsafe extern "system" fn SetPrimaryIdentity<
29585            Identity: IMsgServiceAdmin_Impl,
29586            const OFFSET: isize,
29587        >(
29588            this: *mut core::ffi::c_void,
29589            lpuid: *mut MAPIUID,
29590            ulflags: u32,
29591        ) -> windows_core::HRESULT {
29592            unsafe {
29593                let this: &Identity =
29594                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29595                IMsgServiceAdmin_Impl::SetPrimaryIdentity(
29596                    this,
29597                    core::mem::transmute_copy(&lpuid),
29598                    core::mem::transmute_copy(&ulflags),
29599                )
29600                .into()
29601            }
29602        }
29603        unsafe extern "system" fn GetProviderTable<
29604            Identity: IMsgServiceAdmin_Impl,
29605            const OFFSET: isize,
29606        >(
29607            this: *mut core::ffi::c_void,
29608            ulflags: u32,
29609            lpptable: *mut *mut core::ffi::c_void,
29610        ) -> windows_core::HRESULT {
29611            unsafe {
29612                let this: &Identity =
29613                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29614                match IMsgServiceAdmin_Impl::GetProviderTable(
29615                    this,
29616                    core::mem::transmute_copy(&ulflags),
29617                ) {
29618                    Ok(ok__) => {
29619                        lpptable.write(core::mem::transmute(ok__));
29620                        windows_core::HRESULT(0)
29621                    }
29622                    Err(err) => err.into(),
29623                }
29624            }
29625        }
29626        Self {
29627            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29628            GetLastError: GetLastError::<Identity, OFFSET>,
29629            GetMsgServiceTable: GetMsgServiceTable::<Identity, OFFSET>,
29630            CreateMsgService: CreateMsgService::<Identity, OFFSET>,
29631            DeleteMsgService: DeleteMsgService::<Identity, OFFSET>,
29632            CopyMsgService: CopyMsgService::<Identity, OFFSET>,
29633            RenameMsgService: RenameMsgService::<Identity, OFFSET>,
29634            ConfigureMsgService: ConfigureMsgService::<Identity, OFFSET>,
29635            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
29636            MsgServiceTransportOrder: MsgServiceTransportOrder::<Identity, OFFSET>,
29637            AdminProviders: AdminProviders::<Identity, OFFSET>,
29638            SetPrimaryIdentity: SetPrimaryIdentity::<Identity, OFFSET>,
29639            GetProviderTable: GetProviderTable::<Identity, OFFSET>,
29640        }
29641    }
29642    pub fn matches(iid: &windows_core::GUID) -> bool {
29643        iid == &<IMsgServiceAdmin as windows_core::Interface>::IID
29644    }
29645}
29646impl windows_core::RuntimeName for IMsgServiceAdmin {}
29647windows_core::imp::define_interface!(
29648    IMsgServiceAdmin2,
29649    IMsgServiceAdmin2_Vtbl,
29650    0x00020387_0000_0000_c000_000000000046
29651);
29652windows_core::imp::interface_hierarchy!(IMsgServiceAdmin2, windows_core::IUnknown);
29653impl IMsgServiceAdmin2 {
29654    pub unsafe fn GetLastError(
29655        &self,
29656        hresult: windows_core::HRESULT,
29657        ulflags: u32,
29658        lppmapierror: *mut *mut MAPIERROR,
29659    ) -> windows_core::Result<()> {
29660        unsafe {
29661            (windows_core::Interface::vtable(self).GetLastError)(
29662                windows_core::Interface::as_raw(self),
29663                hresult,
29664                ulflags,
29665                lppmapierror as _,
29666            )
29667            .ok()
29668        }
29669    }
29670    pub unsafe fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29671        unsafe {
29672            let mut result__ = core::mem::zeroed();
29673            (windows_core::Interface::vtable(self).GetMsgServiceTable)(
29674                windows_core::Interface::as_raw(self),
29675                ulflags,
29676                &mut result__,
29677            )
29678            .and_then(|| windows_core::Type::from_abi(result__))
29679        }
29680    }
29681    pub unsafe fn CreateMsgService(
29682        &self,
29683        lpszservice: *mut i8,
29684        lpszdisplayname: *mut i8,
29685        uluiparam: usize,
29686        ulflags: u32,
29687    ) -> windows_core::Result<()> {
29688        unsafe {
29689            (windows_core::Interface::vtable(self).CreateMsgService)(
29690                windows_core::Interface::as_raw(self),
29691                lpszservice as _,
29692                lpszdisplayname as _,
29693                uluiparam,
29694                ulflags,
29695            )
29696            .ok()
29697        }
29698    }
29699    pub unsafe fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()> {
29700        unsafe {
29701            (windows_core::Interface::vtable(self).DeleteMsgService)(
29702                windows_core::Interface::as_raw(self),
29703                lpuid as _,
29704            )
29705            .ok()
29706        }
29707    }
29708    pub unsafe fn CopyMsgService(
29709        &self,
29710        lpuid: *mut MAPIUID,
29711        lpszdisplayname: *mut i8,
29712        lpinterfacetocopy: *mut windows_core::GUID,
29713        lpinterfacedst: *mut windows_core::GUID,
29714        lpobjectdst: *mut core::ffi::c_void,
29715        uluiparam: usize,
29716        ulflags: u32,
29717    ) -> windows_core::Result<()> {
29718        unsafe {
29719            (windows_core::Interface::vtable(self).CopyMsgService)(
29720                windows_core::Interface::as_raw(self),
29721                lpuid as _,
29722                lpszdisplayname as _,
29723                lpinterfacetocopy as _,
29724                lpinterfacedst as _,
29725                lpobjectdst as _,
29726                uluiparam,
29727                ulflags,
29728            )
29729            .ok()
29730        }
29731    }
29732    pub unsafe fn RenameMsgService(
29733        &self,
29734        lpuid: *mut MAPIUID,
29735        ulflags: u32,
29736        lpszdisplayname: *mut i8,
29737    ) -> windows_core::Result<()> {
29738        unsafe {
29739            (windows_core::Interface::vtable(self).RenameMsgService)(
29740                windows_core::Interface::as_raw(self),
29741                lpuid as _,
29742                ulflags,
29743                lpszdisplayname as _,
29744            )
29745            .ok()
29746        }
29747    }
29748    pub unsafe fn ConfigureMsgService(
29749        &self,
29750        lpuid: *mut MAPIUID,
29751        uluiparam: usize,
29752        ulflags: u32,
29753        cvalues: u32,
29754        lpprops: *mut SPropValue,
29755    ) -> windows_core::Result<()> {
29756        unsafe {
29757            (windows_core::Interface::vtable(self).ConfigureMsgService)(
29758                windows_core::Interface::as_raw(self),
29759                lpuid as _,
29760                uluiparam,
29761                ulflags,
29762                cvalues,
29763                lpprops as _,
29764            )
29765            .ok()
29766        }
29767    }
29768    pub unsafe fn OpenProfileSection(
29769        &self,
29770        lpuid: *mut MAPIUID,
29771        lpinterface: *mut windows_core::GUID,
29772        ulflags: u32,
29773        lppprofsect: *mut Option<IProfSect>,
29774    ) -> windows_core::Result<()> {
29775        unsafe {
29776            (windows_core::Interface::vtable(self).OpenProfileSection)(
29777                windows_core::Interface::as_raw(self),
29778                lpuid as _,
29779                lpinterface as _,
29780                ulflags,
29781                core::mem::transmute(lppprofsect),
29782            )
29783            .ok()
29784        }
29785    }
29786    pub unsafe fn MsgServiceTransportOrder(
29787        &self,
29788        cuid: u32,
29789        lpuidlist: *mut MAPIUID,
29790        ulflags: u32,
29791    ) -> windows_core::Result<()> {
29792        unsafe {
29793            (windows_core::Interface::vtable(self).MsgServiceTransportOrder)(
29794                windows_core::Interface::as_raw(self),
29795                cuid,
29796                lpuidlist as _,
29797                ulflags,
29798            )
29799            .ok()
29800        }
29801    }
29802    pub unsafe fn AdminProviders(
29803        &self,
29804        lpuid: *mut MAPIUID,
29805        ulflags: u32,
29806        lppprovideradmin: *mut Option<IProviderAdmin>,
29807    ) -> windows_core::Result<()> {
29808        unsafe {
29809            (windows_core::Interface::vtable(self).AdminProviders)(
29810                windows_core::Interface::as_raw(self),
29811                lpuid as _,
29812                ulflags,
29813                core::mem::transmute(lppprovideradmin),
29814            )
29815            .ok()
29816        }
29817    }
29818    pub unsafe fn SetPrimaryIdentity(
29819        &self,
29820        lpuid: *mut MAPIUID,
29821        ulflags: u32,
29822    ) -> windows_core::Result<()> {
29823        unsafe {
29824            (windows_core::Interface::vtable(self).SetPrimaryIdentity)(
29825                windows_core::Interface::as_raw(self),
29826                lpuid as _,
29827                ulflags,
29828            )
29829            .ok()
29830        }
29831    }
29832    pub unsafe fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29833        unsafe {
29834            let mut result__ = core::mem::zeroed();
29835            (windows_core::Interface::vtable(self).GetProviderTable)(
29836                windows_core::Interface::as_raw(self),
29837                ulflags,
29838                &mut result__,
29839            )
29840            .and_then(|| windows_core::Type::from_abi(result__))
29841        }
29842    }
29843    pub unsafe fn CreateMsgServiceEx(
29844        &self,
29845        lpszservice: *mut i8,
29846        lpszdisplayname: *mut i8,
29847        uluiparam: usize,
29848        ulflags: u32,
29849        lpuidservice: *mut MAPIUID,
29850    ) -> windows_core::Result<()> {
29851        unsafe {
29852            (windows_core::Interface::vtable(self).CreateMsgServiceEx)(
29853                windows_core::Interface::as_raw(self),
29854                lpszservice as _,
29855                lpszdisplayname as _,
29856                uluiparam,
29857                ulflags,
29858                lpuidservice as _,
29859            )
29860            .ok()
29861        }
29862    }
29863}
29864#[repr(C)]
29865pub struct IMsgServiceAdmin2_Vtbl {
29866    pub base__: windows_core::IUnknown_Vtbl,
29867    pub GetLastError: unsafe extern "system" fn(
29868        *mut core::ffi::c_void,
29869        windows_core::HRESULT,
29870        u32,
29871        *mut *mut MAPIERROR,
29872    ) -> windows_core::HRESULT,
29873    pub GetMsgServiceTable: unsafe extern "system" fn(
29874        *mut core::ffi::c_void,
29875        u32,
29876        *mut *mut core::ffi::c_void,
29877    ) -> windows_core::HRESULT,
29878    pub CreateMsgService: unsafe extern "system" fn(
29879        *mut core::ffi::c_void,
29880        *mut i8,
29881        *mut i8,
29882        usize,
29883        u32,
29884    ) -> windows_core::HRESULT,
29885    pub DeleteMsgService:
29886        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
29887    pub CopyMsgService: unsafe extern "system" fn(
29888        *mut core::ffi::c_void,
29889        *mut MAPIUID,
29890        *mut i8,
29891        *mut windows_core::GUID,
29892        *mut windows_core::GUID,
29893        *mut core::ffi::c_void,
29894        usize,
29895        u32,
29896    ) -> windows_core::HRESULT,
29897    pub RenameMsgService: unsafe extern "system" fn(
29898        *mut core::ffi::c_void,
29899        *mut MAPIUID,
29900        u32,
29901        *mut i8,
29902    ) -> windows_core::HRESULT,
29903    pub ConfigureMsgService: unsafe extern "system" fn(
29904        *mut core::ffi::c_void,
29905        *mut MAPIUID,
29906        usize,
29907        u32,
29908        u32,
29909        *mut SPropValue,
29910    ) -> windows_core::HRESULT,
29911    pub OpenProfileSection: unsafe extern "system" fn(
29912        *mut core::ffi::c_void,
29913        *mut MAPIUID,
29914        *mut windows_core::GUID,
29915        u32,
29916        *mut *mut core::ffi::c_void,
29917    ) -> windows_core::HRESULT,
29918    pub MsgServiceTransportOrder: unsafe extern "system" fn(
29919        *mut core::ffi::c_void,
29920        u32,
29921        *mut MAPIUID,
29922        u32,
29923    ) -> windows_core::HRESULT,
29924    pub AdminProviders: unsafe extern "system" fn(
29925        *mut core::ffi::c_void,
29926        *mut MAPIUID,
29927        u32,
29928        *mut *mut core::ffi::c_void,
29929    ) -> windows_core::HRESULT,
29930    pub SetPrimaryIdentity: unsafe extern "system" fn(
29931        *mut core::ffi::c_void,
29932        *mut MAPIUID,
29933        u32,
29934    ) -> windows_core::HRESULT,
29935    pub GetProviderTable: unsafe extern "system" fn(
29936        *mut core::ffi::c_void,
29937        u32,
29938        *mut *mut core::ffi::c_void,
29939    ) -> windows_core::HRESULT,
29940    pub CreateMsgServiceEx: unsafe extern "system" fn(
29941        *mut core::ffi::c_void,
29942        *mut i8,
29943        *mut i8,
29944        usize,
29945        u32,
29946        *mut MAPIUID,
29947    ) -> windows_core::HRESULT,
29948}
29949pub trait IMsgServiceAdmin2_Impl: windows_core::IUnknownImpl {
29950    fn GetLastError(
29951        &self,
29952        hresult: windows_core::HRESULT,
29953        ulflags: u32,
29954        lppmapierror: *mut *mut MAPIERROR,
29955    ) -> windows_core::Result<()>;
29956    fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
29957    fn CreateMsgService(
29958        &self,
29959        lpszservice: *mut i8,
29960        lpszdisplayname: *mut i8,
29961        uluiparam: usize,
29962        ulflags: u32,
29963    ) -> windows_core::Result<()>;
29964    fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()>;
29965    fn CopyMsgService(
29966        &self,
29967        lpuid: *mut MAPIUID,
29968        lpszdisplayname: *mut i8,
29969        lpinterfacetocopy: *mut windows_core::GUID,
29970        lpinterfacedst: *mut windows_core::GUID,
29971        lpobjectdst: *mut core::ffi::c_void,
29972        uluiparam: usize,
29973        ulflags: u32,
29974    ) -> windows_core::Result<()>;
29975    fn RenameMsgService(
29976        &self,
29977        lpuid: *mut MAPIUID,
29978        ulflags: u32,
29979        lpszdisplayname: *mut i8,
29980    ) -> windows_core::Result<()>;
29981    fn ConfigureMsgService(
29982        &self,
29983        lpuid: *mut MAPIUID,
29984        uluiparam: usize,
29985        ulflags: u32,
29986        cvalues: u32,
29987        lpprops: *mut SPropValue,
29988    ) -> windows_core::Result<()>;
29989    fn OpenProfileSection(
29990        &self,
29991        lpuid: *mut MAPIUID,
29992        lpinterface: *mut windows_core::GUID,
29993        ulflags: u32,
29994        lppprofsect: windows_core::OutRef<'_, IProfSect>,
29995    ) -> windows_core::Result<()>;
29996    fn MsgServiceTransportOrder(
29997        &self,
29998        cuid: u32,
29999        lpuidlist: *mut MAPIUID,
30000        ulflags: u32,
30001    ) -> windows_core::Result<()>;
30002    fn AdminProviders(
30003        &self,
30004        lpuid: *mut MAPIUID,
30005        ulflags: u32,
30006        lppprovideradmin: windows_core::OutRef<'_, IProviderAdmin>,
30007    ) -> windows_core::Result<()>;
30008    fn SetPrimaryIdentity(&self, lpuid: *mut MAPIUID, ulflags: u32) -> windows_core::Result<()>;
30009    fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
30010    fn CreateMsgServiceEx(
30011        &self,
30012        lpszservice: *mut i8,
30013        lpszdisplayname: *mut i8,
30014        uluiparam: usize,
30015        ulflags: u32,
30016        lpuidservice: *mut MAPIUID,
30017    ) -> windows_core::Result<()>;
30018}
30019impl IMsgServiceAdmin2_Vtbl {
30020    pub const fn new<Identity: IMsgServiceAdmin2_Impl, const OFFSET: isize>() -> Self {
30021        unsafe extern "system" fn GetLastError<
30022            Identity: IMsgServiceAdmin2_Impl,
30023            const OFFSET: isize,
30024        >(
30025            this: *mut core::ffi::c_void,
30026            hresult: windows_core::HRESULT,
30027            ulflags: u32,
30028            lppmapierror: *mut *mut MAPIERROR,
30029        ) -> windows_core::HRESULT {
30030            unsafe {
30031                let this: &Identity =
30032                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30033                IMsgServiceAdmin2_Impl::GetLastError(
30034                    this,
30035                    core::mem::transmute_copy(&hresult),
30036                    core::mem::transmute_copy(&ulflags),
30037                    core::mem::transmute_copy(&lppmapierror),
30038                )
30039                .into()
30040            }
30041        }
30042        unsafe extern "system" fn GetMsgServiceTable<
30043            Identity: IMsgServiceAdmin2_Impl,
30044            const OFFSET: isize,
30045        >(
30046            this: *mut core::ffi::c_void,
30047            ulflags: u32,
30048            lpptable: *mut *mut core::ffi::c_void,
30049        ) -> windows_core::HRESULT {
30050            unsafe {
30051                let this: &Identity =
30052                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30053                match IMsgServiceAdmin2_Impl::GetMsgServiceTable(
30054                    this,
30055                    core::mem::transmute_copy(&ulflags),
30056                ) {
30057                    Ok(ok__) => {
30058                        lpptable.write(core::mem::transmute(ok__));
30059                        windows_core::HRESULT(0)
30060                    }
30061                    Err(err) => err.into(),
30062                }
30063            }
30064        }
30065        unsafe extern "system" fn CreateMsgService<
30066            Identity: IMsgServiceAdmin2_Impl,
30067            const OFFSET: isize,
30068        >(
30069            this: *mut core::ffi::c_void,
30070            lpszservice: *mut i8,
30071            lpszdisplayname: *mut i8,
30072            uluiparam: usize,
30073            ulflags: u32,
30074        ) -> windows_core::HRESULT {
30075            unsafe {
30076                let this: &Identity =
30077                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30078                IMsgServiceAdmin2_Impl::CreateMsgService(
30079                    this,
30080                    core::mem::transmute_copy(&lpszservice),
30081                    core::mem::transmute_copy(&lpszdisplayname),
30082                    core::mem::transmute_copy(&uluiparam),
30083                    core::mem::transmute_copy(&ulflags),
30084                )
30085                .into()
30086            }
30087        }
30088        unsafe extern "system" fn DeleteMsgService<
30089            Identity: IMsgServiceAdmin2_Impl,
30090            const OFFSET: isize,
30091        >(
30092            this: *mut core::ffi::c_void,
30093            lpuid: *mut MAPIUID,
30094        ) -> windows_core::HRESULT {
30095            unsafe {
30096                let this: &Identity =
30097                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30098                IMsgServiceAdmin2_Impl::DeleteMsgService(this, core::mem::transmute_copy(&lpuid))
30099                    .into()
30100            }
30101        }
30102        unsafe extern "system" fn CopyMsgService<
30103            Identity: IMsgServiceAdmin2_Impl,
30104            const OFFSET: isize,
30105        >(
30106            this: *mut core::ffi::c_void,
30107            lpuid: *mut MAPIUID,
30108            lpszdisplayname: *mut i8,
30109            lpinterfacetocopy: *mut windows_core::GUID,
30110            lpinterfacedst: *mut windows_core::GUID,
30111            lpobjectdst: *mut core::ffi::c_void,
30112            uluiparam: usize,
30113            ulflags: u32,
30114        ) -> windows_core::HRESULT {
30115            unsafe {
30116                let this: &Identity =
30117                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30118                IMsgServiceAdmin2_Impl::CopyMsgService(
30119                    this,
30120                    core::mem::transmute_copy(&lpuid),
30121                    core::mem::transmute_copy(&lpszdisplayname),
30122                    core::mem::transmute_copy(&lpinterfacetocopy),
30123                    core::mem::transmute_copy(&lpinterfacedst),
30124                    core::mem::transmute_copy(&lpobjectdst),
30125                    core::mem::transmute_copy(&uluiparam),
30126                    core::mem::transmute_copy(&ulflags),
30127                )
30128                .into()
30129            }
30130        }
30131        unsafe extern "system" fn RenameMsgService<
30132            Identity: IMsgServiceAdmin2_Impl,
30133            const OFFSET: isize,
30134        >(
30135            this: *mut core::ffi::c_void,
30136            lpuid: *mut MAPIUID,
30137            ulflags: u32,
30138            lpszdisplayname: *mut i8,
30139        ) -> windows_core::HRESULT {
30140            unsafe {
30141                let this: &Identity =
30142                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30143                IMsgServiceAdmin2_Impl::RenameMsgService(
30144                    this,
30145                    core::mem::transmute_copy(&lpuid),
30146                    core::mem::transmute_copy(&ulflags),
30147                    core::mem::transmute_copy(&lpszdisplayname),
30148                )
30149                .into()
30150            }
30151        }
30152        unsafe extern "system" fn ConfigureMsgService<
30153            Identity: IMsgServiceAdmin2_Impl,
30154            const OFFSET: isize,
30155        >(
30156            this: *mut core::ffi::c_void,
30157            lpuid: *mut MAPIUID,
30158            uluiparam: usize,
30159            ulflags: u32,
30160            cvalues: u32,
30161            lpprops: *mut SPropValue,
30162        ) -> windows_core::HRESULT {
30163            unsafe {
30164                let this: &Identity =
30165                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30166                IMsgServiceAdmin2_Impl::ConfigureMsgService(
30167                    this,
30168                    core::mem::transmute_copy(&lpuid),
30169                    core::mem::transmute_copy(&uluiparam),
30170                    core::mem::transmute_copy(&ulflags),
30171                    core::mem::transmute_copy(&cvalues),
30172                    core::mem::transmute_copy(&lpprops),
30173                )
30174                .into()
30175            }
30176        }
30177        unsafe extern "system" fn OpenProfileSection<
30178            Identity: IMsgServiceAdmin2_Impl,
30179            const OFFSET: isize,
30180        >(
30181            this: *mut core::ffi::c_void,
30182            lpuid: *mut MAPIUID,
30183            lpinterface: *mut windows_core::GUID,
30184            ulflags: u32,
30185            lppprofsect: *mut *mut core::ffi::c_void,
30186        ) -> windows_core::HRESULT {
30187            unsafe {
30188                let this: &Identity =
30189                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30190                IMsgServiceAdmin2_Impl::OpenProfileSection(
30191                    this,
30192                    core::mem::transmute_copy(&lpuid),
30193                    core::mem::transmute_copy(&lpinterface),
30194                    core::mem::transmute_copy(&ulflags),
30195                    core::mem::transmute_copy(&lppprofsect),
30196                )
30197                .into()
30198            }
30199        }
30200        unsafe extern "system" fn MsgServiceTransportOrder<
30201            Identity: IMsgServiceAdmin2_Impl,
30202            const OFFSET: isize,
30203        >(
30204            this: *mut core::ffi::c_void,
30205            cuid: u32,
30206            lpuidlist: *mut MAPIUID,
30207            ulflags: u32,
30208        ) -> windows_core::HRESULT {
30209            unsafe {
30210                let this: &Identity =
30211                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30212                IMsgServiceAdmin2_Impl::MsgServiceTransportOrder(
30213                    this,
30214                    core::mem::transmute_copy(&cuid),
30215                    core::mem::transmute_copy(&lpuidlist),
30216                    core::mem::transmute_copy(&ulflags),
30217                )
30218                .into()
30219            }
30220        }
30221        unsafe extern "system" fn AdminProviders<
30222            Identity: IMsgServiceAdmin2_Impl,
30223            const OFFSET: isize,
30224        >(
30225            this: *mut core::ffi::c_void,
30226            lpuid: *mut MAPIUID,
30227            ulflags: u32,
30228            lppprovideradmin: *mut *mut core::ffi::c_void,
30229        ) -> windows_core::HRESULT {
30230            unsafe {
30231                let this: &Identity =
30232                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30233                IMsgServiceAdmin2_Impl::AdminProviders(
30234                    this,
30235                    core::mem::transmute_copy(&lpuid),
30236                    core::mem::transmute_copy(&ulflags),
30237                    core::mem::transmute_copy(&lppprovideradmin),
30238                )
30239                .into()
30240            }
30241        }
30242        unsafe extern "system" fn SetPrimaryIdentity<
30243            Identity: IMsgServiceAdmin2_Impl,
30244            const OFFSET: isize,
30245        >(
30246            this: *mut core::ffi::c_void,
30247            lpuid: *mut MAPIUID,
30248            ulflags: u32,
30249        ) -> windows_core::HRESULT {
30250            unsafe {
30251                let this: &Identity =
30252                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30253                IMsgServiceAdmin2_Impl::SetPrimaryIdentity(
30254                    this,
30255                    core::mem::transmute_copy(&lpuid),
30256                    core::mem::transmute_copy(&ulflags),
30257                )
30258                .into()
30259            }
30260        }
30261        unsafe extern "system" fn GetProviderTable<
30262            Identity: IMsgServiceAdmin2_Impl,
30263            const OFFSET: isize,
30264        >(
30265            this: *mut core::ffi::c_void,
30266            ulflags: u32,
30267            lpptable: *mut *mut core::ffi::c_void,
30268        ) -> windows_core::HRESULT {
30269            unsafe {
30270                let this: &Identity =
30271                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30272                match IMsgServiceAdmin2_Impl::GetProviderTable(
30273                    this,
30274                    core::mem::transmute_copy(&ulflags),
30275                ) {
30276                    Ok(ok__) => {
30277                        lpptable.write(core::mem::transmute(ok__));
30278                        windows_core::HRESULT(0)
30279                    }
30280                    Err(err) => err.into(),
30281                }
30282            }
30283        }
30284        unsafe extern "system" fn CreateMsgServiceEx<
30285            Identity: IMsgServiceAdmin2_Impl,
30286            const OFFSET: isize,
30287        >(
30288            this: *mut core::ffi::c_void,
30289            lpszservice: *mut i8,
30290            lpszdisplayname: *mut i8,
30291            uluiparam: usize,
30292            ulflags: u32,
30293            lpuidservice: *mut MAPIUID,
30294        ) -> windows_core::HRESULT {
30295            unsafe {
30296                let this: &Identity =
30297                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30298                IMsgServiceAdmin2_Impl::CreateMsgServiceEx(
30299                    this,
30300                    core::mem::transmute_copy(&lpszservice),
30301                    core::mem::transmute_copy(&lpszdisplayname),
30302                    core::mem::transmute_copy(&uluiparam),
30303                    core::mem::transmute_copy(&ulflags),
30304                    core::mem::transmute_copy(&lpuidservice),
30305                )
30306                .into()
30307            }
30308        }
30309        Self {
30310            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
30311            GetLastError: GetLastError::<Identity, OFFSET>,
30312            GetMsgServiceTable: GetMsgServiceTable::<Identity, OFFSET>,
30313            CreateMsgService: CreateMsgService::<Identity, OFFSET>,
30314            DeleteMsgService: DeleteMsgService::<Identity, OFFSET>,
30315            CopyMsgService: CopyMsgService::<Identity, OFFSET>,
30316            RenameMsgService: RenameMsgService::<Identity, OFFSET>,
30317            ConfigureMsgService: ConfigureMsgService::<Identity, OFFSET>,
30318            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
30319            MsgServiceTransportOrder: MsgServiceTransportOrder::<Identity, OFFSET>,
30320            AdminProviders: AdminProviders::<Identity, OFFSET>,
30321            SetPrimaryIdentity: SetPrimaryIdentity::<Identity, OFFSET>,
30322            GetProviderTable: GetProviderTable::<Identity, OFFSET>,
30323            CreateMsgServiceEx: CreateMsgServiceEx::<Identity, OFFSET>,
30324        }
30325    }
30326    pub fn matches(iid: &windows_core::GUID) -> bool {
30327        iid == &<IMsgServiceAdmin2 as windows_core::Interface>::IID
30328    }
30329}
30330impl windows_core::RuntimeName for IMsgServiceAdmin2 {}
30331windows_core::imp::define_interface!(
30332    IMsgStore,
30333    IMsgStore_Vtbl,
30334    0x00020306_0000_0000_c000_000000000046
30335);
30336impl core::ops::Deref for IMsgStore {
30337    type Target = IMAPIProp;
30338    fn deref(&self) -> &Self::Target {
30339        unsafe { core::mem::transmute(self) }
30340    }
30341}
30342windows_core::imp::interface_hierarchy!(IMsgStore, windows_core::IUnknown, IMAPIProp);
30343impl IMsgStore {
30344    pub unsafe fn Advise<P3>(
30345        &self,
30346        cbentryid: u32,
30347        lpentryid: *mut ENTRYID,
30348        uleventmask: u32,
30349        lpadvisesink: P3,
30350        lpulconnection: *mut usize,
30351    ) -> windows_core::Result<()>
30352    where
30353        P3: windows_core::Param<IMAPIAdviseSink>,
30354    {
30355        unsafe {
30356            (windows_core::Interface::vtable(self).Advise)(
30357                windows_core::Interface::as_raw(self),
30358                cbentryid,
30359                lpentryid as _,
30360                uleventmask,
30361                lpadvisesink.param().abi(),
30362                lpulconnection as _,
30363            )
30364            .ok()
30365        }
30366    }
30367    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
30368        unsafe {
30369            (windows_core::Interface::vtable(self).Unadvise)(
30370                windows_core::Interface::as_raw(self),
30371                ulconnection,
30372            )
30373            .ok()
30374        }
30375    }
30376    pub unsafe fn CompareEntryIDs(
30377        &self,
30378        cbentryid1: u32,
30379        lpentryid1: *mut ENTRYID,
30380        cbentryid2: u32,
30381        lpentryid2: *mut ENTRYID,
30382        ulflags: u32,
30383        lpulresult: *mut u32,
30384    ) -> windows_core::Result<()> {
30385        unsafe {
30386            (windows_core::Interface::vtable(self).CompareEntryIDs)(
30387                windows_core::Interface::as_raw(self),
30388                cbentryid1,
30389                lpentryid1 as _,
30390                cbentryid2,
30391                lpentryid2 as _,
30392                ulflags,
30393                lpulresult as _,
30394            )
30395            .ok()
30396        }
30397    }
30398    pub unsafe fn OpenEntry(
30399        &self,
30400        cbentryid: u32,
30401        lpentryid: *mut ENTRYID,
30402        lpinterface: *mut windows_core::GUID,
30403        ulflags: u32,
30404        lpulobjtype: *mut u32,
30405        lppunk: *mut Option<windows_core::IUnknown>,
30406    ) -> windows_core::Result<()> {
30407        unsafe {
30408            (windows_core::Interface::vtable(self).OpenEntry)(
30409                windows_core::Interface::as_raw(self),
30410                cbentryid,
30411                lpentryid as _,
30412                lpinterface as _,
30413                ulflags,
30414                lpulobjtype as _,
30415                core::mem::transmute(lppunk),
30416            )
30417            .ok()
30418        }
30419    }
30420    pub unsafe fn SetReceiveFolder(
30421        &self,
30422        lpszmessageclass: *mut i8,
30423        ulflags: u32,
30424        cbentryid: u32,
30425        lpentryid: *mut ENTRYID,
30426    ) -> windows_core::Result<()> {
30427        unsafe {
30428            (windows_core::Interface::vtable(self).SetReceiveFolder)(
30429                windows_core::Interface::as_raw(self),
30430                lpszmessageclass as _,
30431                ulflags,
30432                cbentryid,
30433                lpentryid as _,
30434            )
30435            .ok()
30436        }
30437    }
30438    pub unsafe fn GetReceiveFolder(
30439        &self,
30440        lpszmessageclass: *mut i8,
30441        ulflags: u32,
30442        lpcbentryid: *mut u32,
30443        lppentryid: *mut *mut ENTRYID,
30444        lppszexplicitclass: *mut *mut i8,
30445    ) -> windows_core::Result<()> {
30446        unsafe {
30447            (windows_core::Interface::vtable(self).GetReceiveFolder)(
30448                windows_core::Interface::as_raw(self),
30449                lpszmessageclass as _,
30450                ulflags,
30451                lpcbentryid as _,
30452                lppentryid as _,
30453                lppszexplicitclass as _,
30454            )
30455            .ok()
30456        }
30457    }
30458    pub unsafe fn GetReceiveFolderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
30459        unsafe {
30460            let mut result__ = core::mem::zeroed();
30461            (windows_core::Interface::vtable(self).GetReceiveFolderTable)(
30462                windows_core::Interface::as_raw(self),
30463                ulflags,
30464                &mut result__,
30465            )
30466            .and_then(|| windows_core::Type::from_abi(result__))
30467        }
30468    }
30469    pub unsafe fn StoreLogoff(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
30470        unsafe {
30471            (windows_core::Interface::vtable(self).StoreLogoff)(
30472                windows_core::Interface::as_raw(self),
30473                lpulflags as _,
30474            )
30475            .ok()
30476        }
30477    }
30478    pub unsafe fn AbortSubmit(
30479        &self,
30480        cbentryid: u32,
30481        lpentryid: *mut ENTRYID,
30482        ulflags: u32,
30483    ) -> windows_core::Result<()> {
30484        unsafe {
30485            (windows_core::Interface::vtable(self).AbortSubmit)(
30486                windows_core::Interface::as_raw(self),
30487                cbentryid,
30488                lpentryid as _,
30489                ulflags,
30490            )
30491            .ok()
30492        }
30493    }
30494    pub unsafe fn GetOutgoingQueue(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
30495        unsafe {
30496            let mut result__ = core::mem::zeroed();
30497            (windows_core::Interface::vtable(self).GetOutgoingQueue)(
30498                windows_core::Interface::as_raw(self),
30499                ulflags,
30500                &mut result__,
30501            )
30502            .and_then(|| windows_core::Type::from_abi(result__))
30503        }
30504    }
30505    pub unsafe fn SetLockState<P0>(
30506        &self,
30507        lpmessage: P0,
30508        ullockstate: u32,
30509    ) -> windows_core::Result<()>
30510    where
30511        P0: windows_core::Param<IMessage>,
30512    {
30513        unsafe {
30514            (windows_core::Interface::vtable(self).SetLockState)(
30515                windows_core::Interface::as_raw(self),
30516                lpmessage.param().abi(),
30517                ullockstate,
30518            )
30519            .ok()
30520        }
30521    }
30522    pub unsafe fn FinishedMsg(
30523        &self,
30524        ulflags: u32,
30525        cbentryid: u32,
30526        lpentryid: *mut ENTRYID,
30527    ) -> windows_core::Result<()> {
30528        unsafe {
30529            (windows_core::Interface::vtable(self).FinishedMsg)(
30530                windows_core::Interface::as_raw(self),
30531                ulflags,
30532                cbentryid,
30533                lpentryid as _,
30534            )
30535            .ok()
30536        }
30537    }
30538    pub unsafe fn NotifyNewMail(
30539        &self,
30540        lpnotification: *mut NOTIFICATION,
30541    ) -> windows_core::Result<()> {
30542        unsafe {
30543            (windows_core::Interface::vtable(self).NotifyNewMail)(
30544                windows_core::Interface::as_raw(self),
30545                lpnotification as _,
30546            )
30547            .ok()
30548        }
30549    }
30550}
30551#[repr(C)]
30552pub struct IMsgStore_Vtbl {
30553    pub base__: IMAPIProp_Vtbl,
30554    pub Advise: unsafe extern "system" fn(
30555        *mut core::ffi::c_void,
30556        u32,
30557        *mut ENTRYID,
30558        u32,
30559        *mut core::ffi::c_void,
30560        *mut usize,
30561    ) -> windows_core::HRESULT,
30562    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
30563    pub CompareEntryIDs: unsafe extern "system" fn(
30564        *mut core::ffi::c_void,
30565        u32,
30566        *mut ENTRYID,
30567        u32,
30568        *mut ENTRYID,
30569        u32,
30570        *mut u32,
30571    ) -> windows_core::HRESULT,
30572    pub OpenEntry: unsafe extern "system" fn(
30573        *mut core::ffi::c_void,
30574        u32,
30575        *mut ENTRYID,
30576        *mut windows_core::GUID,
30577        u32,
30578        *mut u32,
30579        *mut *mut core::ffi::c_void,
30580    ) -> windows_core::HRESULT,
30581    pub SetReceiveFolder: unsafe extern "system" fn(
30582        *mut core::ffi::c_void,
30583        *mut i8,
30584        u32,
30585        u32,
30586        *mut ENTRYID,
30587    ) -> windows_core::HRESULT,
30588    pub GetReceiveFolder: unsafe extern "system" fn(
30589        *mut core::ffi::c_void,
30590        *mut i8,
30591        u32,
30592        *mut u32,
30593        *mut *mut ENTRYID,
30594        *mut *mut i8,
30595    ) -> windows_core::HRESULT,
30596    pub GetReceiveFolderTable: unsafe extern "system" fn(
30597        *mut core::ffi::c_void,
30598        u32,
30599        *mut *mut core::ffi::c_void,
30600    ) -> windows_core::HRESULT,
30601    pub StoreLogoff:
30602        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
30603    pub AbortSubmit: unsafe extern "system" fn(
30604        *mut core::ffi::c_void,
30605        u32,
30606        *mut ENTRYID,
30607        u32,
30608    ) -> windows_core::HRESULT,
30609    pub GetOutgoingQueue: unsafe extern "system" fn(
30610        *mut core::ffi::c_void,
30611        u32,
30612        *mut *mut core::ffi::c_void,
30613    ) -> windows_core::HRESULT,
30614    pub SetLockState: unsafe extern "system" fn(
30615        *mut core::ffi::c_void,
30616        *mut core::ffi::c_void,
30617        u32,
30618    ) -> windows_core::HRESULT,
30619    pub FinishedMsg: unsafe extern "system" fn(
30620        *mut core::ffi::c_void,
30621        u32,
30622        u32,
30623        *mut ENTRYID,
30624    ) -> windows_core::HRESULT,
30625    pub NotifyNewMail: unsafe extern "system" fn(
30626        *mut core::ffi::c_void,
30627        *mut NOTIFICATION,
30628    ) -> windows_core::HRESULT,
30629}
30630pub trait IMsgStore_Impl: IMAPIProp_Impl {
30631    fn Advise(
30632        &self,
30633        cbentryid: u32,
30634        lpentryid: *mut ENTRYID,
30635        uleventmask: u32,
30636        lpadvisesink: windows_core::Ref<'_, IMAPIAdviseSink>,
30637        lpulconnection: *mut usize,
30638    ) -> windows_core::Result<()>;
30639    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
30640    fn CompareEntryIDs(
30641        &self,
30642        cbentryid1: u32,
30643        lpentryid1: *mut ENTRYID,
30644        cbentryid2: u32,
30645        lpentryid2: *mut ENTRYID,
30646        ulflags: u32,
30647        lpulresult: *mut u32,
30648    ) -> windows_core::Result<()>;
30649    fn OpenEntry(
30650        &self,
30651        cbentryid: u32,
30652        lpentryid: *mut ENTRYID,
30653        lpinterface: *mut windows_core::GUID,
30654        ulflags: u32,
30655        lpulobjtype: *mut u32,
30656        lppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
30657    ) -> windows_core::Result<()>;
30658    fn SetReceiveFolder(
30659        &self,
30660        lpszmessageclass: *mut i8,
30661        ulflags: u32,
30662        cbentryid: u32,
30663        lpentryid: *mut ENTRYID,
30664    ) -> windows_core::Result<()>;
30665    fn GetReceiveFolder(
30666        &self,
30667        lpszmessageclass: *mut i8,
30668        ulflags: u32,
30669        lpcbentryid: *mut u32,
30670        lppentryid: *mut *mut ENTRYID,
30671        lppszexplicitclass: *mut *mut i8,
30672    ) -> windows_core::Result<()>;
30673    fn GetReceiveFolderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
30674    fn StoreLogoff(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
30675    fn AbortSubmit(
30676        &self,
30677        cbentryid: u32,
30678        lpentryid: *mut ENTRYID,
30679        ulflags: u32,
30680    ) -> windows_core::Result<()>;
30681    fn GetOutgoingQueue(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
30682    fn SetLockState(
30683        &self,
30684        lpmessage: windows_core::Ref<'_, IMessage>,
30685        ullockstate: u32,
30686    ) -> windows_core::Result<()>;
30687    fn FinishedMsg(
30688        &self,
30689        ulflags: u32,
30690        cbentryid: u32,
30691        lpentryid: *mut ENTRYID,
30692    ) -> windows_core::Result<()>;
30693    fn NotifyNewMail(&self, lpnotification: *mut NOTIFICATION) -> windows_core::Result<()>;
30694}
30695impl IMsgStore_Vtbl {
30696    pub const fn new<Identity: IMsgStore_Impl, const OFFSET: isize>() -> Self {
30697        unsafe extern "system" fn Advise<Identity: IMsgStore_Impl, const OFFSET: isize>(
30698            this: *mut core::ffi::c_void,
30699            cbentryid: u32,
30700            lpentryid: *mut ENTRYID,
30701            uleventmask: u32,
30702            lpadvisesink: *mut core::ffi::c_void,
30703            lpulconnection: *mut usize,
30704        ) -> windows_core::HRESULT {
30705            unsafe {
30706                let this: &Identity =
30707                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30708                IMsgStore_Impl::Advise(
30709                    this,
30710                    core::mem::transmute_copy(&cbentryid),
30711                    core::mem::transmute_copy(&lpentryid),
30712                    core::mem::transmute_copy(&uleventmask),
30713                    core::mem::transmute_copy(&lpadvisesink),
30714                    core::mem::transmute_copy(&lpulconnection),
30715                )
30716                .into()
30717            }
30718        }
30719        unsafe extern "system" fn Unadvise<Identity: IMsgStore_Impl, const OFFSET: isize>(
30720            this: *mut core::ffi::c_void,
30721            ulconnection: usize,
30722        ) -> windows_core::HRESULT {
30723            unsafe {
30724                let this: &Identity =
30725                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30726                IMsgStore_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
30727            }
30728        }
30729        unsafe extern "system" fn CompareEntryIDs<Identity: IMsgStore_Impl, const OFFSET: isize>(
30730            this: *mut core::ffi::c_void,
30731            cbentryid1: u32,
30732            lpentryid1: *mut ENTRYID,
30733            cbentryid2: u32,
30734            lpentryid2: *mut ENTRYID,
30735            ulflags: u32,
30736            lpulresult: *mut u32,
30737        ) -> windows_core::HRESULT {
30738            unsafe {
30739                let this: &Identity =
30740                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30741                IMsgStore_Impl::CompareEntryIDs(
30742                    this,
30743                    core::mem::transmute_copy(&cbentryid1),
30744                    core::mem::transmute_copy(&lpentryid1),
30745                    core::mem::transmute_copy(&cbentryid2),
30746                    core::mem::transmute_copy(&lpentryid2),
30747                    core::mem::transmute_copy(&ulflags),
30748                    core::mem::transmute_copy(&lpulresult),
30749                )
30750                .into()
30751            }
30752        }
30753        unsafe extern "system" fn OpenEntry<Identity: IMsgStore_Impl, const OFFSET: isize>(
30754            this: *mut core::ffi::c_void,
30755            cbentryid: u32,
30756            lpentryid: *mut ENTRYID,
30757            lpinterface: *mut windows_core::GUID,
30758            ulflags: u32,
30759            lpulobjtype: *mut u32,
30760            lppunk: *mut *mut core::ffi::c_void,
30761        ) -> windows_core::HRESULT {
30762            unsafe {
30763                let this: &Identity =
30764                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30765                IMsgStore_Impl::OpenEntry(
30766                    this,
30767                    core::mem::transmute_copy(&cbentryid),
30768                    core::mem::transmute_copy(&lpentryid),
30769                    core::mem::transmute_copy(&lpinterface),
30770                    core::mem::transmute_copy(&ulflags),
30771                    core::mem::transmute_copy(&lpulobjtype),
30772                    core::mem::transmute_copy(&lppunk),
30773                )
30774                .into()
30775            }
30776        }
30777        unsafe extern "system" fn SetReceiveFolder<
30778            Identity: IMsgStore_Impl,
30779            const OFFSET: isize,
30780        >(
30781            this: *mut core::ffi::c_void,
30782            lpszmessageclass: *mut i8,
30783            ulflags: u32,
30784            cbentryid: u32,
30785            lpentryid: *mut ENTRYID,
30786        ) -> windows_core::HRESULT {
30787            unsafe {
30788                let this: &Identity =
30789                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30790                IMsgStore_Impl::SetReceiveFolder(
30791                    this,
30792                    core::mem::transmute_copy(&lpszmessageclass),
30793                    core::mem::transmute_copy(&ulflags),
30794                    core::mem::transmute_copy(&cbentryid),
30795                    core::mem::transmute_copy(&lpentryid),
30796                )
30797                .into()
30798            }
30799        }
30800        unsafe extern "system" fn GetReceiveFolder<
30801            Identity: IMsgStore_Impl,
30802            const OFFSET: isize,
30803        >(
30804            this: *mut core::ffi::c_void,
30805            lpszmessageclass: *mut i8,
30806            ulflags: u32,
30807            lpcbentryid: *mut u32,
30808            lppentryid: *mut *mut ENTRYID,
30809            lppszexplicitclass: *mut *mut i8,
30810        ) -> windows_core::HRESULT {
30811            unsafe {
30812                let this: &Identity =
30813                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30814                IMsgStore_Impl::GetReceiveFolder(
30815                    this,
30816                    core::mem::transmute_copy(&lpszmessageclass),
30817                    core::mem::transmute_copy(&ulflags),
30818                    core::mem::transmute_copy(&lpcbentryid),
30819                    core::mem::transmute_copy(&lppentryid),
30820                    core::mem::transmute_copy(&lppszexplicitclass),
30821                )
30822                .into()
30823            }
30824        }
30825        unsafe extern "system" fn GetReceiveFolderTable<
30826            Identity: IMsgStore_Impl,
30827            const OFFSET: isize,
30828        >(
30829            this: *mut core::ffi::c_void,
30830            ulflags: u32,
30831            lpptable: *mut *mut core::ffi::c_void,
30832        ) -> windows_core::HRESULT {
30833            unsafe {
30834                let this: &Identity =
30835                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30836                match IMsgStore_Impl::GetReceiveFolderTable(
30837                    this,
30838                    core::mem::transmute_copy(&ulflags),
30839                ) {
30840                    Ok(ok__) => {
30841                        lpptable.write(core::mem::transmute(ok__));
30842                        windows_core::HRESULT(0)
30843                    }
30844                    Err(err) => err.into(),
30845                }
30846            }
30847        }
30848        unsafe extern "system" fn StoreLogoff<Identity: IMsgStore_Impl, const OFFSET: isize>(
30849            this: *mut core::ffi::c_void,
30850            lpulflags: *mut u32,
30851        ) -> windows_core::HRESULT {
30852            unsafe {
30853                let this: &Identity =
30854                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30855                IMsgStore_Impl::StoreLogoff(this, core::mem::transmute_copy(&lpulflags)).into()
30856            }
30857        }
30858        unsafe extern "system" fn AbortSubmit<Identity: IMsgStore_Impl, const OFFSET: isize>(
30859            this: *mut core::ffi::c_void,
30860            cbentryid: u32,
30861            lpentryid: *mut ENTRYID,
30862            ulflags: u32,
30863        ) -> windows_core::HRESULT {
30864            unsafe {
30865                let this: &Identity =
30866                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30867                IMsgStore_Impl::AbortSubmit(
30868                    this,
30869                    core::mem::transmute_copy(&cbentryid),
30870                    core::mem::transmute_copy(&lpentryid),
30871                    core::mem::transmute_copy(&ulflags),
30872                )
30873                .into()
30874            }
30875        }
30876        unsafe extern "system" fn GetOutgoingQueue<
30877            Identity: IMsgStore_Impl,
30878            const OFFSET: isize,
30879        >(
30880            this: *mut core::ffi::c_void,
30881            ulflags: u32,
30882            lpptable: *mut *mut core::ffi::c_void,
30883        ) -> windows_core::HRESULT {
30884            unsafe {
30885                let this: &Identity =
30886                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30887                match IMsgStore_Impl::GetOutgoingQueue(this, core::mem::transmute_copy(&ulflags)) {
30888                    Ok(ok__) => {
30889                        lpptable.write(core::mem::transmute(ok__));
30890                        windows_core::HRESULT(0)
30891                    }
30892                    Err(err) => err.into(),
30893                }
30894            }
30895        }
30896        unsafe extern "system" fn SetLockState<Identity: IMsgStore_Impl, const OFFSET: isize>(
30897            this: *mut core::ffi::c_void,
30898            lpmessage: *mut core::ffi::c_void,
30899            ullockstate: u32,
30900        ) -> windows_core::HRESULT {
30901            unsafe {
30902                let this: &Identity =
30903                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30904                IMsgStore_Impl::SetLockState(
30905                    this,
30906                    core::mem::transmute_copy(&lpmessage),
30907                    core::mem::transmute_copy(&ullockstate),
30908                )
30909                .into()
30910            }
30911        }
30912        unsafe extern "system" fn FinishedMsg<Identity: IMsgStore_Impl, const OFFSET: isize>(
30913            this: *mut core::ffi::c_void,
30914            ulflags: u32,
30915            cbentryid: u32,
30916            lpentryid: *mut ENTRYID,
30917        ) -> windows_core::HRESULT {
30918            unsafe {
30919                let this: &Identity =
30920                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30921                IMsgStore_Impl::FinishedMsg(
30922                    this,
30923                    core::mem::transmute_copy(&ulflags),
30924                    core::mem::transmute_copy(&cbentryid),
30925                    core::mem::transmute_copy(&lpentryid),
30926                )
30927                .into()
30928            }
30929        }
30930        unsafe extern "system" fn NotifyNewMail<Identity: IMsgStore_Impl, const OFFSET: isize>(
30931            this: *mut core::ffi::c_void,
30932            lpnotification: *mut NOTIFICATION,
30933        ) -> windows_core::HRESULT {
30934            unsafe {
30935                let this: &Identity =
30936                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30937                IMsgStore_Impl::NotifyNewMail(this, core::mem::transmute_copy(&lpnotification))
30938                    .into()
30939            }
30940        }
30941        Self {
30942            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
30943            Advise: Advise::<Identity, OFFSET>,
30944            Unadvise: Unadvise::<Identity, OFFSET>,
30945            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
30946            OpenEntry: OpenEntry::<Identity, OFFSET>,
30947            SetReceiveFolder: SetReceiveFolder::<Identity, OFFSET>,
30948            GetReceiveFolder: GetReceiveFolder::<Identity, OFFSET>,
30949            GetReceiveFolderTable: GetReceiveFolderTable::<Identity, OFFSET>,
30950            StoreLogoff: StoreLogoff::<Identity, OFFSET>,
30951            AbortSubmit: AbortSubmit::<Identity, OFFSET>,
30952            GetOutgoingQueue: GetOutgoingQueue::<Identity, OFFSET>,
30953            SetLockState: SetLockState::<Identity, OFFSET>,
30954            FinishedMsg: FinishedMsg::<Identity, OFFSET>,
30955            NotifyNewMail: NotifyNewMail::<Identity, OFFSET>,
30956        }
30957    }
30958    pub fn matches(iid: &windows_core::GUID) -> bool {
30959        iid == &<IMsgStore as windows_core::Interface>::IID
30960            || iid == &<IMAPIProp as windows_core::Interface>::IID
30961    }
30962}
30963impl windows_core::RuntimeName for IMsgStore {}
30964pub const IMsgStore_AbortSubmit: METHODS = METHODS(69i32);
30965pub const IMsgStore_Advise: METHODS = METHODS(61i32);
30966pub const IMsgStore_CompareEntryIDs: METHODS = METHODS(63i32);
30967pub const IMsgStore_FinishedMsg: METHODS = METHODS(72i32);
30968pub const IMsgStore_GetOutgoingQueue: METHODS = METHODS(70i32);
30969pub const IMsgStore_GetReceiveFolder: METHODS = METHODS(66i32);
30970pub const IMsgStore_GetReceiveFolderTable: METHODS = METHODS(67i32);
30971pub const IMsgStore_NotifyNewMail: METHODS = METHODS(73i32);
30972pub const IMsgStore_OpenEntry: METHODS = METHODS(64i32);
30973pub const IMsgStore_SetLockState: METHODS = METHODS(71i32);
30974pub const IMsgStore_SetReceiveFolder: METHODS = METHODS(65i32);
30975pub const IMsgStore_StoreLogoff: METHODS = METHODS(68i32);
30976pub const IMsgStore_Unadvise: METHODS = METHODS(62i32);
30977#[repr(C)]
30978#[derive(Clone, Copy, Debug, PartialEq)]
30979pub struct INETCSETINFO {
30980    pub szName: [i8; 128],
30981    pub hCharset: *mut HCHARSET__,
30982    pub cpiWindows: u32,
30983    pub cpiInternet: u32,
30984    pub dwReserved1: u32,
30985}
30986impl Default for INETCSETINFO {
30987    fn default() -> Self {
30988        unsafe { core::mem::zeroed() }
30989    }
30990}
30991#[repr(transparent)]
30992#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
30993pub struct INETLANGMASK(pub i32);
30994#[repr(C)]
30995#[derive(Clone, Copy, Debug, PartialEq)]
30996pub struct INTTRACEENTRY {
30997    pub lAction: i32,
30998    pub ftArrivalTime: windows::Win32::Foundation::FILETIME,
30999    pub ftDeferredTime: windows::Win32::Foundation::FILETIME,
31000    pub rgchADMDName: [i8; 20],
31001    pub rgchCountryName: [i8; 4],
31002    pub rgchPRMDId: [i8; 20],
31003    pub rgchAttADMDName: [i8; 20],
31004    pub rgchAttCountryName: [i8; 4],
31005    pub rgchAttPRMDId: [i8; 20],
31006    pub rgchMTAName: [i8; 36],
31007    pub rgchAttMTAName: [i8; 35],
31008    pub bAdditionalActions: u8,
31009}
31010impl Default for INTTRACEENTRY {
31011    fn default() -> Self {
31012        unsafe { core::mem::zeroed() }
31013    }
31014}
31015#[repr(C)]
31016#[derive(Clone, Copy, Debug, PartialEq)]
31017pub struct INTTRACEINFO {
31018    pub cEntries: u32,
31019    pub rgIntTraceEntry: [INTTRACEENTRY; 1],
31020}
31021impl Default for INTTRACEINFO {
31022    fn default() -> Self {
31023        unsafe { core::mem::zeroed() }
31024    }
31025}
31026windows_core::imp::define_interface!(
31027    IOlkAccount,
31028    IOlkAccount_Vtbl,
31029    0x9240a6d2_af41_11d2_8c3b_00104b2a6676
31030);
31031impl core::ops::Deref for IOlkAccount {
31032    type Target = IOlkErrorUnknown;
31033    fn deref(&self) -> &Self::Target {
31034        unsafe { core::mem::transmute(self) }
31035    }
31036}
31037windows_core::imp::interface_hierarchy!(IOlkAccount, windows_core::IUnknown, IOlkErrorUnknown);
31038impl IOlkAccount {
31039    pub unsafe fn PlaceHolder1(&self) -> windows_core::Result<()> {
31040        unsafe {
31041            (windows_core::Interface::vtable(self).PlaceHolder1)(windows_core::Interface::as_raw(
31042                self,
31043            ))
31044            .ok()
31045        }
31046    }
31047    pub unsafe fn PlaceHolder2(&self) -> windows_core::Result<()> {
31048        unsafe {
31049            (windows_core::Interface::vtable(self).PlaceHolder2)(windows_core::Interface::as_raw(
31050                self,
31051            ))
31052            .ok()
31053        }
31054    }
31055    pub unsafe fn PlaceHolder3(&self) -> windows_core::Result<()> {
31056        unsafe {
31057            (windows_core::Interface::vtable(self).PlaceHolder3)(windows_core::Interface::as_raw(
31058                self,
31059            ))
31060            .ok()
31061        }
31062    }
31063    pub unsafe fn PlaceHolder4(&self) -> windows_core::Result<()> {
31064        unsafe {
31065            (windows_core::Interface::vtable(self).PlaceHolder4)(windows_core::Interface::as_raw(
31066                self,
31067            ))
31068            .ok()
31069        }
31070    }
31071    pub unsafe fn PlaceHolder5(&self) -> windows_core::Result<()> {
31072        unsafe {
31073            (windows_core::Interface::vtable(self).PlaceHolder5)(windows_core::Interface::as_raw(
31074                self,
31075            ))
31076            .ok()
31077        }
31078    }
31079    pub unsafe fn PlaceHolder6(&self) -> windows_core::Result<()> {
31080        unsafe {
31081            (windows_core::Interface::vtable(self).PlaceHolder6)(windows_core::Interface::as_raw(
31082                self,
31083            ))
31084            .ok()
31085        }
31086    }
31087    pub unsafe fn GetAccountInfo(
31088        &self,
31089        pclsidtype: *mut windows_core::GUID,
31090        pccategories: *mut u32,
31091        prgclsidcategory: *mut *mut windows_core::GUID,
31092    ) -> windows_core::Result<()> {
31093        unsafe {
31094            (windows_core::Interface::vtable(self).GetAccountInfo)(
31095                windows_core::Interface::as_raw(self),
31096                pclsidtype as _,
31097                pccategories as _,
31098                prgclsidcategory as _,
31099            )
31100            .ok()
31101        }
31102    }
31103    pub unsafe fn GetPropA(
31104        &self,
31105        dwprop: u32,
31106        pvar: *mut ACCT_VARIANT,
31107    ) -> windows_core::Result<()> {
31108        unsafe {
31109            (windows_core::Interface::vtable(self).GetPropA)(
31110                windows_core::Interface::as_raw(self),
31111                dwprop,
31112                pvar as _,
31113            )
31114            .ok()
31115        }
31116    }
31117    pub unsafe fn SetPropA(
31118        &self,
31119        dwprop: u32,
31120        pvar: *mut ACCT_VARIANT,
31121    ) -> windows_core::Result<()> {
31122        unsafe {
31123            (windows_core::Interface::vtable(self).SetPropA)(
31124                windows_core::Interface::as_raw(self),
31125                dwprop,
31126                pvar as _,
31127            )
31128            .ok()
31129        }
31130    }
31131    pub unsafe fn PlaceHolder7(&self) -> windows_core::Result<()> {
31132        unsafe {
31133            (windows_core::Interface::vtable(self).PlaceHolder7)(windows_core::Interface::as_raw(
31134                self,
31135            ))
31136            .ok()
31137        }
31138    }
31139    pub unsafe fn PlaceHolder8(&self) -> windows_core::Result<()> {
31140        unsafe {
31141            (windows_core::Interface::vtable(self).PlaceHolder8)(windows_core::Interface::as_raw(
31142                self,
31143            ))
31144            .ok()
31145        }
31146    }
31147    pub unsafe fn PlaceHolder9(&self) -> windows_core::Result<()> {
31148        unsafe {
31149            (windows_core::Interface::vtable(self).PlaceHolder9)(windows_core::Interface::as_raw(
31150                self,
31151            ))
31152            .ok()
31153        }
31154    }
31155    pub unsafe fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()> {
31156        unsafe {
31157            (windows_core::Interface::vtable(self).FreeMemory)(
31158                windows_core::Interface::as_raw(self),
31159                pv as _,
31160            )
31161            .ok()
31162        }
31163    }
31164    pub unsafe fn PlaceHolder10(&self) -> windows_core::Result<()> {
31165        unsafe {
31166            (windows_core::Interface::vtable(self).PlaceHolder10)(windows_core::Interface::as_raw(
31167                self,
31168            ))
31169            .ok()
31170        }
31171    }
31172    pub unsafe fn SaveChanges(&self, dwflags: u32) -> windows_core::Result<()> {
31173        unsafe {
31174            (windows_core::Interface::vtable(self).SaveChanges)(
31175                windows_core::Interface::as_raw(self),
31176                dwflags,
31177            )
31178            .ok()
31179        }
31180    }
31181}
31182#[repr(C)]
31183pub struct IOlkAccount_Vtbl {
31184    pub base__: IOlkErrorUnknown_Vtbl,
31185    pub PlaceHolder1: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31186    pub PlaceHolder2: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31187    pub PlaceHolder3: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31188    pub PlaceHolder4: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31189    pub PlaceHolder5: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31190    pub PlaceHolder6: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31191    pub GetAccountInfo: unsafe extern "system" fn(
31192        *mut core::ffi::c_void,
31193        *mut windows_core::GUID,
31194        *mut u32,
31195        *mut *mut windows_core::GUID,
31196    ) -> windows_core::HRESULT,
31197    pub GetPropA: unsafe extern "system" fn(
31198        *mut core::ffi::c_void,
31199        u32,
31200        *mut ACCT_VARIANT,
31201    ) -> windows_core::HRESULT,
31202    pub SetPropA: unsafe extern "system" fn(
31203        *mut core::ffi::c_void,
31204        u32,
31205        *mut ACCT_VARIANT,
31206    ) -> windows_core::HRESULT,
31207    pub PlaceHolder7: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31208    pub PlaceHolder8: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31209    pub PlaceHolder9: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31210    pub FreeMemory:
31211        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
31212    pub PlaceHolder10: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31213    pub SaveChanges:
31214        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
31215}
31216pub trait IOlkAccount_Impl: IOlkErrorUnknown_Impl {
31217    fn PlaceHolder1(&self) -> windows_core::Result<()>;
31218    fn PlaceHolder2(&self) -> windows_core::Result<()>;
31219    fn PlaceHolder3(&self) -> windows_core::Result<()>;
31220    fn PlaceHolder4(&self) -> windows_core::Result<()>;
31221    fn PlaceHolder5(&self) -> windows_core::Result<()>;
31222    fn PlaceHolder6(&self) -> windows_core::Result<()>;
31223    fn GetAccountInfo(
31224        &self,
31225        pclsidtype: *mut windows_core::GUID,
31226        pccategories: *mut u32,
31227        prgclsidcategory: *mut *mut windows_core::GUID,
31228    ) -> windows_core::Result<()>;
31229    fn GetPropA(&self, dwprop: u32, pvar: *mut ACCT_VARIANT) -> windows_core::Result<()>;
31230    fn SetPropA(&self, dwprop: u32, pvar: *mut ACCT_VARIANT) -> windows_core::Result<()>;
31231    fn PlaceHolder7(&self) -> windows_core::Result<()>;
31232    fn PlaceHolder8(&self) -> windows_core::Result<()>;
31233    fn PlaceHolder9(&self) -> windows_core::Result<()>;
31234    fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()>;
31235    fn PlaceHolder10(&self) -> windows_core::Result<()>;
31236    fn SaveChanges(&self, dwflags: u32) -> windows_core::Result<()>;
31237}
31238impl IOlkAccount_Vtbl {
31239    pub const fn new<Identity: IOlkAccount_Impl, const OFFSET: isize>() -> Self {
31240        unsafe extern "system" fn PlaceHolder1<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31241            this: *mut core::ffi::c_void,
31242        ) -> windows_core::HRESULT {
31243            unsafe {
31244                let this: &Identity =
31245                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31246                IOlkAccount_Impl::PlaceHolder1(this).into()
31247            }
31248        }
31249        unsafe extern "system" fn PlaceHolder2<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31250            this: *mut core::ffi::c_void,
31251        ) -> windows_core::HRESULT {
31252            unsafe {
31253                let this: &Identity =
31254                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31255                IOlkAccount_Impl::PlaceHolder2(this).into()
31256            }
31257        }
31258        unsafe extern "system" fn PlaceHolder3<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::PlaceHolder3(this).into()
31265            }
31266        }
31267        unsafe extern "system" fn PlaceHolder4<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::PlaceHolder4(this).into()
31274            }
31275        }
31276        unsafe extern "system" fn PlaceHolder5<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::PlaceHolder5(this).into()
31283            }
31284        }
31285        unsafe extern "system" fn PlaceHolder6<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::PlaceHolder6(this).into()
31292            }
31293        }
31294        unsafe extern "system" fn GetAccountInfo<
31295            Identity: IOlkAccount_Impl,
31296            const OFFSET: isize,
31297        >(
31298            this: *mut core::ffi::c_void,
31299            pclsidtype: *mut windows_core::GUID,
31300            pccategories: *mut u32,
31301            prgclsidcategory: *mut *mut windows_core::GUID,
31302        ) -> windows_core::HRESULT {
31303            unsafe {
31304                let this: &Identity =
31305                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31306                IOlkAccount_Impl::GetAccountInfo(
31307                    this,
31308                    core::mem::transmute_copy(&pclsidtype),
31309                    core::mem::transmute_copy(&pccategories),
31310                    core::mem::transmute_copy(&prgclsidcategory),
31311                )
31312                .into()
31313            }
31314        }
31315        unsafe extern "system" fn GetPropA<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31316            this: *mut core::ffi::c_void,
31317            dwprop: u32,
31318            pvar: *mut ACCT_VARIANT,
31319        ) -> windows_core::HRESULT {
31320            unsafe {
31321                let this: &Identity =
31322                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31323                IOlkAccount_Impl::GetPropA(
31324                    this,
31325                    core::mem::transmute_copy(&dwprop),
31326                    core::mem::transmute_copy(&pvar),
31327                )
31328                .into()
31329            }
31330        }
31331        unsafe extern "system" fn SetPropA<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31332            this: *mut core::ffi::c_void,
31333            dwprop: u32,
31334            pvar: *mut ACCT_VARIANT,
31335        ) -> windows_core::HRESULT {
31336            unsafe {
31337                let this: &Identity =
31338                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31339                IOlkAccount_Impl::SetPropA(
31340                    this,
31341                    core::mem::transmute_copy(&dwprop),
31342                    core::mem::transmute_copy(&pvar),
31343                )
31344                .into()
31345            }
31346        }
31347        unsafe extern "system" fn PlaceHolder7<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31348            this: *mut core::ffi::c_void,
31349        ) -> windows_core::HRESULT {
31350            unsafe {
31351                let this: &Identity =
31352                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31353                IOlkAccount_Impl::PlaceHolder7(this).into()
31354            }
31355        }
31356        unsafe extern "system" fn PlaceHolder8<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31357            this: *mut core::ffi::c_void,
31358        ) -> windows_core::HRESULT {
31359            unsafe {
31360                let this: &Identity =
31361                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31362                IOlkAccount_Impl::PlaceHolder8(this).into()
31363            }
31364        }
31365        unsafe extern "system" fn PlaceHolder9<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::PlaceHolder9(this).into()
31372            }
31373        }
31374        unsafe extern "system" fn FreeMemory<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31375            this: *mut core::ffi::c_void,
31376            pv: *mut u8,
31377        ) -> windows_core::HRESULT {
31378            unsafe {
31379                let this: &Identity =
31380                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31381                IOlkAccount_Impl::FreeMemory(this, core::mem::transmute_copy(&pv)).into()
31382            }
31383        }
31384        unsafe extern "system" fn PlaceHolder10<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31385            this: *mut core::ffi::c_void,
31386        ) -> windows_core::HRESULT {
31387            unsafe {
31388                let this: &Identity =
31389                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31390                IOlkAccount_Impl::PlaceHolder10(this).into()
31391            }
31392        }
31393        unsafe extern "system" fn SaveChanges<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31394            this: *mut core::ffi::c_void,
31395            dwflags: u32,
31396        ) -> windows_core::HRESULT {
31397            unsafe {
31398                let this: &Identity =
31399                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31400                IOlkAccount_Impl::SaveChanges(this, core::mem::transmute_copy(&dwflags)).into()
31401            }
31402        }
31403        Self {
31404            base__: IOlkErrorUnknown_Vtbl::new::<Identity, OFFSET>(),
31405            PlaceHolder1: PlaceHolder1::<Identity, OFFSET>,
31406            PlaceHolder2: PlaceHolder2::<Identity, OFFSET>,
31407            PlaceHolder3: PlaceHolder3::<Identity, OFFSET>,
31408            PlaceHolder4: PlaceHolder4::<Identity, OFFSET>,
31409            PlaceHolder5: PlaceHolder5::<Identity, OFFSET>,
31410            PlaceHolder6: PlaceHolder6::<Identity, OFFSET>,
31411            GetAccountInfo: GetAccountInfo::<Identity, OFFSET>,
31412            GetPropA: GetPropA::<Identity, OFFSET>,
31413            SetPropA: SetPropA::<Identity, OFFSET>,
31414            PlaceHolder7: PlaceHolder7::<Identity, OFFSET>,
31415            PlaceHolder8: PlaceHolder8::<Identity, OFFSET>,
31416            PlaceHolder9: PlaceHolder9::<Identity, OFFSET>,
31417            FreeMemory: FreeMemory::<Identity, OFFSET>,
31418            PlaceHolder10: PlaceHolder10::<Identity, OFFSET>,
31419            SaveChanges: SaveChanges::<Identity, OFFSET>,
31420        }
31421    }
31422    pub fn matches(iid: &windows_core::GUID) -> bool {
31423        iid == &<IOlkAccount as windows_core::Interface>::IID
31424            || iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
31425    }
31426}
31427impl windows_core::RuntimeName for IOlkAccount {}
31428windows_core::imp::define_interface!(
31429    IOlkAccountHelper,
31430    IOlkAccountHelper_Vtbl,
31431    0x9240a6cb_af41_11d2_8c3b_00104b2a6676
31432);
31433windows_core::imp::interface_hierarchy!(IOlkAccountHelper, windows_core::IUnknown);
31434impl IOlkAccountHelper {
31435    pub unsafe fn PlaceHolder1(&self, param0: *mut core::ffi::c_void) -> windows_core::Result<()> {
31436        unsafe {
31437            (windows_core::Interface::vtable(self).PlaceHolder1)(
31438                windows_core::Interface::as_raw(self),
31439                param0 as _,
31440            )
31441            .ok()
31442        }
31443    }
31444    pub unsafe fn GetIdentity<P0>(
31445        &self,
31446        pwszidentity: P0,
31447        pcch: *mut u32,
31448    ) -> windows_core::Result<()>
31449    where
31450        P0: windows_core::Param<windows_core::PCWSTR>,
31451    {
31452        unsafe {
31453            (windows_core::Interface::vtable(self).GetIdentity)(
31454                windows_core::Interface::as_raw(self),
31455                pwszidentity.param().abi(),
31456                pcch as _,
31457            )
31458            .ok()
31459        }
31460    }
31461    pub unsafe fn GetMapiSession(&self) -> windows_core::Result<windows_core::IUnknown> {
31462        unsafe {
31463            let mut result__ = core::mem::zeroed();
31464            (windows_core::Interface::vtable(self).GetMapiSession)(
31465                windows_core::Interface::as_raw(self),
31466                &mut result__,
31467            )
31468            .and_then(|| windows_core::Type::from_abi(result__))
31469        }
31470    }
31471    pub unsafe fn HandsOffSession(&self) -> windows_core::Result<()> {
31472        unsafe {
31473            (windows_core::Interface::vtable(self).HandsOffSession)(
31474                windows_core::Interface::as_raw(self),
31475            )
31476            .ok()
31477        }
31478    }
31479}
31480#[repr(C)]
31481pub struct IOlkAccountHelper_Vtbl {
31482    pub base__: windows_core::IUnknown_Vtbl,
31483    pub PlaceHolder1: unsafe extern "system" fn(
31484        *mut core::ffi::c_void,
31485        *mut core::ffi::c_void,
31486    ) -> windows_core::HRESULT,
31487    pub GetIdentity: unsafe extern "system" fn(
31488        *mut core::ffi::c_void,
31489        windows_core::PCWSTR,
31490        *mut u32,
31491    ) -> windows_core::HRESULT,
31492    pub GetMapiSession: unsafe extern "system" fn(
31493        *mut core::ffi::c_void,
31494        *mut *mut core::ffi::c_void,
31495    ) -> windows_core::HRESULT,
31496    pub HandsOffSession: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31497}
31498pub trait IOlkAccountHelper_Impl: windows_core::IUnknownImpl {
31499    fn PlaceHolder1(&self, param0: *mut core::ffi::c_void) -> windows_core::Result<()>;
31500    fn GetIdentity(
31501        &self,
31502        pwszidentity: &windows_core::PCWSTR,
31503        pcch: *mut u32,
31504    ) -> windows_core::Result<()>;
31505    fn GetMapiSession(&self) -> windows_core::Result<windows_core::IUnknown>;
31506    fn HandsOffSession(&self) -> windows_core::Result<()>;
31507}
31508impl IOlkAccountHelper_Vtbl {
31509    pub const fn new<Identity: IOlkAccountHelper_Impl, const OFFSET: isize>() -> Self {
31510        unsafe extern "system" fn PlaceHolder1<
31511            Identity: IOlkAccountHelper_Impl,
31512            const OFFSET: isize,
31513        >(
31514            this: *mut core::ffi::c_void,
31515            param0: *mut core::ffi::c_void,
31516        ) -> windows_core::HRESULT {
31517            unsafe {
31518                let this: &Identity =
31519                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31520                IOlkAccountHelper_Impl::PlaceHolder1(this, core::mem::transmute_copy(&param0))
31521                    .into()
31522            }
31523        }
31524        unsafe extern "system" fn GetIdentity<
31525            Identity: IOlkAccountHelper_Impl,
31526            const OFFSET: isize,
31527        >(
31528            this: *mut core::ffi::c_void,
31529            pwszidentity: windows_core::PCWSTR,
31530            pcch: *mut u32,
31531        ) -> windows_core::HRESULT {
31532            unsafe {
31533                let this: &Identity =
31534                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31535                IOlkAccountHelper_Impl::GetIdentity(
31536                    this,
31537                    core::mem::transmute(&pwszidentity),
31538                    core::mem::transmute_copy(&pcch),
31539                )
31540                .into()
31541            }
31542        }
31543        unsafe extern "system" fn GetMapiSession<
31544            Identity: IOlkAccountHelper_Impl,
31545            const OFFSET: isize,
31546        >(
31547            this: *mut core::ffi::c_void,
31548            ppmsess: *mut *mut core::ffi::c_void,
31549        ) -> windows_core::HRESULT {
31550            unsafe {
31551                let this: &Identity =
31552                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31553                match IOlkAccountHelper_Impl::GetMapiSession(this) {
31554                    Ok(ok__) => {
31555                        ppmsess.write(core::mem::transmute(ok__));
31556                        windows_core::HRESULT(0)
31557                    }
31558                    Err(err) => err.into(),
31559                }
31560            }
31561        }
31562        unsafe extern "system" fn HandsOffSession<
31563            Identity: IOlkAccountHelper_Impl,
31564            const OFFSET: isize,
31565        >(
31566            this: *mut core::ffi::c_void,
31567        ) -> windows_core::HRESULT {
31568            unsafe {
31569                let this: &Identity =
31570                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31571                IOlkAccountHelper_Impl::HandsOffSession(this).into()
31572            }
31573        }
31574        Self {
31575            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31576            PlaceHolder1: PlaceHolder1::<Identity, OFFSET>,
31577            GetIdentity: GetIdentity::<Identity, OFFSET>,
31578            GetMapiSession: GetMapiSession::<Identity, OFFSET>,
31579            HandsOffSession: HandsOffSession::<Identity, OFFSET>,
31580        }
31581    }
31582    pub fn matches(iid: &windows_core::GUID) -> bool {
31583        iid == &<IOlkAccountHelper as windows_core::Interface>::IID
31584    }
31585}
31586impl windows_core::RuntimeName for IOlkAccountHelper {}
31587windows_core::imp::define_interface!(
31588    IOlkAccountManager,
31589    IOlkAccountManager_Vtbl,
31590    0x9240a6cd_af41_11d2_8c3b_00104b2a6676
31591);
31592impl core::ops::Deref for IOlkAccountManager {
31593    type Target = IOlkErrorUnknown;
31594    fn deref(&self) -> &Self::Target {
31595        unsafe { core::mem::transmute(self) }
31596    }
31597}
31598windows_core::imp::interface_hierarchy!(
31599    IOlkAccountManager,
31600    windows_core::IUnknown,
31601    IOlkErrorUnknown
31602);
31603impl IOlkAccountManager {
31604    pub unsafe fn Init<P0>(&self, paccthelper: P0, dwflags: u32) -> windows_core::Result<()>
31605    where
31606        P0: windows_core::Param<IOlkAccountHelper>,
31607    {
31608        unsafe {
31609            (windows_core::Interface::vtable(self).Init)(
31610                windows_core::Interface::as_raw(self),
31611                paccthelper.param().abi(),
31612                dwflags,
31613            )
31614            .ok()
31615        }
31616    }
31617    pub unsafe fn DisplayAccountList<P2>(
31618        &self,
31619        hwnd: windows::Win32::Foundation::HWND,
31620        dwflags: u32,
31621        wsztitle: P2,
31622        ccategories: u32,
31623        rgclsidcategories: *const windows_core::GUID,
31624        pclsidtype: *const windows_core::GUID,
31625    ) -> windows_core::Result<()>
31626    where
31627        P2: windows_core::Param<windows_core::PCWSTR>,
31628    {
31629        unsafe {
31630            (windows_core::Interface::vtable(self).DisplayAccountList)(
31631                windows_core::Interface::as_raw(self),
31632                hwnd,
31633                dwflags,
31634                wsztitle.param().abi(),
31635                ccategories,
31636                rgclsidcategories,
31637                pclsidtype,
31638            )
31639            .ok()
31640        }
31641    }
31642    pub unsafe fn PlaceHolder1(&self) -> windows_core::Result<()> {
31643        unsafe {
31644            (windows_core::Interface::vtable(self).PlaceHolder1)(windows_core::Interface::as_raw(
31645                self,
31646            ))
31647            .ok()
31648        }
31649    }
31650    pub unsafe fn PlaceHolder2(&self) -> windows_core::Result<()> {
31651        unsafe {
31652            (windows_core::Interface::vtable(self).PlaceHolder2)(windows_core::Interface::as_raw(
31653                self,
31654            ))
31655            .ok()
31656        }
31657    }
31658    pub unsafe fn PlaceHolder3(&self) -> windows_core::Result<()> {
31659        unsafe {
31660            (windows_core::Interface::vtable(self).PlaceHolder3)(windows_core::Interface::as_raw(
31661                self,
31662            ))
31663            .ok()
31664        }
31665    }
31666    pub unsafe fn PlaceHolder4(&self) -> windows_core::Result<()> {
31667        unsafe {
31668            (windows_core::Interface::vtable(self).PlaceHolder4)(windows_core::Interface::as_raw(
31669                self,
31670            ))
31671            .ok()
31672        }
31673    }
31674    pub unsafe fn PlaceHolder5(&self) -> windows_core::Result<()> {
31675        unsafe {
31676            (windows_core::Interface::vtable(self).PlaceHolder5)(windows_core::Interface::as_raw(
31677                self,
31678            ))
31679            .ok()
31680        }
31681    }
31682    pub unsafe fn FindAccount(
31683        &self,
31684        dwprop: u32,
31685        pvar: *mut ACCT_VARIANT,
31686        ppaccount: *mut Option<IOlkAccount>,
31687    ) -> windows_core::Result<()> {
31688        unsafe {
31689            (windows_core::Interface::vtable(self).FindAccount)(
31690                windows_core::Interface::as_raw(self),
31691                dwprop,
31692                pvar as _,
31693                core::mem::transmute(ppaccount),
31694            )
31695            .ok()
31696        }
31697    }
31698    pub unsafe fn PlaceHolder6(&self) -> windows_core::Result<()> {
31699        unsafe {
31700            (windows_core::Interface::vtable(self).PlaceHolder6)(windows_core::Interface::as_raw(
31701                self,
31702            ))
31703            .ok()
31704        }
31705    }
31706    pub unsafe fn PlaceHolder7(&self) -> windows_core::Result<()> {
31707        unsafe {
31708            (windows_core::Interface::vtable(self).PlaceHolder7)(windows_core::Interface::as_raw(
31709                self,
31710            ))
31711            .ok()
31712        }
31713    }
31714    pub unsafe fn PlaceHolder8(&self) -> windows_core::Result<()> {
31715        unsafe {
31716            (windows_core::Interface::vtable(self).PlaceHolder8)(windows_core::Interface::as_raw(
31717                self,
31718            ))
31719            .ok()
31720        }
31721    }
31722    pub unsafe fn DeleteAccount(&self, dwacctid: u32) -> windows_core::Result<()> {
31723        unsafe {
31724            (windows_core::Interface::vtable(self).DeleteAccount)(
31725                windows_core::Interface::as_raw(self),
31726                dwacctid,
31727            )
31728            .ok()
31729        }
31730    }
31731    pub unsafe fn PlaceHolder9(&self) -> windows_core::Result<()> {
31732        unsafe {
31733            (windows_core::Interface::vtable(self).PlaceHolder9)(windows_core::Interface::as_raw(
31734                self,
31735            ))
31736            .ok()
31737        }
31738    }
31739    pub unsafe fn SaveChanges(&self, dwacctid: u32, dwflags: u32) -> windows_core::Result<()> {
31740        unsafe {
31741            (windows_core::Interface::vtable(self).SaveChanges)(
31742                windows_core::Interface::as_raw(self),
31743                dwacctid,
31744                dwflags,
31745            )
31746            .ok()
31747        }
31748    }
31749    pub unsafe fn GetOrder(
31750        &self,
31751        pclsidcategory: *const windows_core::GUID,
31752        pcaccts: *mut u32,
31753        prgaccts: *mut *mut u32,
31754    ) -> windows_core::Result<()> {
31755        unsafe {
31756            (windows_core::Interface::vtable(self).GetOrder)(
31757                windows_core::Interface::as_raw(self),
31758                pclsidcategory,
31759                pcaccts as _,
31760                prgaccts as _,
31761            )
31762            .ok()
31763        }
31764    }
31765    pub unsafe fn SetOrder(
31766        &self,
31767        pclsidcategory: *const windows_core::GUID,
31768        pcaccts: *mut u32,
31769        prgaccts: *mut *mut u32,
31770    ) -> windows_core::Result<()> {
31771        unsafe {
31772            (windows_core::Interface::vtable(self).SetOrder)(
31773                windows_core::Interface::as_raw(self),
31774                pclsidcategory,
31775                pcaccts as _,
31776                prgaccts as _,
31777            )
31778            .ok()
31779        }
31780    }
31781    pub unsafe fn EnumerateAccounts(
31782        &self,
31783        pclsidcategory: *const windows_core::GUID,
31784        pclsidtype: *const windows_core::GUID,
31785        dwflags: u32,
31786    ) -> windows_core::Result<IOlkEnum> {
31787        unsafe {
31788            let mut result__ = core::mem::zeroed();
31789            (windows_core::Interface::vtable(self).EnumerateAccounts)(
31790                windows_core::Interface::as_raw(self),
31791                pclsidcategory,
31792                pclsidtype,
31793                dwflags,
31794                &mut result__,
31795            )
31796            .and_then(|| windows_core::Type::from_abi(result__))
31797        }
31798    }
31799    pub unsafe fn PlaceHolder10(&self) -> windows_core::Result<()> {
31800        unsafe {
31801            (windows_core::Interface::vtable(self).PlaceHolder10)(windows_core::Interface::as_raw(
31802                self,
31803            ))
31804            .ok()
31805        }
31806    }
31807    pub unsafe fn PlaceHolder11(&self) -> windows_core::Result<()> {
31808        unsafe {
31809            (windows_core::Interface::vtable(self).PlaceHolder11)(windows_core::Interface::as_raw(
31810                self,
31811            ))
31812            .ok()
31813        }
31814    }
31815    pub unsafe fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()> {
31816        unsafe {
31817            (windows_core::Interface::vtable(self).FreeMemory)(
31818                windows_core::Interface::as_raw(self),
31819                pv as _,
31820            )
31821            .ok()
31822        }
31823    }
31824    pub unsafe fn Advise<P0>(&self, pnotify: P0, pdwcookie: *mut u32) -> windows_core::Result<()>
31825    where
31826        P0: windows_core::Param<IOlkAccountNotify>,
31827    {
31828        unsafe {
31829            (windows_core::Interface::vtable(self).Advise)(
31830                windows_core::Interface::as_raw(self),
31831                pnotify.param().abi(),
31832                pdwcookie as _,
31833            )
31834            .ok()
31835        }
31836    }
31837    pub unsafe fn Unadvise(&self, pdwcookie: *mut u32) -> windows_core::Result<()> {
31838        unsafe {
31839            (windows_core::Interface::vtable(self).Unadvise)(
31840                windows_core::Interface::as_raw(self),
31841                pdwcookie as _,
31842            )
31843            .ok()
31844        }
31845    }
31846    pub unsafe fn PlaceHolder12(&self) -> windows_core::Result<()> {
31847        unsafe {
31848            (windows_core::Interface::vtable(self).PlaceHolder12)(windows_core::Interface::as_raw(
31849                self,
31850            ))
31851            .ok()
31852        }
31853    }
31854    pub unsafe fn PlaceHolder13(&self) -> windows_core::Result<()> {
31855        unsafe {
31856            (windows_core::Interface::vtable(self).PlaceHolder13)(windows_core::Interface::as_raw(
31857                self,
31858            ))
31859            .ok()
31860        }
31861    }
31862    pub unsafe fn PlaceHolder14(&self) -> windows_core::Result<()> {
31863        unsafe {
31864            (windows_core::Interface::vtable(self).PlaceHolder14)(windows_core::Interface::as_raw(
31865                self,
31866            ))
31867            .ok()
31868        }
31869    }
31870}
31871#[repr(C)]
31872pub struct IOlkAccountManager_Vtbl {
31873    pub base__: IOlkErrorUnknown_Vtbl,
31874    pub Init: unsafe extern "system" fn(
31875        *mut core::ffi::c_void,
31876        *mut core::ffi::c_void,
31877        u32,
31878    ) -> windows_core::HRESULT,
31879    pub DisplayAccountList: unsafe extern "system" fn(
31880        *mut core::ffi::c_void,
31881        windows::Win32::Foundation::HWND,
31882        u32,
31883        windows_core::PCWSTR,
31884        u32,
31885        *const windows_core::GUID,
31886        *const windows_core::GUID,
31887    ) -> windows_core::HRESULT,
31888    pub PlaceHolder1: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31889    pub PlaceHolder2: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31890    pub PlaceHolder3: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31891    pub PlaceHolder4: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31892    pub PlaceHolder5: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31893    pub FindAccount: unsafe extern "system" fn(
31894        *mut core::ffi::c_void,
31895        u32,
31896        *mut ACCT_VARIANT,
31897        *mut *mut core::ffi::c_void,
31898    ) -> windows_core::HRESULT,
31899    pub PlaceHolder6: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31900    pub PlaceHolder7: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31901    pub PlaceHolder8: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31902    pub DeleteAccount:
31903        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
31904    pub PlaceHolder9: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31905    pub SaveChanges:
31906        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
31907    pub GetOrder: unsafe extern "system" fn(
31908        *mut core::ffi::c_void,
31909        *const windows_core::GUID,
31910        *mut u32,
31911        *mut *mut u32,
31912    ) -> windows_core::HRESULT,
31913    pub SetOrder: unsafe extern "system" fn(
31914        *mut core::ffi::c_void,
31915        *const windows_core::GUID,
31916        *mut u32,
31917        *mut *mut u32,
31918    ) -> windows_core::HRESULT,
31919    pub EnumerateAccounts: unsafe extern "system" fn(
31920        *mut core::ffi::c_void,
31921        *const windows_core::GUID,
31922        *const windows_core::GUID,
31923        u32,
31924        *mut *mut core::ffi::c_void,
31925    ) -> windows_core::HRESULT,
31926    pub PlaceHolder10: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31927    pub PlaceHolder11: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31928    pub FreeMemory:
31929        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
31930    pub Advise: unsafe extern "system" fn(
31931        *mut core::ffi::c_void,
31932        *mut core::ffi::c_void,
31933        *mut u32,
31934    ) -> windows_core::HRESULT,
31935    pub Unadvise:
31936        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
31937    pub PlaceHolder12: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31938    pub PlaceHolder13: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31939    pub PlaceHolder14: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31940}
31941pub trait IOlkAccountManager_Impl: IOlkErrorUnknown_Impl {
31942    fn Init(
31943        &self,
31944        paccthelper: windows_core::Ref<'_, IOlkAccountHelper>,
31945        dwflags: u32,
31946    ) -> windows_core::Result<()>;
31947    fn DisplayAccountList(
31948        &self,
31949        hwnd: windows::Win32::Foundation::HWND,
31950        dwflags: u32,
31951        wsztitle: &windows_core::PCWSTR,
31952        ccategories: u32,
31953        rgclsidcategories: *const windows_core::GUID,
31954        pclsidtype: *const windows_core::GUID,
31955    ) -> windows_core::Result<()>;
31956    fn PlaceHolder1(&self) -> windows_core::Result<()>;
31957    fn PlaceHolder2(&self) -> windows_core::Result<()>;
31958    fn PlaceHolder3(&self) -> windows_core::Result<()>;
31959    fn PlaceHolder4(&self) -> windows_core::Result<()>;
31960    fn PlaceHolder5(&self) -> windows_core::Result<()>;
31961    fn FindAccount(
31962        &self,
31963        dwprop: u32,
31964        pvar: *mut ACCT_VARIANT,
31965        ppaccount: windows_core::OutRef<'_, IOlkAccount>,
31966    ) -> windows_core::Result<()>;
31967    fn PlaceHolder6(&self) -> windows_core::Result<()>;
31968    fn PlaceHolder7(&self) -> windows_core::Result<()>;
31969    fn PlaceHolder8(&self) -> windows_core::Result<()>;
31970    fn DeleteAccount(&self, dwacctid: u32) -> windows_core::Result<()>;
31971    fn PlaceHolder9(&self) -> windows_core::Result<()>;
31972    fn SaveChanges(&self, dwacctid: u32, dwflags: u32) -> windows_core::Result<()>;
31973    fn GetOrder(
31974        &self,
31975        pclsidcategory: *const windows_core::GUID,
31976        pcaccts: *mut u32,
31977        prgaccts: *mut *mut u32,
31978    ) -> windows_core::Result<()>;
31979    fn SetOrder(
31980        &self,
31981        pclsidcategory: *const windows_core::GUID,
31982        pcaccts: *mut u32,
31983        prgaccts: *mut *mut u32,
31984    ) -> windows_core::Result<()>;
31985    fn EnumerateAccounts(
31986        &self,
31987        pclsidcategory: *const windows_core::GUID,
31988        pclsidtype: *const windows_core::GUID,
31989        dwflags: u32,
31990    ) -> windows_core::Result<IOlkEnum>;
31991    fn PlaceHolder10(&self) -> windows_core::Result<()>;
31992    fn PlaceHolder11(&self) -> windows_core::Result<()>;
31993    fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()>;
31994    fn Advise(
31995        &self,
31996        pnotify: windows_core::Ref<'_, IOlkAccountNotify>,
31997        pdwcookie: *mut u32,
31998    ) -> windows_core::Result<()>;
31999    fn Unadvise(&self, pdwcookie: *mut u32) -> windows_core::Result<()>;
32000    fn PlaceHolder12(&self) -> windows_core::Result<()>;
32001    fn PlaceHolder13(&self) -> windows_core::Result<()>;
32002    fn PlaceHolder14(&self) -> windows_core::Result<()>;
32003}
32004impl IOlkAccountManager_Vtbl {
32005    pub const fn new<Identity: IOlkAccountManager_Impl, const OFFSET: isize>() -> Self {
32006        unsafe extern "system" fn Init<Identity: IOlkAccountManager_Impl, const OFFSET: isize>(
32007            this: *mut core::ffi::c_void,
32008            paccthelper: *mut core::ffi::c_void,
32009            dwflags: u32,
32010        ) -> windows_core::HRESULT {
32011            unsafe {
32012                let this: &Identity =
32013                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32014                IOlkAccountManager_Impl::Init(
32015                    this,
32016                    core::mem::transmute_copy(&paccthelper),
32017                    core::mem::transmute_copy(&dwflags),
32018                )
32019                .into()
32020            }
32021        }
32022        unsafe extern "system" fn DisplayAccountList<
32023            Identity: IOlkAccountManager_Impl,
32024            const OFFSET: isize,
32025        >(
32026            this: *mut core::ffi::c_void,
32027            hwnd: windows::Win32::Foundation::HWND,
32028            dwflags: u32,
32029            wsztitle: windows_core::PCWSTR,
32030            ccategories: u32,
32031            rgclsidcategories: *const windows_core::GUID,
32032            pclsidtype: *const windows_core::GUID,
32033        ) -> windows_core::HRESULT {
32034            unsafe {
32035                let this: &Identity =
32036                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32037                IOlkAccountManager_Impl::DisplayAccountList(
32038                    this,
32039                    core::mem::transmute_copy(&hwnd),
32040                    core::mem::transmute_copy(&dwflags),
32041                    core::mem::transmute(&wsztitle),
32042                    core::mem::transmute_copy(&ccategories),
32043                    core::mem::transmute_copy(&rgclsidcategories),
32044                    core::mem::transmute_copy(&pclsidtype),
32045                )
32046                .into()
32047            }
32048        }
32049        unsafe extern "system" fn PlaceHolder1<
32050            Identity: IOlkAccountManager_Impl,
32051            const OFFSET: isize,
32052        >(
32053            this: *mut core::ffi::c_void,
32054        ) -> windows_core::HRESULT {
32055            unsafe {
32056                let this: &Identity =
32057                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32058                IOlkAccountManager_Impl::PlaceHolder1(this).into()
32059            }
32060        }
32061        unsafe extern "system" fn PlaceHolder2<
32062            Identity: IOlkAccountManager_Impl,
32063            const OFFSET: isize,
32064        >(
32065            this: *mut core::ffi::c_void,
32066        ) -> windows_core::HRESULT {
32067            unsafe {
32068                let this: &Identity =
32069                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32070                IOlkAccountManager_Impl::PlaceHolder2(this).into()
32071            }
32072        }
32073        unsafe extern "system" fn PlaceHolder3<
32074            Identity: IOlkAccountManager_Impl,
32075            const OFFSET: isize,
32076        >(
32077            this: *mut core::ffi::c_void,
32078        ) -> windows_core::HRESULT {
32079            unsafe {
32080                let this: &Identity =
32081                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32082                IOlkAccountManager_Impl::PlaceHolder3(this).into()
32083            }
32084        }
32085        unsafe extern "system" fn PlaceHolder4<
32086            Identity: IOlkAccountManager_Impl,
32087            const OFFSET: isize,
32088        >(
32089            this: *mut core::ffi::c_void,
32090        ) -> windows_core::HRESULT {
32091            unsafe {
32092                let this: &Identity =
32093                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32094                IOlkAccountManager_Impl::PlaceHolder4(this).into()
32095            }
32096        }
32097        unsafe extern "system" fn PlaceHolder5<
32098            Identity: IOlkAccountManager_Impl,
32099            const OFFSET: isize,
32100        >(
32101            this: *mut core::ffi::c_void,
32102        ) -> windows_core::HRESULT {
32103            unsafe {
32104                let this: &Identity =
32105                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32106                IOlkAccountManager_Impl::PlaceHolder5(this).into()
32107            }
32108        }
32109        unsafe extern "system" fn FindAccount<
32110            Identity: IOlkAccountManager_Impl,
32111            const OFFSET: isize,
32112        >(
32113            this: *mut core::ffi::c_void,
32114            dwprop: u32,
32115            pvar: *mut ACCT_VARIANT,
32116            ppaccount: *mut *mut core::ffi::c_void,
32117        ) -> windows_core::HRESULT {
32118            unsafe {
32119                let this: &Identity =
32120                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32121                IOlkAccountManager_Impl::FindAccount(
32122                    this,
32123                    core::mem::transmute_copy(&dwprop),
32124                    core::mem::transmute_copy(&pvar),
32125                    core::mem::transmute_copy(&ppaccount),
32126                )
32127                .into()
32128            }
32129        }
32130        unsafe extern "system" fn PlaceHolder6<
32131            Identity: IOlkAccountManager_Impl,
32132            const OFFSET: isize,
32133        >(
32134            this: *mut core::ffi::c_void,
32135        ) -> windows_core::HRESULT {
32136            unsafe {
32137                let this: &Identity =
32138                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32139                IOlkAccountManager_Impl::PlaceHolder6(this).into()
32140            }
32141        }
32142        unsafe extern "system" fn PlaceHolder7<
32143            Identity: IOlkAccountManager_Impl,
32144            const OFFSET: isize,
32145        >(
32146            this: *mut core::ffi::c_void,
32147        ) -> windows_core::HRESULT {
32148            unsafe {
32149                let this: &Identity =
32150                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32151                IOlkAccountManager_Impl::PlaceHolder7(this).into()
32152            }
32153        }
32154        unsafe extern "system" fn PlaceHolder8<
32155            Identity: IOlkAccountManager_Impl,
32156            const OFFSET: isize,
32157        >(
32158            this: *mut core::ffi::c_void,
32159        ) -> windows_core::HRESULT {
32160            unsafe {
32161                let this: &Identity =
32162                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32163                IOlkAccountManager_Impl::PlaceHolder8(this).into()
32164            }
32165        }
32166        unsafe extern "system" fn DeleteAccount<
32167            Identity: IOlkAccountManager_Impl,
32168            const OFFSET: isize,
32169        >(
32170            this: *mut core::ffi::c_void,
32171            dwacctid: u32,
32172        ) -> windows_core::HRESULT {
32173            unsafe {
32174                let this: &Identity =
32175                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32176                IOlkAccountManager_Impl::DeleteAccount(this, core::mem::transmute_copy(&dwacctid))
32177                    .into()
32178            }
32179        }
32180        unsafe extern "system" fn PlaceHolder9<
32181            Identity: IOlkAccountManager_Impl,
32182            const OFFSET: isize,
32183        >(
32184            this: *mut core::ffi::c_void,
32185        ) -> windows_core::HRESULT {
32186            unsafe {
32187                let this: &Identity =
32188                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32189                IOlkAccountManager_Impl::PlaceHolder9(this).into()
32190            }
32191        }
32192        unsafe extern "system" fn SaveChanges<
32193            Identity: IOlkAccountManager_Impl,
32194            const OFFSET: isize,
32195        >(
32196            this: *mut core::ffi::c_void,
32197            dwacctid: u32,
32198            dwflags: u32,
32199        ) -> windows_core::HRESULT {
32200            unsafe {
32201                let this: &Identity =
32202                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32203                IOlkAccountManager_Impl::SaveChanges(
32204                    this,
32205                    core::mem::transmute_copy(&dwacctid),
32206                    core::mem::transmute_copy(&dwflags),
32207                )
32208                .into()
32209            }
32210        }
32211        unsafe extern "system" fn GetOrder<
32212            Identity: IOlkAccountManager_Impl,
32213            const OFFSET: isize,
32214        >(
32215            this: *mut core::ffi::c_void,
32216            pclsidcategory: *const windows_core::GUID,
32217            pcaccts: *mut u32,
32218            prgaccts: *mut *mut u32,
32219        ) -> windows_core::HRESULT {
32220            unsafe {
32221                let this: &Identity =
32222                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32223                IOlkAccountManager_Impl::GetOrder(
32224                    this,
32225                    core::mem::transmute_copy(&pclsidcategory),
32226                    core::mem::transmute_copy(&pcaccts),
32227                    core::mem::transmute_copy(&prgaccts),
32228                )
32229                .into()
32230            }
32231        }
32232        unsafe extern "system" fn SetOrder<
32233            Identity: IOlkAccountManager_Impl,
32234            const OFFSET: isize,
32235        >(
32236            this: *mut core::ffi::c_void,
32237            pclsidcategory: *const windows_core::GUID,
32238            pcaccts: *mut u32,
32239            prgaccts: *mut *mut u32,
32240        ) -> windows_core::HRESULT {
32241            unsafe {
32242                let this: &Identity =
32243                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32244                IOlkAccountManager_Impl::SetOrder(
32245                    this,
32246                    core::mem::transmute_copy(&pclsidcategory),
32247                    core::mem::transmute_copy(&pcaccts),
32248                    core::mem::transmute_copy(&prgaccts),
32249                )
32250                .into()
32251            }
32252        }
32253        unsafe extern "system" fn EnumerateAccounts<
32254            Identity: IOlkAccountManager_Impl,
32255            const OFFSET: isize,
32256        >(
32257            this: *mut core::ffi::c_void,
32258            pclsidcategory: *const windows_core::GUID,
32259            pclsidtype: *const windows_core::GUID,
32260            dwflags: u32,
32261            ppenum: *mut *mut core::ffi::c_void,
32262        ) -> windows_core::HRESULT {
32263            unsafe {
32264                let this: &Identity =
32265                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32266                match IOlkAccountManager_Impl::EnumerateAccounts(
32267                    this,
32268                    core::mem::transmute_copy(&pclsidcategory),
32269                    core::mem::transmute_copy(&pclsidtype),
32270                    core::mem::transmute_copy(&dwflags),
32271                ) {
32272                    Ok(ok__) => {
32273                        ppenum.write(core::mem::transmute(ok__));
32274                        windows_core::HRESULT(0)
32275                    }
32276                    Err(err) => err.into(),
32277                }
32278            }
32279        }
32280        unsafe extern "system" fn PlaceHolder10<
32281            Identity: IOlkAccountManager_Impl,
32282            const OFFSET: isize,
32283        >(
32284            this: *mut core::ffi::c_void,
32285        ) -> windows_core::HRESULT {
32286            unsafe {
32287                let this: &Identity =
32288                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32289                IOlkAccountManager_Impl::PlaceHolder10(this).into()
32290            }
32291        }
32292        unsafe extern "system" fn PlaceHolder11<
32293            Identity: IOlkAccountManager_Impl,
32294            const OFFSET: isize,
32295        >(
32296            this: *mut core::ffi::c_void,
32297        ) -> windows_core::HRESULT {
32298            unsafe {
32299                let this: &Identity =
32300                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32301                IOlkAccountManager_Impl::PlaceHolder11(this).into()
32302            }
32303        }
32304        unsafe extern "system" fn FreeMemory<
32305            Identity: IOlkAccountManager_Impl,
32306            const OFFSET: isize,
32307        >(
32308            this: *mut core::ffi::c_void,
32309            pv: *mut u8,
32310        ) -> windows_core::HRESULT {
32311            unsafe {
32312                let this: &Identity =
32313                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32314                IOlkAccountManager_Impl::FreeMemory(this, core::mem::transmute_copy(&pv)).into()
32315            }
32316        }
32317        unsafe extern "system" fn Advise<Identity: IOlkAccountManager_Impl, const OFFSET: isize>(
32318            this: *mut core::ffi::c_void,
32319            pnotify: *mut core::ffi::c_void,
32320            pdwcookie: *mut u32,
32321        ) -> windows_core::HRESULT {
32322            unsafe {
32323                let this: &Identity =
32324                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32325                IOlkAccountManager_Impl::Advise(
32326                    this,
32327                    core::mem::transmute_copy(&pnotify),
32328                    core::mem::transmute_copy(&pdwcookie),
32329                )
32330                .into()
32331            }
32332        }
32333        unsafe extern "system" fn Unadvise<
32334            Identity: IOlkAccountManager_Impl,
32335            const OFFSET: isize,
32336        >(
32337            this: *mut core::ffi::c_void,
32338            pdwcookie: *mut u32,
32339        ) -> windows_core::HRESULT {
32340            unsafe {
32341                let this: &Identity =
32342                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32343                IOlkAccountManager_Impl::Unadvise(this, core::mem::transmute_copy(&pdwcookie))
32344                    .into()
32345            }
32346        }
32347        unsafe extern "system" fn PlaceHolder12<
32348            Identity: IOlkAccountManager_Impl,
32349            const OFFSET: isize,
32350        >(
32351            this: *mut core::ffi::c_void,
32352        ) -> windows_core::HRESULT {
32353            unsafe {
32354                let this: &Identity =
32355                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32356                IOlkAccountManager_Impl::PlaceHolder12(this).into()
32357            }
32358        }
32359        unsafe extern "system" fn PlaceHolder13<
32360            Identity: IOlkAccountManager_Impl,
32361            const OFFSET: isize,
32362        >(
32363            this: *mut core::ffi::c_void,
32364        ) -> windows_core::HRESULT {
32365            unsafe {
32366                let this: &Identity =
32367                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32368                IOlkAccountManager_Impl::PlaceHolder13(this).into()
32369            }
32370        }
32371        unsafe extern "system" fn PlaceHolder14<
32372            Identity: IOlkAccountManager_Impl,
32373            const OFFSET: isize,
32374        >(
32375            this: *mut core::ffi::c_void,
32376        ) -> windows_core::HRESULT {
32377            unsafe {
32378                let this: &Identity =
32379                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32380                IOlkAccountManager_Impl::PlaceHolder14(this).into()
32381            }
32382        }
32383        Self {
32384            base__: IOlkErrorUnknown_Vtbl::new::<Identity, OFFSET>(),
32385            Init: Init::<Identity, OFFSET>,
32386            DisplayAccountList: DisplayAccountList::<Identity, OFFSET>,
32387            PlaceHolder1: PlaceHolder1::<Identity, OFFSET>,
32388            PlaceHolder2: PlaceHolder2::<Identity, OFFSET>,
32389            PlaceHolder3: PlaceHolder3::<Identity, OFFSET>,
32390            PlaceHolder4: PlaceHolder4::<Identity, OFFSET>,
32391            PlaceHolder5: PlaceHolder5::<Identity, OFFSET>,
32392            FindAccount: FindAccount::<Identity, OFFSET>,
32393            PlaceHolder6: PlaceHolder6::<Identity, OFFSET>,
32394            PlaceHolder7: PlaceHolder7::<Identity, OFFSET>,
32395            PlaceHolder8: PlaceHolder8::<Identity, OFFSET>,
32396            DeleteAccount: DeleteAccount::<Identity, OFFSET>,
32397            PlaceHolder9: PlaceHolder9::<Identity, OFFSET>,
32398            SaveChanges: SaveChanges::<Identity, OFFSET>,
32399            GetOrder: GetOrder::<Identity, OFFSET>,
32400            SetOrder: SetOrder::<Identity, OFFSET>,
32401            EnumerateAccounts: EnumerateAccounts::<Identity, OFFSET>,
32402            PlaceHolder10: PlaceHolder10::<Identity, OFFSET>,
32403            PlaceHolder11: PlaceHolder11::<Identity, OFFSET>,
32404            FreeMemory: FreeMemory::<Identity, OFFSET>,
32405            Advise: Advise::<Identity, OFFSET>,
32406            Unadvise: Unadvise::<Identity, OFFSET>,
32407            PlaceHolder12: PlaceHolder12::<Identity, OFFSET>,
32408            PlaceHolder13: PlaceHolder13::<Identity, OFFSET>,
32409            PlaceHolder14: PlaceHolder14::<Identity, OFFSET>,
32410        }
32411    }
32412    pub fn matches(iid: &windows_core::GUID) -> bool {
32413        iid == &<IOlkAccountManager as windows_core::Interface>::IID
32414            || iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
32415    }
32416}
32417impl windows_core::RuntimeName for IOlkAccountManager {}
32418windows_core::imp::define_interface!(
32419    IOlkAccountNotify,
32420    IOlkAccountNotify_Vtbl,
32421    0x9240a6c3_af41_11d2_8c3b_00104b2a6676
32422);
32423impl core::ops::Deref for IOlkAccountNotify {
32424    type Target = IOlkErrorUnknown;
32425    fn deref(&self) -> &Self::Target {
32426        unsafe { core::mem::transmute(self) }
32427    }
32428}
32429windows_core::imp::interface_hierarchy!(
32430    IOlkAccountNotify,
32431    windows_core::IUnknown,
32432    IOlkErrorUnknown
32433);
32434#[repr(C)]
32435pub struct IOlkAccountNotify_Vtbl {
32436    pub base__: IOlkErrorUnknown_Vtbl,
32437}
32438pub trait IOlkAccountNotify_Impl: IOlkErrorUnknown_Impl {}
32439impl IOlkAccountNotify_Vtbl {
32440    pub const fn new<Identity: IOlkAccountNotify_Impl, const OFFSET: isize>() -> Self {
32441        Self {
32442            base__: IOlkErrorUnknown_Vtbl::new::<Identity, OFFSET>(),
32443        }
32444    }
32445    pub fn matches(iid: &windows_core::GUID) -> bool {
32446        iid == &<IOlkAccountNotify as windows_core::Interface>::IID
32447            || iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
32448    }
32449}
32450impl windows_core::RuntimeName for IOlkAccountNotify {}
32451windows_core::imp::define_interface!(
32452    IOlkEnum,
32453    IOlkEnum_Vtbl,
32454    0x9240a6c0_af41_11d2_8c3b_00104b2a6676
32455);
32456windows_core::imp::interface_hierarchy!(IOlkEnum, windows_core::IUnknown);
32457impl IOlkEnum {
32458    pub unsafe fn GetCount(&self, pulcount: *mut u32) -> windows_core::Result<()> {
32459        unsafe {
32460            (windows_core::Interface::vtable(self).GetCount)(
32461                windows_core::Interface::as_raw(self),
32462                pulcount as _,
32463            )
32464            .ok()
32465        }
32466    }
32467    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
32468        unsafe {
32469            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
32470                .ok()
32471        }
32472    }
32473    pub unsafe fn GetNext(&self) -> windows_core::Result<windows_core::IUnknown> {
32474        unsafe {
32475            let mut result__ = core::mem::zeroed();
32476            (windows_core::Interface::vtable(self).GetNext)(
32477                windows_core::Interface::as_raw(self),
32478                &mut result__,
32479            )
32480            .and_then(|| windows_core::Type::from_abi(result__))
32481        }
32482    }
32483    pub unsafe fn Skip(&self, cskip: u32) -> windows_core::Result<()> {
32484        unsafe {
32485            (windows_core::Interface::vtable(self).Skip)(
32486                windows_core::Interface::as_raw(self),
32487                cskip,
32488            )
32489            .ok()
32490        }
32491    }
32492}
32493#[repr(C)]
32494pub struct IOlkEnum_Vtbl {
32495    pub base__: windows_core::IUnknown_Vtbl,
32496    pub GetCount:
32497        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
32498    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
32499    pub GetNext: unsafe extern "system" fn(
32500        *mut core::ffi::c_void,
32501        *mut *mut core::ffi::c_void,
32502    ) -> windows_core::HRESULT,
32503    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
32504}
32505pub trait IOlkEnum_Impl: windows_core::IUnknownImpl {
32506    fn GetCount(&self, pulcount: *mut u32) -> windows_core::Result<()>;
32507    fn Reset(&self) -> windows_core::Result<()>;
32508    fn GetNext(&self) -> windows_core::Result<windows_core::IUnknown>;
32509    fn Skip(&self, cskip: u32) -> windows_core::Result<()>;
32510}
32511impl IOlkEnum_Vtbl {
32512    pub const fn new<Identity: IOlkEnum_Impl, const OFFSET: isize>() -> Self {
32513        unsafe extern "system" fn GetCount<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32514            this: *mut core::ffi::c_void,
32515            pulcount: *mut u32,
32516        ) -> windows_core::HRESULT {
32517            unsafe {
32518                let this: &Identity =
32519                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32520                IOlkEnum_Impl::GetCount(this, core::mem::transmute_copy(&pulcount)).into()
32521            }
32522        }
32523        unsafe extern "system" fn Reset<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32524            this: *mut core::ffi::c_void,
32525        ) -> windows_core::HRESULT {
32526            unsafe {
32527                let this: &Identity =
32528                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32529                IOlkEnum_Impl::Reset(this).into()
32530            }
32531        }
32532        unsafe extern "system" fn GetNext<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32533            this: *mut core::ffi::c_void,
32534            ppunk: *mut *mut core::ffi::c_void,
32535        ) -> windows_core::HRESULT {
32536            unsafe {
32537                let this: &Identity =
32538                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32539                match IOlkEnum_Impl::GetNext(this) {
32540                    Ok(ok__) => {
32541                        ppunk.write(core::mem::transmute(ok__));
32542                        windows_core::HRESULT(0)
32543                    }
32544                    Err(err) => err.into(),
32545                }
32546            }
32547        }
32548        unsafe extern "system" fn Skip<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32549            this: *mut core::ffi::c_void,
32550            cskip: u32,
32551        ) -> windows_core::HRESULT {
32552            unsafe {
32553                let this: &Identity =
32554                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32555                IOlkEnum_Impl::Skip(this, core::mem::transmute_copy(&cskip)).into()
32556            }
32557        }
32558        Self {
32559            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32560            GetCount: GetCount::<Identity, OFFSET>,
32561            Reset: Reset::<Identity, OFFSET>,
32562            GetNext: GetNext::<Identity, OFFSET>,
32563            Skip: Skip::<Identity, OFFSET>,
32564        }
32565    }
32566    pub fn matches(iid: &windows_core::GUID) -> bool {
32567        iid == &<IOlkEnum as windows_core::Interface>::IID
32568    }
32569}
32570impl windows_core::RuntimeName for IOlkEnum {}
32571windows_core::imp::define_interface!(
32572    IOlkErrorUnknown,
32573    IOlkErrorUnknown_Vtbl,
32574    0x9240a6c0_af41_11d2_8c3b_00104b2a6676
32575);
32576windows_core::imp::interface_hierarchy!(IOlkErrorUnknown, windows_core::IUnknown);
32577impl IOlkErrorUnknown {
32578    pub unsafe fn GetLastError(
32579        &self,
32580        hr: windows_core::HRESULT,
32581        ppwszerror: *mut windows_core::PWSTR,
32582    ) -> windows_core::Result<()> {
32583        unsafe {
32584            (windows_core::Interface::vtable(self).GetLastError)(
32585                windows_core::Interface::as_raw(self),
32586                hr,
32587                ppwszerror as _,
32588            )
32589            .ok()
32590        }
32591    }
32592}
32593#[repr(C)]
32594pub struct IOlkErrorUnknown_Vtbl {
32595    pub base__: windows_core::IUnknown_Vtbl,
32596    pub GetLastError: unsafe extern "system" fn(
32597        *mut core::ffi::c_void,
32598        windows_core::HRESULT,
32599        *mut windows_core::PWSTR,
32600    ) -> windows_core::HRESULT,
32601}
32602pub trait IOlkErrorUnknown_Impl: windows_core::IUnknownImpl {
32603    fn GetLastError(
32604        &self,
32605        hr: windows_core::HRESULT,
32606        ppwszerror: *mut windows_core::PWSTR,
32607    ) -> windows_core::Result<()>;
32608}
32609impl IOlkErrorUnknown_Vtbl {
32610    pub const fn new<Identity: IOlkErrorUnknown_Impl, const OFFSET: isize>() -> Self {
32611        unsafe extern "system" fn GetLastError<
32612            Identity: IOlkErrorUnknown_Impl,
32613            const OFFSET: isize,
32614        >(
32615            this: *mut core::ffi::c_void,
32616            hr: windows_core::HRESULT,
32617            ppwszerror: *mut windows_core::PWSTR,
32618        ) -> windows_core::HRESULT {
32619            unsafe {
32620                let this: &Identity =
32621                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32622                IOlkErrorUnknown_Impl::GetLastError(
32623                    this,
32624                    core::mem::transmute_copy(&hr),
32625                    core::mem::transmute_copy(&ppwszerror),
32626                )
32627                .into()
32628            }
32629        }
32630        Self {
32631            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32632            GetLastError: GetLastError::<Identity, OFFSET>,
32633        }
32634    }
32635    pub fn matches(iid: &windows_core::GUID) -> bool {
32636        iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
32637    }
32638}
32639impl windows_core::RuntimeName for IOlkErrorUnknown {}
32640pub const IPROP_CLEAN: u32 = 65536u32;
32641pub const IPROP_DIRTY: u32 = 131072u32;
32642pub const IPROP_READONLY: u32 = 1u32;
32643pub const IPROP_READWRITE: u32 = 2u32;
32644windows_core::imp::define_interface!(
32645    IPersistMessage,
32646    IPersistMessage_Vtbl,
32647    0x0002032a_0000_0000_c000_000000000046
32648);
32649windows_core::imp::interface_hierarchy!(IPersistMessage, windows_core::IUnknown);
32650impl IPersistMessage {
32651    pub unsafe fn GetLastError(
32652        &self,
32653        hresult: windows_core::HRESULT,
32654        ulflags: u32,
32655        lppmapierror: *mut *mut MAPIERROR,
32656    ) -> windows_core::Result<()> {
32657        unsafe {
32658            (windows_core::Interface::vtable(self).GetLastError)(
32659                windows_core::Interface::as_raw(self),
32660                hresult,
32661                ulflags,
32662                lppmapierror as _,
32663            )
32664            .ok()
32665        }
32666    }
32667    pub unsafe fn GetClassID(
32668        &self,
32669        lpclassid: *mut windows_core::GUID,
32670    ) -> windows_core::Result<()> {
32671        unsafe {
32672            (windows_core::Interface::vtable(self).GetClassID)(
32673                windows_core::Interface::as_raw(self),
32674                lpclassid as _,
32675            )
32676            .ok()
32677        }
32678    }
32679    pub unsafe fn IsDirty(&self) -> windows_core::Result<()> {
32680        unsafe {
32681            (windows_core::Interface::vtable(self).IsDirty)(windows_core::Interface::as_raw(self))
32682                .ok()
32683        }
32684    }
32685    pub unsafe fn InitNew<P0, P1>(&self, pmessagesite: P0, pmessage: P1) -> windows_core::Result<()>
32686    where
32687        P0: windows_core::Param<IMAPIMessageSite>,
32688        P1: windows_core::Param<IMessage>,
32689    {
32690        unsafe {
32691            (windows_core::Interface::vtable(self).InitNew)(
32692                windows_core::Interface::as_raw(self),
32693                pmessagesite.param().abi(),
32694                pmessage.param().abi(),
32695            )
32696            .ok()
32697        }
32698    }
32699    pub unsafe fn Load<P0, P1>(
32700        &self,
32701        pmessagesite: P0,
32702        pmessage: P1,
32703        ulmessagestatus: u32,
32704        ulmessageflags: u32,
32705    ) -> windows_core::Result<()>
32706    where
32707        P0: windows_core::Param<IMAPIMessageSite>,
32708        P1: windows_core::Param<IMessage>,
32709    {
32710        unsafe {
32711            (windows_core::Interface::vtable(self).Load)(
32712                windows_core::Interface::as_raw(self),
32713                pmessagesite.param().abi(),
32714                pmessage.param().abi(),
32715                ulmessagestatus,
32716                ulmessageflags,
32717            )
32718            .ok()
32719        }
32720    }
32721    pub unsafe fn Save<P0>(&self, pmessage: P0, fsameasload: u32) -> windows_core::Result<()>
32722    where
32723        P0: windows_core::Param<IMessage>,
32724    {
32725        unsafe {
32726            (windows_core::Interface::vtable(self).Save)(
32727                windows_core::Interface::as_raw(self),
32728                pmessage.param().abi(),
32729                fsameasload,
32730            )
32731            .ok()
32732        }
32733    }
32734    pub unsafe fn SaveCompleted<P0>(&self, pmessage: P0) -> windows_core::Result<()>
32735    where
32736        P0: windows_core::Param<IMessage>,
32737    {
32738        unsafe {
32739            (windows_core::Interface::vtable(self).SaveCompleted)(
32740                windows_core::Interface::as_raw(self),
32741                pmessage.param().abi(),
32742            )
32743            .ok()
32744        }
32745    }
32746    pub unsafe fn HandsOffMessage(&self) -> windows_core::Result<()> {
32747        unsafe {
32748            (windows_core::Interface::vtable(self).HandsOffMessage)(
32749                windows_core::Interface::as_raw(self),
32750            )
32751            .ok()
32752        }
32753    }
32754}
32755#[repr(C)]
32756pub struct IPersistMessage_Vtbl {
32757    pub base__: windows_core::IUnknown_Vtbl,
32758    pub GetLastError: unsafe extern "system" fn(
32759        *mut core::ffi::c_void,
32760        windows_core::HRESULT,
32761        u32,
32762        *mut *mut MAPIERROR,
32763    ) -> windows_core::HRESULT,
32764    pub GetClassID: unsafe extern "system" fn(
32765        *mut core::ffi::c_void,
32766        *mut windows_core::GUID,
32767    ) -> windows_core::HRESULT,
32768    pub IsDirty: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
32769    pub InitNew: unsafe extern "system" fn(
32770        *mut core::ffi::c_void,
32771        *mut core::ffi::c_void,
32772        *mut core::ffi::c_void,
32773    ) -> windows_core::HRESULT,
32774    pub Load: unsafe extern "system" fn(
32775        *mut core::ffi::c_void,
32776        *mut core::ffi::c_void,
32777        *mut core::ffi::c_void,
32778        u32,
32779        u32,
32780    ) -> windows_core::HRESULT,
32781    pub Save: unsafe extern "system" fn(
32782        *mut core::ffi::c_void,
32783        *mut core::ffi::c_void,
32784        u32,
32785    ) -> windows_core::HRESULT,
32786    pub SaveCompleted: unsafe extern "system" fn(
32787        *mut core::ffi::c_void,
32788        *mut core::ffi::c_void,
32789    ) -> windows_core::HRESULT,
32790    pub HandsOffMessage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
32791}
32792pub trait IPersistMessage_Impl: windows_core::IUnknownImpl {
32793    fn GetLastError(
32794        &self,
32795        hresult: windows_core::HRESULT,
32796        ulflags: u32,
32797        lppmapierror: *mut *mut MAPIERROR,
32798    ) -> windows_core::Result<()>;
32799    fn GetClassID(&self, lpclassid: *mut windows_core::GUID) -> windows_core::Result<()>;
32800    fn IsDirty(&self) -> windows_core::Result<()>;
32801    fn InitNew(
32802        &self,
32803        pmessagesite: windows_core::Ref<'_, IMAPIMessageSite>,
32804        pmessage: windows_core::Ref<'_, IMessage>,
32805    ) -> windows_core::Result<()>;
32806    fn Load(
32807        &self,
32808        pmessagesite: windows_core::Ref<'_, IMAPIMessageSite>,
32809        pmessage: windows_core::Ref<'_, IMessage>,
32810        ulmessagestatus: u32,
32811        ulmessageflags: u32,
32812    ) -> windows_core::Result<()>;
32813    fn Save(
32814        &self,
32815        pmessage: windows_core::Ref<'_, IMessage>,
32816        fsameasload: u32,
32817    ) -> windows_core::Result<()>;
32818    fn SaveCompleted(&self, pmessage: windows_core::Ref<'_, IMessage>) -> windows_core::Result<()>;
32819    fn HandsOffMessage(&self) -> windows_core::Result<()>;
32820}
32821impl IPersistMessage_Vtbl {
32822    pub const fn new<Identity: IPersistMessage_Impl, const OFFSET: isize>() -> Self {
32823        unsafe extern "system" fn GetLastError<
32824            Identity: IPersistMessage_Impl,
32825            const OFFSET: isize,
32826        >(
32827            this: *mut core::ffi::c_void,
32828            hresult: windows_core::HRESULT,
32829            ulflags: u32,
32830            lppmapierror: *mut *mut MAPIERROR,
32831        ) -> windows_core::HRESULT {
32832            unsafe {
32833                let this: &Identity =
32834                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32835                IPersistMessage_Impl::GetLastError(
32836                    this,
32837                    core::mem::transmute_copy(&hresult),
32838                    core::mem::transmute_copy(&ulflags),
32839                    core::mem::transmute_copy(&lppmapierror),
32840                )
32841                .into()
32842            }
32843        }
32844        unsafe extern "system" fn GetClassID<
32845            Identity: IPersistMessage_Impl,
32846            const OFFSET: isize,
32847        >(
32848            this: *mut core::ffi::c_void,
32849            lpclassid: *mut windows_core::GUID,
32850        ) -> windows_core::HRESULT {
32851            unsafe {
32852                let this: &Identity =
32853                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32854                IPersistMessage_Impl::GetClassID(this, core::mem::transmute_copy(&lpclassid)).into()
32855            }
32856        }
32857        unsafe extern "system" fn IsDirty<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32858            this: *mut core::ffi::c_void,
32859        ) -> windows_core::HRESULT {
32860            unsafe {
32861                let this: &Identity =
32862                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32863                IPersistMessage_Impl::IsDirty(this).into()
32864            }
32865        }
32866        unsafe extern "system" fn InitNew<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32867            this: *mut core::ffi::c_void,
32868            pmessagesite: *mut core::ffi::c_void,
32869            pmessage: *mut core::ffi::c_void,
32870        ) -> windows_core::HRESULT {
32871            unsafe {
32872                let this: &Identity =
32873                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32874                IPersistMessage_Impl::InitNew(
32875                    this,
32876                    core::mem::transmute_copy(&pmessagesite),
32877                    core::mem::transmute_copy(&pmessage),
32878                )
32879                .into()
32880            }
32881        }
32882        unsafe extern "system" fn Load<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32883            this: *mut core::ffi::c_void,
32884            pmessagesite: *mut core::ffi::c_void,
32885            pmessage: *mut core::ffi::c_void,
32886            ulmessagestatus: u32,
32887            ulmessageflags: u32,
32888        ) -> windows_core::HRESULT {
32889            unsafe {
32890                let this: &Identity =
32891                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32892                IPersistMessage_Impl::Load(
32893                    this,
32894                    core::mem::transmute_copy(&pmessagesite),
32895                    core::mem::transmute_copy(&pmessage),
32896                    core::mem::transmute_copy(&ulmessagestatus),
32897                    core::mem::transmute_copy(&ulmessageflags),
32898                )
32899                .into()
32900            }
32901        }
32902        unsafe extern "system" fn Save<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32903            this: *mut core::ffi::c_void,
32904            pmessage: *mut core::ffi::c_void,
32905            fsameasload: u32,
32906        ) -> windows_core::HRESULT {
32907            unsafe {
32908                let this: &Identity =
32909                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32910                IPersistMessage_Impl::Save(
32911                    this,
32912                    core::mem::transmute_copy(&pmessage),
32913                    core::mem::transmute_copy(&fsameasload),
32914                )
32915                .into()
32916            }
32917        }
32918        unsafe extern "system" fn SaveCompleted<
32919            Identity: IPersistMessage_Impl,
32920            const OFFSET: isize,
32921        >(
32922            this: *mut core::ffi::c_void,
32923            pmessage: *mut core::ffi::c_void,
32924        ) -> windows_core::HRESULT {
32925            unsafe {
32926                let this: &Identity =
32927                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32928                IPersistMessage_Impl::SaveCompleted(this, core::mem::transmute_copy(&pmessage))
32929                    .into()
32930            }
32931        }
32932        unsafe extern "system" fn HandsOffMessage<
32933            Identity: IPersistMessage_Impl,
32934            const OFFSET: isize,
32935        >(
32936            this: *mut core::ffi::c_void,
32937        ) -> windows_core::HRESULT {
32938            unsafe {
32939                let this: &Identity =
32940                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32941                IPersistMessage_Impl::HandsOffMessage(this).into()
32942            }
32943        }
32944        Self {
32945            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32946            GetLastError: GetLastError::<Identity, OFFSET>,
32947            GetClassID: GetClassID::<Identity, OFFSET>,
32948            IsDirty: IsDirty::<Identity, OFFSET>,
32949            InitNew: InitNew::<Identity, OFFSET>,
32950            Load: Load::<Identity, OFFSET>,
32951            Save: Save::<Identity, OFFSET>,
32952            SaveCompleted: SaveCompleted::<Identity, OFFSET>,
32953            HandsOffMessage: HandsOffMessage::<Identity, OFFSET>,
32954        }
32955    }
32956    pub fn matches(iid: &windows_core::GUID) -> bool {
32957        iid == &<IPersistMessage as windows_core::Interface>::IID
32958    }
32959}
32960impl windows_core::RuntimeName for IPersistMessage {}
32961windows_core::imp::define_interface!(
32962    IPersistMime,
32963    IPersistMime_Vtbl,
32964    0xde4ad8da_555f_11d1_8dd0_00c04fb951f9
32965);
32966impl core::ops::Deref for IPersistMime {
32967    type Target = windows::Win32::System::Com::IPersist;
32968    fn deref(&self) -> &Self::Target {
32969        unsafe { core::mem::transmute(self) }
32970    }
32971}
32972windows_core::imp::interface_hierarchy!(
32973    IPersistMime,
32974    windows_core::IUnknown,
32975    windows::Win32::System::Com::IPersist
32976);
32977impl IPersistMime {
32978    pub unsafe fn Load<P0>(&self, pmsg: P0) -> windows_core::Result<()>
32979    where
32980        P0: windows_core::Param<IMimeMessage>,
32981    {
32982        unsafe {
32983            (windows_core::Interface::vtable(self).Load)(
32984                windows_core::Interface::as_raw(self),
32985                pmsg.param().abi(),
32986            )
32987            .ok()
32988        }
32989    }
32990    pub unsafe fn Save<P0>(&self, pmsg: P0, dwflags: u32) -> windows_core::Result<()>
32991    where
32992        P0: windows_core::Param<IMimeMessage>,
32993    {
32994        unsafe {
32995            (windows_core::Interface::vtable(self).Save)(
32996                windows_core::Interface::as_raw(self),
32997                pmsg.param().abi(),
32998                dwflags,
32999            )
33000            .ok()
33001        }
33002    }
33003}
33004#[repr(C)]
33005pub struct IPersistMime_Vtbl {
33006    pub base__: windows::Win32::System::Com::IPersist_Vtbl,
33007    pub Load: unsafe extern "system" fn(
33008        *mut core::ffi::c_void,
33009        *mut core::ffi::c_void,
33010    ) -> windows_core::HRESULT,
33011    pub Save: unsafe extern "system" fn(
33012        *mut core::ffi::c_void,
33013        *mut core::ffi::c_void,
33014        u32,
33015    ) -> windows_core::HRESULT,
33016}
33017pub trait IPersistMime_Impl: windows::Win32::System::Com::IPersist_Impl {
33018    fn Load(&self, pmsg: windows_core::Ref<'_, IMimeMessage>) -> windows_core::Result<()>;
33019    fn Save(
33020        &self,
33021        pmsg: windows_core::Ref<'_, IMimeMessage>,
33022        dwflags: u32,
33023    ) -> windows_core::Result<()>;
33024}
33025impl IPersistMime_Vtbl {
33026    pub const fn new<Identity: IPersistMime_Impl, const OFFSET: isize>() -> Self {
33027        unsafe extern "system" fn Load<Identity: IPersistMime_Impl, const OFFSET: isize>(
33028            this: *mut core::ffi::c_void,
33029            pmsg: *mut core::ffi::c_void,
33030        ) -> windows_core::HRESULT {
33031            unsafe {
33032                let this: &Identity =
33033                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33034                IPersistMime_Impl::Load(this, core::mem::transmute_copy(&pmsg)).into()
33035            }
33036        }
33037        unsafe extern "system" fn Save<Identity: IPersistMime_Impl, const OFFSET: isize>(
33038            this: *mut core::ffi::c_void,
33039            pmsg: *mut core::ffi::c_void,
33040            dwflags: u32,
33041        ) -> windows_core::HRESULT {
33042            unsafe {
33043                let this: &Identity =
33044                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33045                IPersistMime_Impl::Save(
33046                    this,
33047                    core::mem::transmute_copy(&pmsg),
33048                    core::mem::transmute_copy(&dwflags),
33049                )
33050                .into()
33051            }
33052        }
33053        Self {
33054            base__: windows::Win32::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
33055            Load: Load::<Identity, OFFSET>,
33056            Save: Save::<Identity, OFFSET>,
33057        }
33058    }
33059    pub fn matches(iid: &windows_core::GUID) -> bool {
33060        iid == &<IPersistMime as windows_core::Interface>::IID
33061            || iid == &<windows::Win32::System::Com::IPersist as windows_core::Interface>::IID
33062    }
33063}
33064impl windows_core::RuntimeName for IPersistMime {}
33065windows_core::imp::define_interface!(
33066    IProfAdmin,
33067    IProfAdmin_Vtbl,
33068    0x0002031c_0000_0000_c000_000000000046
33069);
33070windows_core::imp::interface_hierarchy!(IProfAdmin, windows_core::IUnknown);
33071impl IProfAdmin {
33072    pub unsafe fn GetLastError(
33073        &self,
33074        hresult: windows_core::HRESULT,
33075        ulflags: u32,
33076        lppmapierror: *mut *mut MAPIERROR,
33077    ) -> windows_core::Result<()> {
33078        unsafe {
33079            (windows_core::Interface::vtable(self).GetLastError)(
33080                windows_core::Interface::as_raw(self),
33081                hresult,
33082                ulflags,
33083                lppmapierror as _,
33084            )
33085            .ok()
33086        }
33087    }
33088    pub unsafe fn GetProfileTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
33089        unsafe {
33090            let mut result__ = core::mem::zeroed();
33091            (windows_core::Interface::vtable(self).GetProfileTable)(
33092                windows_core::Interface::as_raw(self),
33093                ulflags,
33094                &mut result__,
33095            )
33096            .and_then(|| windows_core::Type::from_abi(result__))
33097        }
33098    }
33099    pub unsafe fn CreateProfile(
33100        &self,
33101        lpszprofilename: *mut i8,
33102        lpszpassword: *mut i8,
33103        uluiparam: usize,
33104        ulflags: u32,
33105    ) -> windows_core::Result<()> {
33106        unsafe {
33107            (windows_core::Interface::vtable(self).CreateProfile)(
33108                windows_core::Interface::as_raw(self),
33109                lpszprofilename as _,
33110                lpszpassword as _,
33111                uluiparam,
33112                ulflags,
33113            )
33114            .ok()
33115        }
33116    }
33117    pub unsafe fn DeleteProfile(
33118        &self,
33119        lpszprofilename: *mut i8,
33120        ulflags: u32,
33121    ) -> windows_core::Result<()> {
33122        unsafe {
33123            (windows_core::Interface::vtable(self).DeleteProfile)(
33124                windows_core::Interface::as_raw(self),
33125                lpszprofilename as _,
33126                ulflags,
33127            )
33128            .ok()
33129        }
33130    }
33131    pub unsafe fn ChangeProfilePassword(
33132        &self,
33133        lpszprofilename: *mut i8,
33134        lpszoldpassword: *mut i8,
33135        lpsznewpassword: *mut i8,
33136        ulflags: u32,
33137    ) -> windows_core::Result<()> {
33138        unsafe {
33139            (windows_core::Interface::vtable(self).ChangeProfilePassword)(
33140                windows_core::Interface::as_raw(self),
33141                lpszprofilename as _,
33142                lpszoldpassword as _,
33143                lpsznewpassword as _,
33144                ulflags,
33145            )
33146            .ok()
33147        }
33148    }
33149    pub unsafe fn CopyProfile(
33150        &self,
33151        lpszoldprofilename: *mut i8,
33152        lpszoldpassword: *mut i8,
33153        lpsznewprofilename: *mut i8,
33154        uluiparam: usize,
33155        ulflags: u32,
33156    ) -> windows_core::Result<()> {
33157        unsafe {
33158            (windows_core::Interface::vtable(self).CopyProfile)(
33159                windows_core::Interface::as_raw(self),
33160                lpszoldprofilename as _,
33161                lpszoldpassword as _,
33162                lpsznewprofilename as _,
33163                uluiparam,
33164                ulflags,
33165            )
33166            .ok()
33167        }
33168    }
33169    pub unsafe fn RenameProfile(
33170        &self,
33171        lpszoldprofilename: *mut i8,
33172        lpszoldpassword: *mut i8,
33173        lpsznewprofilename: *mut i8,
33174        uluiparam: usize,
33175        ulflags: u32,
33176    ) -> windows_core::Result<()> {
33177        unsafe {
33178            (windows_core::Interface::vtable(self).RenameProfile)(
33179                windows_core::Interface::as_raw(self),
33180                lpszoldprofilename as _,
33181                lpszoldpassword as _,
33182                lpsznewprofilename as _,
33183                uluiparam,
33184                ulflags,
33185            )
33186            .ok()
33187        }
33188    }
33189    pub unsafe fn SetDefaultProfile(
33190        &self,
33191        lpszprofilename: *mut i8,
33192        ulflags: u32,
33193    ) -> windows_core::Result<()> {
33194        unsafe {
33195            (windows_core::Interface::vtable(self).SetDefaultProfile)(
33196                windows_core::Interface::as_raw(self),
33197                lpszprofilename as _,
33198                ulflags,
33199            )
33200            .ok()
33201        }
33202    }
33203    pub unsafe fn AdminServices(
33204        &self,
33205        lpszprofilename: *mut i8,
33206        lpszpassword: *mut i8,
33207        uluiparam: usize,
33208        ulflags: u32,
33209        lppserviceadmin: *mut Option<IMsgServiceAdmin>,
33210    ) -> windows_core::Result<()> {
33211        unsafe {
33212            (windows_core::Interface::vtable(self).AdminServices)(
33213                windows_core::Interface::as_raw(self),
33214                lpszprofilename as _,
33215                lpszpassword as _,
33216                uluiparam,
33217                ulflags,
33218                core::mem::transmute(lppserviceadmin),
33219            )
33220            .ok()
33221        }
33222    }
33223}
33224#[repr(C)]
33225pub struct IProfAdmin_Vtbl {
33226    pub base__: windows_core::IUnknown_Vtbl,
33227    pub GetLastError: unsafe extern "system" fn(
33228        *mut core::ffi::c_void,
33229        windows_core::HRESULT,
33230        u32,
33231        *mut *mut MAPIERROR,
33232    ) -> windows_core::HRESULT,
33233    pub GetProfileTable: unsafe extern "system" fn(
33234        *mut core::ffi::c_void,
33235        u32,
33236        *mut *mut core::ffi::c_void,
33237    ) -> windows_core::HRESULT,
33238    pub CreateProfile: unsafe extern "system" fn(
33239        *mut core::ffi::c_void,
33240        *mut i8,
33241        *mut i8,
33242        usize,
33243        u32,
33244    ) -> windows_core::HRESULT,
33245    pub DeleteProfile:
33246        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i8, u32) -> windows_core::HRESULT,
33247    pub ChangeProfilePassword: unsafe extern "system" fn(
33248        *mut core::ffi::c_void,
33249        *mut i8,
33250        *mut i8,
33251        *mut i8,
33252        u32,
33253    ) -> windows_core::HRESULT,
33254    pub CopyProfile: unsafe extern "system" fn(
33255        *mut core::ffi::c_void,
33256        *mut i8,
33257        *mut i8,
33258        *mut i8,
33259        usize,
33260        u32,
33261    ) -> windows_core::HRESULT,
33262    pub RenameProfile: unsafe extern "system" fn(
33263        *mut core::ffi::c_void,
33264        *mut i8,
33265        *mut i8,
33266        *mut i8,
33267        usize,
33268        u32,
33269    ) -> windows_core::HRESULT,
33270    pub SetDefaultProfile:
33271        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i8, u32) -> windows_core::HRESULT,
33272    pub AdminServices: unsafe extern "system" fn(
33273        *mut core::ffi::c_void,
33274        *mut i8,
33275        *mut i8,
33276        usize,
33277        u32,
33278        *mut *mut core::ffi::c_void,
33279    ) -> windows_core::HRESULT,
33280}
33281pub trait IProfAdmin_Impl: windows_core::IUnknownImpl {
33282    fn GetLastError(
33283        &self,
33284        hresult: windows_core::HRESULT,
33285        ulflags: u32,
33286        lppmapierror: *mut *mut MAPIERROR,
33287    ) -> windows_core::Result<()>;
33288    fn GetProfileTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
33289    fn CreateProfile(
33290        &self,
33291        lpszprofilename: *mut i8,
33292        lpszpassword: *mut i8,
33293        uluiparam: usize,
33294        ulflags: u32,
33295    ) -> windows_core::Result<()>;
33296    fn DeleteProfile(&self, lpszprofilename: *mut i8, ulflags: u32) -> windows_core::Result<()>;
33297    fn ChangeProfilePassword(
33298        &self,
33299        lpszprofilename: *mut i8,
33300        lpszoldpassword: *mut i8,
33301        lpsznewpassword: *mut i8,
33302        ulflags: u32,
33303    ) -> windows_core::Result<()>;
33304    fn CopyProfile(
33305        &self,
33306        lpszoldprofilename: *mut i8,
33307        lpszoldpassword: *mut i8,
33308        lpsznewprofilename: *mut i8,
33309        uluiparam: usize,
33310        ulflags: u32,
33311    ) -> windows_core::Result<()>;
33312    fn RenameProfile(
33313        &self,
33314        lpszoldprofilename: *mut i8,
33315        lpszoldpassword: *mut i8,
33316        lpsznewprofilename: *mut i8,
33317        uluiparam: usize,
33318        ulflags: u32,
33319    ) -> windows_core::Result<()>;
33320    fn SetDefaultProfile(&self, lpszprofilename: *mut i8, ulflags: u32)
33321        -> windows_core::Result<()>;
33322    fn AdminServices(
33323        &self,
33324        lpszprofilename: *mut i8,
33325        lpszpassword: *mut i8,
33326        uluiparam: usize,
33327        ulflags: u32,
33328        lppserviceadmin: windows_core::OutRef<'_, IMsgServiceAdmin>,
33329    ) -> windows_core::Result<()>;
33330}
33331impl IProfAdmin_Vtbl {
33332    pub const fn new<Identity: IProfAdmin_Impl, const OFFSET: isize>() -> Self {
33333        unsafe extern "system" fn GetLastError<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33334            this: *mut core::ffi::c_void,
33335            hresult: windows_core::HRESULT,
33336            ulflags: u32,
33337            lppmapierror: *mut *mut MAPIERROR,
33338        ) -> windows_core::HRESULT {
33339            unsafe {
33340                let this: &Identity =
33341                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33342                IProfAdmin_Impl::GetLastError(
33343                    this,
33344                    core::mem::transmute_copy(&hresult),
33345                    core::mem::transmute_copy(&ulflags),
33346                    core::mem::transmute_copy(&lppmapierror),
33347                )
33348                .into()
33349            }
33350        }
33351        unsafe extern "system" fn GetProfileTable<
33352            Identity: IProfAdmin_Impl,
33353            const OFFSET: isize,
33354        >(
33355            this: *mut core::ffi::c_void,
33356            ulflags: u32,
33357            lpptable: *mut *mut core::ffi::c_void,
33358        ) -> windows_core::HRESULT {
33359            unsafe {
33360                let this: &Identity =
33361                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33362                match IProfAdmin_Impl::GetProfileTable(this, core::mem::transmute_copy(&ulflags)) {
33363                    Ok(ok__) => {
33364                        lpptable.write(core::mem::transmute(ok__));
33365                        windows_core::HRESULT(0)
33366                    }
33367                    Err(err) => err.into(),
33368                }
33369            }
33370        }
33371        unsafe extern "system" fn CreateProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33372            this: *mut core::ffi::c_void,
33373            lpszprofilename: *mut i8,
33374            lpszpassword: *mut i8,
33375            uluiparam: usize,
33376            ulflags: u32,
33377        ) -> windows_core::HRESULT {
33378            unsafe {
33379                let this: &Identity =
33380                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33381                IProfAdmin_Impl::CreateProfile(
33382                    this,
33383                    core::mem::transmute_copy(&lpszprofilename),
33384                    core::mem::transmute_copy(&lpszpassword),
33385                    core::mem::transmute_copy(&uluiparam),
33386                    core::mem::transmute_copy(&ulflags),
33387                )
33388                .into()
33389            }
33390        }
33391        unsafe extern "system" fn DeleteProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33392            this: *mut core::ffi::c_void,
33393            lpszprofilename: *mut i8,
33394            ulflags: u32,
33395        ) -> windows_core::HRESULT {
33396            unsafe {
33397                let this: &Identity =
33398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33399                IProfAdmin_Impl::DeleteProfile(
33400                    this,
33401                    core::mem::transmute_copy(&lpszprofilename),
33402                    core::mem::transmute_copy(&ulflags),
33403                )
33404                .into()
33405            }
33406        }
33407        unsafe extern "system" fn ChangeProfilePassword<
33408            Identity: IProfAdmin_Impl,
33409            const OFFSET: isize,
33410        >(
33411            this: *mut core::ffi::c_void,
33412            lpszprofilename: *mut i8,
33413            lpszoldpassword: *mut i8,
33414            lpsznewpassword: *mut i8,
33415            ulflags: u32,
33416        ) -> windows_core::HRESULT {
33417            unsafe {
33418                let this: &Identity =
33419                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33420                IProfAdmin_Impl::ChangeProfilePassword(
33421                    this,
33422                    core::mem::transmute_copy(&lpszprofilename),
33423                    core::mem::transmute_copy(&lpszoldpassword),
33424                    core::mem::transmute_copy(&lpsznewpassword),
33425                    core::mem::transmute_copy(&ulflags),
33426                )
33427                .into()
33428            }
33429        }
33430        unsafe extern "system" fn CopyProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33431            this: *mut core::ffi::c_void,
33432            lpszoldprofilename: *mut i8,
33433            lpszoldpassword: *mut i8,
33434            lpsznewprofilename: *mut i8,
33435            uluiparam: usize,
33436            ulflags: u32,
33437        ) -> windows_core::HRESULT {
33438            unsafe {
33439                let this: &Identity =
33440                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33441                IProfAdmin_Impl::CopyProfile(
33442                    this,
33443                    core::mem::transmute_copy(&lpszoldprofilename),
33444                    core::mem::transmute_copy(&lpszoldpassword),
33445                    core::mem::transmute_copy(&lpsznewprofilename),
33446                    core::mem::transmute_copy(&uluiparam),
33447                    core::mem::transmute_copy(&ulflags),
33448                )
33449                .into()
33450            }
33451        }
33452        unsafe extern "system" fn RenameProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33453            this: *mut core::ffi::c_void,
33454            lpszoldprofilename: *mut i8,
33455            lpszoldpassword: *mut i8,
33456            lpsznewprofilename: *mut i8,
33457            uluiparam: usize,
33458            ulflags: u32,
33459        ) -> windows_core::HRESULT {
33460            unsafe {
33461                let this: &Identity =
33462                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33463                IProfAdmin_Impl::RenameProfile(
33464                    this,
33465                    core::mem::transmute_copy(&lpszoldprofilename),
33466                    core::mem::transmute_copy(&lpszoldpassword),
33467                    core::mem::transmute_copy(&lpsznewprofilename),
33468                    core::mem::transmute_copy(&uluiparam),
33469                    core::mem::transmute_copy(&ulflags),
33470                )
33471                .into()
33472            }
33473        }
33474        unsafe extern "system" fn SetDefaultProfile<
33475            Identity: IProfAdmin_Impl,
33476            const OFFSET: isize,
33477        >(
33478            this: *mut core::ffi::c_void,
33479            lpszprofilename: *mut i8,
33480            ulflags: u32,
33481        ) -> windows_core::HRESULT {
33482            unsafe {
33483                let this: &Identity =
33484                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33485                IProfAdmin_Impl::SetDefaultProfile(
33486                    this,
33487                    core::mem::transmute_copy(&lpszprofilename),
33488                    core::mem::transmute_copy(&ulflags),
33489                )
33490                .into()
33491            }
33492        }
33493        unsafe extern "system" fn AdminServices<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33494            this: *mut core::ffi::c_void,
33495            lpszprofilename: *mut i8,
33496            lpszpassword: *mut i8,
33497            uluiparam: usize,
33498            ulflags: u32,
33499            lppserviceadmin: *mut *mut core::ffi::c_void,
33500        ) -> windows_core::HRESULT {
33501            unsafe {
33502                let this: &Identity =
33503                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33504                IProfAdmin_Impl::AdminServices(
33505                    this,
33506                    core::mem::transmute_copy(&lpszprofilename),
33507                    core::mem::transmute_copy(&lpszpassword),
33508                    core::mem::transmute_copy(&uluiparam),
33509                    core::mem::transmute_copy(&ulflags),
33510                    core::mem::transmute_copy(&lppserviceadmin),
33511                )
33512                .into()
33513            }
33514        }
33515        Self {
33516            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33517            GetLastError: GetLastError::<Identity, OFFSET>,
33518            GetProfileTable: GetProfileTable::<Identity, OFFSET>,
33519            CreateProfile: CreateProfile::<Identity, OFFSET>,
33520            DeleteProfile: DeleteProfile::<Identity, OFFSET>,
33521            ChangeProfilePassword: ChangeProfilePassword::<Identity, OFFSET>,
33522            CopyProfile: CopyProfile::<Identity, OFFSET>,
33523            RenameProfile: RenameProfile::<Identity, OFFSET>,
33524            SetDefaultProfile: SetDefaultProfile::<Identity, OFFSET>,
33525            AdminServices: AdminServices::<Identity, OFFSET>,
33526        }
33527    }
33528    pub fn matches(iid: &windows_core::GUID) -> bool {
33529        iid == &<IProfAdmin as windows_core::Interface>::IID
33530    }
33531}
33532impl windows_core::RuntimeName for IProfAdmin {}
33533windows_core::imp::define_interface!(
33534    IProfSect,
33535    IProfSect_Vtbl,
33536    0x00020304_0000_0000_c000_000000000046
33537);
33538impl core::ops::Deref for IProfSect {
33539    type Target = IMAPIProp;
33540    fn deref(&self) -> &Self::Target {
33541        unsafe { core::mem::transmute(self) }
33542    }
33543}
33544windows_core::imp::interface_hierarchy!(IProfSect, windows_core::IUnknown, IMAPIProp);
33545#[repr(C)]
33546pub struct IProfSect_Vtbl {
33547    pub base__: IMAPIProp_Vtbl,
33548}
33549pub trait IProfSect_Impl: IMAPIProp_Impl {}
33550impl IProfSect_Vtbl {
33551    pub const fn new<Identity: IProfSect_Impl, const OFFSET: isize>() -> Self {
33552        Self {
33553            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
33554        }
33555    }
33556    pub fn matches(iid: &windows_core::GUID) -> bool {
33557        iid == &<IProfSect as windows_core::Interface>::IID
33558            || iid == &<IMAPIProp as windows_core::Interface>::IID
33559    }
33560}
33561impl windows_core::RuntimeName for IProfSect {}
33562windows_core::imp::define_interface!(IPropData, IPropData_Vtbl, 0);
33563impl core::ops::Deref for IPropData {
33564    type Target = IMAPIProp;
33565    fn deref(&self) -> &Self::Target {
33566        unsafe { core::mem::transmute(self) }
33567    }
33568}
33569windows_core::imp::interface_hierarchy!(IPropData, windows_core::IUnknown, IMAPIProp);
33570impl IPropData {
33571    pub unsafe fn HrSetObjAccess(&self, ulaccess: u32) -> windows_core::Result<()> {
33572        unsafe {
33573            (windows_core::Interface::vtable(self).HrSetObjAccess)(
33574                windows_core::Interface::as_raw(self),
33575                ulaccess,
33576            )
33577            .ok()
33578        }
33579    }
33580    pub unsafe fn HrSetPropAccess(
33581        &self,
33582        lpproptagarray: *mut SPropTagArray,
33583        rgulaccess: *mut u32,
33584    ) -> windows_core::Result<()> {
33585        unsafe {
33586            (windows_core::Interface::vtable(self).HrSetPropAccess)(
33587                windows_core::Interface::as_raw(self),
33588                lpproptagarray as _,
33589                rgulaccess as _,
33590            )
33591            .ok()
33592        }
33593    }
33594    pub unsafe fn HrGetPropAccess(
33595        &self,
33596        lppproptagarray: *mut *mut SPropTagArray,
33597        lprgulaccess: *mut *mut u32,
33598    ) -> windows_core::Result<()> {
33599        unsafe {
33600            (windows_core::Interface::vtable(self).HrGetPropAccess)(
33601                windows_core::Interface::as_raw(self),
33602                lppproptagarray as _,
33603                lprgulaccess as _,
33604            )
33605            .ok()
33606        }
33607    }
33608    pub unsafe fn HrAddObjProps(
33609        &self,
33610        lppproptagarray: *mut SPropTagArray,
33611        lprgulaccess: *mut *mut SPropProblemArray,
33612    ) -> windows_core::Result<()> {
33613        unsafe {
33614            (windows_core::Interface::vtable(self).HrAddObjProps)(
33615                windows_core::Interface::as_raw(self),
33616                lppproptagarray as _,
33617                lprgulaccess as _,
33618            )
33619            .ok()
33620        }
33621    }
33622}
33623#[repr(C)]
33624pub struct IPropData_Vtbl {
33625    pub base__: IMAPIProp_Vtbl,
33626    pub HrSetObjAccess:
33627        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
33628    pub HrSetPropAccess: unsafe extern "system" fn(
33629        *mut core::ffi::c_void,
33630        *mut SPropTagArray,
33631        *mut u32,
33632    ) -> windows_core::HRESULT,
33633    pub HrGetPropAccess: unsafe extern "system" fn(
33634        *mut core::ffi::c_void,
33635        *mut *mut SPropTagArray,
33636        *mut *mut u32,
33637    ) -> windows_core::HRESULT,
33638    pub HrAddObjProps: unsafe extern "system" fn(
33639        *mut core::ffi::c_void,
33640        *mut SPropTagArray,
33641        *mut *mut SPropProblemArray,
33642    ) -> windows_core::HRESULT,
33643}
33644pub trait IPropData_Impl: IMAPIProp_Impl {
33645    fn HrSetObjAccess(&self, ulaccess: u32) -> windows_core::Result<()>;
33646    fn HrSetPropAccess(
33647        &self,
33648        lpproptagarray: *mut SPropTagArray,
33649        rgulaccess: *mut u32,
33650    ) -> windows_core::Result<()>;
33651    fn HrGetPropAccess(
33652        &self,
33653        lppproptagarray: *mut *mut SPropTagArray,
33654        lprgulaccess: *mut *mut u32,
33655    ) -> windows_core::Result<()>;
33656    fn HrAddObjProps(
33657        &self,
33658        lppproptagarray: *mut SPropTagArray,
33659        lprgulaccess: *mut *mut SPropProblemArray,
33660    ) -> windows_core::Result<()>;
33661}
33662impl IPropData_Vtbl {
33663    pub const fn new<Identity: IPropData_Impl, const OFFSET: isize>() -> Self {
33664        unsafe extern "system" fn HrSetObjAccess<Identity: IPropData_Impl, const OFFSET: isize>(
33665            this: *mut core::ffi::c_void,
33666            ulaccess: u32,
33667        ) -> windows_core::HRESULT {
33668            unsafe {
33669                let this: &Identity =
33670                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33671                IPropData_Impl::HrSetObjAccess(this, core::mem::transmute_copy(&ulaccess)).into()
33672            }
33673        }
33674        unsafe extern "system" fn HrSetPropAccess<Identity: IPropData_Impl, const OFFSET: isize>(
33675            this: *mut core::ffi::c_void,
33676            lpproptagarray: *mut SPropTagArray,
33677            rgulaccess: *mut u32,
33678        ) -> windows_core::HRESULT {
33679            unsafe {
33680                let this: &Identity =
33681                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33682                IPropData_Impl::HrSetPropAccess(
33683                    this,
33684                    core::mem::transmute_copy(&lpproptagarray),
33685                    core::mem::transmute_copy(&rgulaccess),
33686                )
33687                .into()
33688            }
33689        }
33690        unsafe extern "system" fn HrGetPropAccess<Identity: IPropData_Impl, const OFFSET: isize>(
33691            this: *mut core::ffi::c_void,
33692            lppproptagarray: *mut *mut SPropTagArray,
33693            lprgulaccess: *mut *mut u32,
33694        ) -> windows_core::HRESULT {
33695            unsafe {
33696                let this: &Identity =
33697                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33698                IPropData_Impl::HrGetPropAccess(
33699                    this,
33700                    core::mem::transmute_copy(&lppproptagarray),
33701                    core::mem::transmute_copy(&lprgulaccess),
33702                )
33703                .into()
33704            }
33705        }
33706        unsafe extern "system" fn HrAddObjProps<Identity: IPropData_Impl, const OFFSET: isize>(
33707            this: *mut core::ffi::c_void,
33708            lppproptagarray: *mut SPropTagArray,
33709            lprgulaccess: *mut *mut SPropProblemArray,
33710        ) -> windows_core::HRESULT {
33711            unsafe {
33712                let this: &Identity =
33713                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33714                IPropData_Impl::HrAddObjProps(
33715                    this,
33716                    core::mem::transmute_copy(&lppproptagarray),
33717                    core::mem::transmute_copy(&lprgulaccess),
33718                )
33719                .into()
33720            }
33721        }
33722        Self {
33723            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
33724            HrSetObjAccess: HrSetObjAccess::<Identity, OFFSET>,
33725            HrSetPropAccess: HrSetPropAccess::<Identity, OFFSET>,
33726            HrGetPropAccess: HrGetPropAccess::<Identity, OFFSET>,
33727            HrAddObjProps: HrAddObjProps::<Identity, OFFSET>,
33728        }
33729    }
33730    pub fn matches(iid: &windows_core::GUID) -> bool {
33731        iid == &<IPropData as windows_core::Interface>::IID
33732            || iid == &<IMAPIProp as windows_core::Interface>::IID
33733    }
33734}
33735impl windows_core::RuntimeName for IPropData {}
33736windows_core::imp::define_interface!(
33737    IProviderAdmin,
33738    IProviderAdmin_Vtbl,
33739    0x00020325_0000_0000_c000_000000000046
33740);
33741windows_core::imp::interface_hierarchy!(IProviderAdmin, windows_core::IUnknown);
33742impl IProviderAdmin {
33743    pub unsafe fn GetLastError(
33744        &self,
33745        hresult: windows_core::HRESULT,
33746        ulflags: u32,
33747        lppmapierror: *mut *mut MAPIERROR,
33748    ) -> windows_core::Result<()> {
33749        unsafe {
33750            (windows_core::Interface::vtable(self).GetLastError)(
33751                windows_core::Interface::as_raw(self),
33752                hresult,
33753                ulflags,
33754                lppmapierror as _,
33755            )
33756            .ok()
33757        }
33758    }
33759    pub unsafe fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
33760        unsafe {
33761            let mut result__ = core::mem::zeroed();
33762            (windows_core::Interface::vtable(self).GetProviderTable)(
33763                windows_core::Interface::as_raw(self),
33764                ulflags,
33765                &mut result__,
33766            )
33767            .and_then(|| windows_core::Type::from_abi(result__))
33768        }
33769    }
33770    pub unsafe fn CreateProvider(
33771        &self,
33772        lpszprovider: *mut i8,
33773        cvalues: u32,
33774        lpprops: *mut SPropValue,
33775        uluiparam: usize,
33776        ulflags: u32,
33777        lpuid: *mut MAPIUID,
33778    ) -> windows_core::Result<()> {
33779        unsafe {
33780            (windows_core::Interface::vtable(self).CreateProvider)(
33781                windows_core::Interface::as_raw(self),
33782                lpszprovider as _,
33783                cvalues,
33784                lpprops as _,
33785                uluiparam,
33786                ulflags,
33787                lpuid as _,
33788            )
33789            .ok()
33790        }
33791    }
33792    pub unsafe fn DeleteProvider(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()> {
33793        unsafe {
33794            (windows_core::Interface::vtable(self).DeleteProvider)(
33795                windows_core::Interface::as_raw(self),
33796                lpuid as _,
33797            )
33798            .ok()
33799        }
33800    }
33801    pub unsafe fn OpenProfileSection(
33802        &self,
33803        lpuid: *mut MAPIUID,
33804        lpinterface: *mut windows_core::GUID,
33805        ulflags: u32,
33806        lppprofsect: *mut Option<IProfSect>,
33807    ) -> windows_core::Result<()> {
33808        unsafe {
33809            (windows_core::Interface::vtable(self).OpenProfileSection)(
33810                windows_core::Interface::as_raw(self),
33811                lpuid as _,
33812                lpinterface as _,
33813                ulflags,
33814                core::mem::transmute(lppprofsect),
33815            )
33816            .ok()
33817        }
33818    }
33819}
33820#[repr(C)]
33821pub struct IProviderAdmin_Vtbl {
33822    pub base__: windows_core::IUnknown_Vtbl,
33823    pub GetLastError: unsafe extern "system" fn(
33824        *mut core::ffi::c_void,
33825        windows_core::HRESULT,
33826        u32,
33827        *mut *mut MAPIERROR,
33828    ) -> windows_core::HRESULT,
33829    pub GetProviderTable: unsafe extern "system" fn(
33830        *mut core::ffi::c_void,
33831        u32,
33832        *mut *mut core::ffi::c_void,
33833    ) -> windows_core::HRESULT,
33834    pub CreateProvider: unsafe extern "system" fn(
33835        *mut core::ffi::c_void,
33836        *mut i8,
33837        u32,
33838        *mut SPropValue,
33839        usize,
33840        u32,
33841        *mut MAPIUID,
33842    ) -> windows_core::HRESULT,
33843    pub DeleteProvider:
33844        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
33845    pub OpenProfileSection: unsafe extern "system" fn(
33846        *mut core::ffi::c_void,
33847        *mut MAPIUID,
33848        *mut windows_core::GUID,
33849        u32,
33850        *mut *mut core::ffi::c_void,
33851    ) -> windows_core::HRESULT,
33852}
33853pub trait IProviderAdmin_Impl: windows_core::IUnknownImpl {
33854    fn GetLastError(
33855        &self,
33856        hresult: windows_core::HRESULT,
33857        ulflags: u32,
33858        lppmapierror: *mut *mut MAPIERROR,
33859    ) -> windows_core::Result<()>;
33860    fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
33861    fn CreateProvider(
33862        &self,
33863        lpszprovider: *mut i8,
33864        cvalues: u32,
33865        lpprops: *mut SPropValue,
33866        uluiparam: usize,
33867        ulflags: u32,
33868        lpuid: *mut MAPIUID,
33869    ) -> windows_core::Result<()>;
33870    fn DeleteProvider(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()>;
33871    fn OpenProfileSection(
33872        &self,
33873        lpuid: *mut MAPIUID,
33874        lpinterface: *mut windows_core::GUID,
33875        ulflags: u32,
33876        lppprofsect: windows_core::OutRef<'_, IProfSect>,
33877    ) -> windows_core::Result<()>;
33878}
33879impl IProviderAdmin_Vtbl {
33880    pub const fn new<Identity: IProviderAdmin_Impl, const OFFSET: isize>() -> Self {
33881        unsafe extern "system" fn GetLastError<
33882            Identity: IProviderAdmin_Impl,
33883            const OFFSET: isize,
33884        >(
33885            this: *mut core::ffi::c_void,
33886            hresult: windows_core::HRESULT,
33887            ulflags: u32,
33888            lppmapierror: *mut *mut MAPIERROR,
33889        ) -> windows_core::HRESULT {
33890            unsafe {
33891                let this: &Identity =
33892                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33893                IProviderAdmin_Impl::GetLastError(
33894                    this,
33895                    core::mem::transmute_copy(&hresult),
33896                    core::mem::transmute_copy(&ulflags),
33897                    core::mem::transmute_copy(&lppmapierror),
33898                )
33899                .into()
33900            }
33901        }
33902        unsafe extern "system" fn GetProviderTable<
33903            Identity: IProviderAdmin_Impl,
33904            const OFFSET: isize,
33905        >(
33906            this: *mut core::ffi::c_void,
33907            ulflags: u32,
33908            lpptable: *mut *mut core::ffi::c_void,
33909        ) -> windows_core::HRESULT {
33910            unsafe {
33911                let this: &Identity =
33912                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33913                match IProviderAdmin_Impl::GetProviderTable(
33914                    this,
33915                    core::mem::transmute_copy(&ulflags),
33916                ) {
33917                    Ok(ok__) => {
33918                        lpptable.write(core::mem::transmute(ok__));
33919                        windows_core::HRESULT(0)
33920                    }
33921                    Err(err) => err.into(),
33922                }
33923            }
33924        }
33925        unsafe extern "system" fn CreateProvider<
33926            Identity: IProviderAdmin_Impl,
33927            const OFFSET: isize,
33928        >(
33929            this: *mut core::ffi::c_void,
33930            lpszprovider: *mut i8,
33931            cvalues: u32,
33932            lpprops: *mut SPropValue,
33933            uluiparam: usize,
33934            ulflags: u32,
33935            lpuid: *mut MAPIUID,
33936        ) -> windows_core::HRESULT {
33937            unsafe {
33938                let this: &Identity =
33939                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33940                IProviderAdmin_Impl::CreateProvider(
33941                    this,
33942                    core::mem::transmute_copy(&lpszprovider),
33943                    core::mem::transmute_copy(&cvalues),
33944                    core::mem::transmute_copy(&lpprops),
33945                    core::mem::transmute_copy(&uluiparam),
33946                    core::mem::transmute_copy(&ulflags),
33947                    core::mem::transmute_copy(&lpuid),
33948                )
33949                .into()
33950            }
33951        }
33952        unsafe extern "system" fn DeleteProvider<
33953            Identity: IProviderAdmin_Impl,
33954            const OFFSET: isize,
33955        >(
33956            this: *mut core::ffi::c_void,
33957            lpuid: *mut MAPIUID,
33958        ) -> windows_core::HRESULT {
33959            unsafe {
33960                let this: &Identity =
33961                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33962                IProviderAdmin_Impl::DeleteProvider(this, core::mem::transmute_copy(&lpuid)).into()
33963            }
33964        }
33965        unsafe extern "system" fn OpenProfileSection<
33966            Identity: IProviderAdmin_Impl,
33967            const OFFSET: isize,
33968        >(
33969            this: *mut core::ffi::c_void,
33970            lpuid: *mut MAPIUID,
33971            lpinterface: *mut windows_core::GUID,
33972            ulflags: u32,
33973            lppprofsect: *mut *mut core::ffi::c_void,
33974        ) -> windows_core::HRESULT {
33975            unsafe {
33976                let this: &Identity =
33977                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33978                IProviderAdmin_Impl::OpenProfileSection(
33979                    this,
33980                    core::mem::transmute_copy(&lpuid),
33981                    core::mem::transmute_copy(&lpinterface),
33982                    core::mem::transmute_copy(&ulflags),
33983                    core::mem::transmute_copy(&lppprofsect),
33984                )
33985                .into()
33986            }
33987        }
33988        Self {
33989            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33990            GetLastError: GetLastError::<Identity, OFFSET>,
33991            GetProviderTable: GetProviderTable::<Identity, OFFSET>,
33992            CreateProvider: CreateProvider::<Identity, OFFSET>,
33993            DeleteProvider: DeleteProvider::<Identity, OFFSET>,
33994            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
33995        }
33996    }
33997    pub fn matches(iid: &windows_core::GUID) -> bool {
33998        iid == &<IProviderAdmin as windows_core::Interface>::IID
33999    }
34000}
34001impl windows_core::RuntimeName for IProviderAdmin {}
34002windows_core::imp::define_interface!(
34003    ISpoolerHook,
34004    ISpoolerHook_Vtbl,
34005    0x00020320_0000_0000_c000_000000000046
34006);
34007windows_core::imp::interface_hierarchy!(ISpoolerHook, windows_core::IUnknown);
34008impl ISpoolerHook {
34009    pub unsafe fn InboundMsgHook<P0, P1, P2>(
34010        &self,
34011        lpmessage: P0,
34012        lpfolder: P1,
34013        lpmdb: P2,
34014        lpulflags: *mut u32,
34015        lpcbentryid: *mut u32,
34016        lppentryid: *mut *mut u8,
34017    ) -> windows_core::Result<()>
34018    where
34019        P0: windows_core::Param<IMessage>,
34020        P1: windows_core::Param<IMAPIFolder>,
34021        P2: windows_core::Param<IMsgStore>,
34022    {
34023        unsafe {
34024            (windows_core::Interface::vtable(self).InboundMsgHook)(
34025                windows_core::Interface::as_raw(self),
34026                lpmessage.param().abi(),
34027                lpfolder.param().abi(),
34028                lpmdb.param().abi(),
34029                lpulflags as _,
34030                lpcbentryid as _,
34031                lppentryid as _,
34032            )
34033            .ok()
34034        }
34035    }
34036    pub unsafe fn OutboundMsgHook<P0, P1, P2>(
34037        &self,
34038        lpmessage: P0,
34039        lpfolder: P1,
34040        lpmdb: P2,
34041        lpulflags: *mut u32,
34042        lpcbentryid: *mut u32,
34043        lppentryid: *mut *mut u8,
34044    ) -> windows_core::Result<()>
34045    where
34046        P0: windows_core::Param<IMessage>,
34047        P1: windows_core::Param<IMAPIFolder>,
34048        P2: windows_core::Param<IMsgStore>,
34049    {
34050        unsafe {
34051            (windows_core::Interface::vtable(self).OutboundMsgHook)(
34052                windows_core::Interface::as_raw(self),
34053                lpmessage.param().abi(),
34054                lpfolder.param().abi(),
34055                lpmdb.param().abi(),
34056                lpulflags as _,
34057                lpcbentryid as _,
34058                lppentryid as _,
34059            )
34060            .ok()
34061        }
34062    }
34063}
34064#[repr(C)]
34065pub struct ISpoolerHook_Vtbl {
34066    pub base__: windows_core::IUnknown_Vtbl,
34067    pub InboundMsgHook: unsafe extern "system" fn(
34068        *mut core::ffi::c_void,
34069        *mut core::ffi::c_void,
34070        *mut core::ffi::c_void,
34071        *mut core::ffi::c_void,
34072        *mut u32,
34073        *mut u32,
34074        *mut *mut u8,
34075    ) -> windows_core::HRESULT,
34076    pub OutboundMsgHook: unsafe extern "system" fn(
34077        *mut core::ffi::c_void,
34078        *mut core::ffi::c_void,
34079        *mut core::ffi::c_void,
34080        *mut core::ffi::c_void,
34081        *mut u32,
34082        *mut u32,
34083        *mut *mut u8,
34084    ) -> windows_core::HRESULT,
34085}
34086pub trait ISpoolerHook_Impl: windows_core::IUnknownImpl {
34087    fn InboundMsgHook(
34088        &self,
34089        lpmessage: windows_core::Ref<'_, IMessage>,
34090        lpfolder: windows_core::Ref<'_, IMAPIFolder>,
34091        lpmdb: windows_core::Ref<'_, IMsgStore>,
34092        lpulflags: *mut u32,
34093        lpcbentryid: *mut u32,
34094        lppentryid: *mut *mut u8,
34095    ) -> windows_core::Result<()>;
34096    fn OutboundMsgHook(
34097        &self,
34098        lpmessage: windows_core::Ref<'_, IMessage>,
34099        lpfolder: windows_core::Ref<'_, IMAPIFolder>,
34100        lpmdb: windows_core::Ref<'_, IMsgStore>,
34101        lpulflags: *mut u32,
34102        lpcbentryid: *mut u32,
34103        lppentryid: *mut *mut u8,
34104    ) -> windows_core::Result<()>;
34105}
34106impl ISpoolerHook_Vtbl {
34107    pub const fn new<Identity: ISpoolerHook_Impl, const OFFSET: isize>() -> Self {
34108        unsafe extern "system" fn InboundMsgHook<
34109            Identity: ISpoolerHook_Impl,
34110            const OFFSET: isize,
34111        >(
34112            this: *mut core::ffi::c_void,
34113            lpmessage: *mut core::ffi::c_void,
34114            lpfolder: *mut core::ffi::c_void,
34115            lpmdb: *mut core::ffi::c_void,
34116            lpulflags: *mut u32,
34117            lpcbentryid: *mut u32,
34118            lppentryid: *mut *mut u8,
34119        ) -> windows_core::HRESULT {
34120            unsafe {
34121                let this: &Identity =
34122                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34123                ISpoolerHook_Impl::InboundMsgHook(
34124                    this,
34125                    core::mem::transmute_copy(&lpmessage),
34126                    core::mem::transmute_copy(&lpfolder),
34127                    core::mem::transmute_copy(&lpmdb),
34128                    core::mem::transmute_copy(&lpulflags),
34129                    core::mem::transmute_copy(&lpcbentryid),
34130                    core::mem::transmute_copy(&lppentryid),
34131                )
34132                .into()
34133            }
34134        }
34135        unsafe extern "system" fn OutboundMsgHook<
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::OutboundMsgHook(
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        Self {
34163            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
34164            InboundMsgHook: InboundMsgHook::<Identity, OFFSET>,
34165            OutboundMsgHook: OutboundMsgHook::<Identity, OFFSET>,
34166        }
34167    }
34168    pub fn matches(iid: &windows_core::GUID) -> bool {
34169        iid == &<ISpoolerHook as windows_core::Interface>::IID
34170    }
34171}
34172impl windows_core::RuntimeName for ISpoolerHook {}
34173pub const IStream_Clone: METHODS = METHODS(136i32);
34174pub const IStream_Commit: METHODS = METHODS(131i32);
34175pub const IStream_CopyTo: METHODS = METHODS(130i32);
34176pub const IStream_LockRegion: METHODS = METHODS(133i32);
34177pub const IStream_Revert: METHODS = METHODS(132i32);
34178pub const IStream_Seek: METHODS = METHODS(128i32);
34179pub const IStream_SetSize: METHODS = METHODS(129i32);
34180pub const IStream_Stat: METHODS = METHODS(135i32);
34181pub const IStream_UnlockRegion: METHODS = METHODS(134i32);
34182pub const IStream__Read: METHODS = METHODS(126i32);
34183pub const IStream__Write: METHODS = METHODS(127i32);
34184pub const ITEMPROC_FORCE: u32 = 2048u32;
34185pub const ITT_ENCRYPTION: u32 = 2u32;
34186pub const ITT_SIGNING: u32 = 1u32;
34187windows_core::imp::define_interface!(ITableData, ITableData_Vtbl, 0);
34188windows_core::imp::interface_hierarchy!(ITableData, windows_core::IUnknown);
34189impl ITableData {
34190    pub unsafe fn HrGetView(
34191        &self,
34192        lpssortorderset: *mut SSortOrderSet,
34193        lpfcallerrelease: *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34194        ulcallerdata: usize,
34195        lppmapitable: *mut Option<IMAPITable>,
34196    ) -> windows_core::Result<()> {
34197        unsafe {
34198            (windows_core::Interface::vtable(self).HrGetView)(
34199                windows_core::Interface::as_raw(self),
34200                lpssortorderset as _,
34201                lpfcallerrelease as _,
34202                ulcallerdata,
34203                core::mem::transmute(lppmapitable),
34204            )
34205            .ok()
34206        }
34207    }
34208    pub unsafe fn HrModifyRow(&self, param0: *mut SRow) -> windows_core::Result<()> {
34209        unsafe {
34210            (windows_core::Interface::vtable(self).HrModifyRow)(
34211                windows_core::Interface::as_raw(self),
34212                param0 as _,
34213            )
34214            .ok()
34215        }
34216    }
34217    pub unsafe fn HrDeleteRow(&self, lpspropvalue: *mut SPropValue) -> windows_core::Result<()> {
34218        unsafe {
34219            (windows_core::Interface::vtable(self).HrDeleteRow)(
34220                windows_core::Interface::as_raw(self),
34221                lpspropvalue as _,
34222            )
34223            .ok()
34224        }
34225    }
34226    pub unsafe fn HrQueryRow(
34227        &self,
34228        lpspropvalue: *mut SPropValue,
34229        lppsrow: *mut *mut SRow,
34230        lpulirow: *mut u32,
34231    ) -> windows_core::Result<()> {
34232        unsafe {
34233            (windows_core::Interface::vtable(self).HrQueryRow)(
34234                windows_core::Interface::as_raw(self),
34235                lpspropvalue as _,
34236                lppsrow as _,
34237                lpulirow as _,
34238            )
34239            .ok()
34240        }
34241    }
34242    pub unsafe fn HrEnumRow(
34243        &self,
34244        ulrownumber: u32,
34245        lppsrow: *mut *mut SRow,
34246    ) -> windows_core::Result<()> {
34247        unsafe {
34248            (windows_core::Interface::vtable(self).HrEnumRow)(
34249                windows_core::Interface::as_raw(self),
34250                ulrownumber,
34251                lppsrow as _,
34252            )
34253            .ok()
34254        }
34255    }
34256    pub unsafe fn HrNotify(
34257        &self,
34258        ulflags: u32,
34259        cvalues: u32,
34260        lpspropvalue: *mut SPropValue,
34261    ) -> windows_core::Result<()> {
34262        unsafe {
34263            (windows_core::Interface::vtable(self).HrNotify)(
34264                windows_core::Interface::as_raw(self),
34265                ulflags,
34266                cvalues,
34267                lpspropvalue as _,
34268            )
34269            .ok()
34270        }
34271    }
34272    pub unsafe fn HrInsertRow(&self, ulirow: u32, lpsrow: *mut SRow) -> windows_core::Result<()> {
34273        unsafe {
34274            (windows_core::Interface::vtable(self).HrInsertRow)(
34275                windows_core::Interface::as_raw(self),
34276                ulirow,
34277                lpsrow as _,
34278            )
34279            .ok()
34280        }
34281    }
34282    pub unsafe fn HrModifyRows(
34283        &self,
34284        ulflags: u32,
34285        lpsrowset: *mut SRowSet,
34286    ) -> windows_core::Result<()> {
34287        unsafe {
34288            (windows_core::Interface::vtable(self).HrModifyRows)(
34289                windows_core::Interface::as_raw(self),
34290                ulflags,
34291                lpsrowset as _,
34292            )
34293            .ok()
34294        }
34295    }
34296    pub unsafe fn HrDeleteRows(
34297        &self,
34298        ulflags: u32,
34299        lprowsettodelete: *mut SRowSet,
34300        crowsdeleted: *mut u32,
34301    ) -> windows_core::Result<()> {
34302        unsafe {
34303            (windows_core::Interface::vtable(self).HrDeleteRows)(
34304                windows_core::Interface::as_raw(self),
34305                ulflags,
34306                lprowsettodelete as _,
34307                crowsdeleted as _,
34308            )
34309            .ok()
34310        }
34311    }
34312}
34313#[repr(C)]
34314pub struct ITableData_Vtbl {
34315    pub base__: windows_core::IUnknown_Vtbl,
34316    pub HrGetView: unsafe extern "system" fn(
34317        *mut core::ffi::c_void,
34318        *mut SSortOrderSet,
34319        *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34320        usize,
34321        *mut *mut core::ffi::c_void,
34322    ) -> windows_core::HRESULT,
34323    pub HrModifyRow:
34324        unsafe extern "system" fn(*mut core::ffi::c_void, *mut SRow) -> windows_core::HRESULT,
34325    pub HrDeleteRow:
34326        unsafe extern "system" fn(*mut core::ffi::c_void, *mut SPropValue) -> windows_core::HRESULT,
34327    pub HrQueryRow: unsafe extern "system" fn(
34328        *mut core::ffi::c_void,
34329        *mut SPropValue,
34330        *mut *mut SRow,
34331        *mut u32,
34332    ) -> windows_core::HRESULT,
34333    pub HrEnumRow: unsafe extern "system" fn(
34334        *mut core::ffi::c_void,
34335        u32,
34336        *mut *mut SRow,
34337    ) -> windows_core::HRESULT,
34338    pub HrNotify: unsafe extern "system" fn(
34339        *mut core::ffi::c_void,
34340        u32,
34341        u32,
34342        *mut SPropValue,
34343    ) -> windows_core::HRESULT,
34344    pub HrInsertRow:
34345        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SRow) -> windows_core::HRESULT,
34346    pub HrModifyRows: unsafe extern "system" fn(
34347        *mut core::ffi::c_void,
34348        u32,
34349        *mut SRowSet,
34350    ) -> windows_core::HRESULT,
34351    pub HrDeleteRows: unsafe extern "system" fn(
34352        *mut core::ffi::c_void,
34353        u32,
34354        *mut SRowSet,
34355        *mut u32,
34356    ) -> windows_core::HRESULT,
34357}
34358pub trait ITableData_Impl: windows_core::IUnknownImpl {
34359    fn HrGetView(
34360        &self,
34361        lpssortorderset: *mut SSortOrderSet,
34362        lpfcallerrelease: *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34363        ulcallerdata: usize,
34364        lppmapitable: windows_core::OutRef<'_, IMAPITable>,
34365    ) -> windows_core::Result<()>;
34366    fn HrModifyRow(&self, param0: *mut SRow) -> windows_core::Result<()>;
34367    fn HrDeleteRow(&self, lpspropvalue: *mut SPropValue) -> windows_core::Result<()>;
34368    fn HrQueryRow(
34369        &self,
34370        lpspropvalue: *mut SPropValue,
34371        lppsrow: *mut *mut SRow,
34372        lpulirow: *mut u32,
34373    ) -> windows_core::Result<()>;
34374    fn HrEnumRow(&self, ulrownumber: u32, lppsrow: *mut *mut SRow) -> windows_core::Result<()>;
34375    fn HrNotify(
34376        &self,
34377        ulflags: u32,
34378        cvalues: u32,
34379        lpspropvalue: *mut SPropValue,
34380    ) -> windows_core::Result<()>;
34381    fn HrInsertRow(&self, ulirow: u32, lpsrow: *mut SRow) -> windows_core::Result<()>;
34382    fn HrModifyRows(&self, ulflags: u32, lpsrowset: *mut SRowSet) -> windows_core::Result<()>;
34383    fn HrDeleteRows(
34384        &self,
34385        ulflags: u32,
34386        lprowsettodelete: *mut SRowSet,
34387        crowsdeleted: *mut u32,
34388    ) -> windows_core::Result<()>;
34389}
34390impl ITableData_Vtbl {
34391    pub const fn new<Identity: ITableData_Impl, const OFFSET: isize>() -> Self {
34392        unsafe extern "system" fn HrGetView<Identity: ITableData_Impl, const OFFSET: isize>(
34393            this: *mut core::ffi::c_void,
34394            lpssortorderset: *mut SSortOrderSet,
34395            lpfcallerrelease: *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34396            ulcallerdata: usize,
34397            lppmapitable: *mut *mut core::ffi::c_void,
34398        ) -> windows_core::HRESULT {
34399            unsafe {
34400                let this: &Identity =
34401                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34402                ITableData_Impl::HrGetView(
34403                    this,
34404                    core::mem::transmute_copy(&lpssortorderset),
34405                    core::mem::transmute_copy(&lpfcallerrelease),
34406                    core::mem::transmute_copy(&ulcallerdata),
34407                    core::mem::transmute_copy(&lppmapitable),
34408                )
34409                .into()
34410            }
34411        }
34412        unsafe extern "system" fn HrModifyRow<Identity: ITableData_Impl, const OFFSET: isize>(
34413            this: *mut core::ffi::c_void,
34414            param0: *mut SRow,
34415        ) -> windows_core::HRESULT {
34416            unsafe {
34417                let this: &Identity =
34418                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34419                ITableData_Impl::HrModifyRow(this, core::mem::transmute_copy(&param0)).into()
34420            }
34421        }
34422        unsafe extern "system" fn HrDeleteRow<Identity: ITableData_Impl, const OFFSET: isize>(
34423            this: *mut core::ffi::c_void,
34424            lpspropvalue: *mut SPropValue,
34425        ) -> windows_core::HRESULT {
34426            unsafe {
34427                let this: &Identity =
34428                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34429                ITableData_Impl::HrDeleteRow(this, core::mem::transmute_copy(&lpspropvalue)).into()
34430            }
34431        }
34432        unsafe extern "system" fn HrQueryRow<Identity: ITableData_Impl, const OFFSET: isize>(
34433            this: *mut core::ffi::c_void,
34434            lpspropvalue: *mut SPropValue,
34435            lppsrow: *mut *mut SRow,
34436            lpulirow: *mut u32,
34437        ) -> windows_core::HRESULT {
34438            unsafe {
34439                let this: &Identity =
34440                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34441                ITableData_Impl::HrQueryRow(
34442                    this,
34443                    core::mem::transmute_copy(&lpspropvalue),
34444                    core::mem::transmute_copy(&lppsrow),
34445                    core::mem::transmute_copy(&lpulirow),
34446                )
34447                .into()
34448            }
34449        }
34450        unsafe extern "system" fn HrEnumRow<Identity: ITableData_Impl, const OFFSET: isize>(
34451            this: *mut core::ffi::c_void,
34452            ulrownumber: u32,
34453            lppsrow: *mut *mut SRow,
34454        ) -> windows_core::HRESULT {
34455            unsafe {
34456                let this: &Identity =
34457                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34458                ITableData_Impl::HrEnumRow(
34459                    this,
34460                    core::mem::transmute_copy(&ulrownumber),
34461                    core::mem::transmute_copy(&lppsrow),
34462                )
34463                .into()
34464            }
34465        }
34466        unsafe extern "system" fn HrNotify<Identity: ITableData_Impl, const OFFSET: isize>(
34467            this: *mut core::ffi::c_void,
34468            ulflags: u32,
34469            cvalues: u32,
34470            lpspropvalue: *mut SPropValue,
34471        ) -> windows_core::HRESULT {
34472            unsafe {
34473                let this: &Identity =
34474                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34475                ITableData_Impl::HrNotify(
34476                    this,
34477                    core::mem::transmute_copy(&ulflags),
34478                    core::mem::transmute_copy(&cvalues),
34479                    core::mem::transmute_copy(&lpspropvalue),
34480                )
34481                .into()
34482            }
34483        }
34484        unsafe extern "system" fn HrInsertRow<Identity: ITableData_Impl, const OFFSET: isize>(
34485            this: *mut core::ffi::c_void,
34486            ulirow: u32,
34487            lpsrow: *mut SRow,
34488        ) -> windows_core::HRESULT {
34489            unsafe {
34490                let this: &Identity =
34491                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34492                ITableData_Impl::HrInsertRow(
34493                    this,
34494                    core::mem::transmute_copy(&ulirow),
34495                    core::mem::transmute_copy(&lpsrow),
34496                )
34497                .into()
34498            }
34499        }
34500        unsafe extern "system" fn HrModifyRows<Identity: ITableData_Impl, const OFFSET: isize>(
34501            this: *mut core::ffi::c_void,
34502            ulflags: u32,
34503            lpsrowset: *mut SRowSet,
34504        ) -> windows_core::HRESULT {
34505            unsafe {
34506                let this: &Identity =
34507                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34508                ITableData_Impl::HrModifyRows(
34509                    this,
34510                    core::mem::transmute_copy(&ulflags),
34511                    core::mem::transmute_copy(&lpsrowset),
34512                )
34513                .into()
34514            }
34515        }
34516        unsafe extern "system" fn HrDeleteRows<Identity: ITableData_Impl, const OFFSET: isize>(
34517            this: *mut core::ffi::c_void,
34518            ulflags: u32,
34519            lprowsettodelete: *mut SRowSet,
34520            crowsdeleted: *mut u32,
34521        ) -> windows_core::HRESULT {
34522            unsafe {
34523                let this: &Identity =
34524                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34525                ITableData_Impl::HrDeleteRows(
34526                    this,
34527                    core::mem::transmute_copy(&ulflags),
34528                    core::mem::transmute_copy(&lprowsettodelete),
34529                    core::mem::transmute_copy(&crowsdeleted),
34530                )
34531                .into()
34532            }
34533        }
34534        Self {
34535            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
34536            HrGetView: HrGetView::<Identity, OFFSET>,
34537            HrModifyRow: HrModifyRow::<Identity, OFFSET>,
34538            HrDeleteRow: HrDeleteRow::<Identity, OFFSET>,
34539            HrQueryRow: HrQueryRow::<Identity, OFFSET>,
34540            HrEnumRow: HrEnumRow::<Identity, OFFSET>,
34541            HrNotify: HrNotify::<Identity, OFFSET>,
34542            HrInsertRow: HrInsertRow::<Identity, OFFSET>,
34543            HrModifyRows: HrModifyRows::<Identity, OFFSET>,
34544            HrDeleteRows: HrDeleteRows::<Identity, OFFSET>,
34545        }
34546    }
34547    pub fn matches(iid: &windows_core::GUID) -> bool {
34548        iid == &<ITableData as windows_core::Interface>::IID
34549    }
34550}
34551impl windows_core::RuntimeName for ITableData {}
34552pub const IUnknown_AddRef: METHODS = METHODS(1i32);
34553pub const IUnknown_QueryInterface: METHODS = METHODS(0i32);
34554pub const IUnknown_Release: METHODS = METHODS(2i32);
34555windows_core::imp::define_interface!(
34556    IXPLogon,
34557    IXPLogon_Vtbl,
34558    0x00020315_0000_0000_c000_000000000046
34559);
34560windows_core::imp::interface_hierarchy!(IXPLogon, windows_core::IUnknown);
34561impl IXPLogon {
34562    pub unsafe fn AddressTypes(
34563        &self,
34564        lpulflags: *mut u32,
34565        lpcadrtype: *mut u32,
34566        lpppadrtypearray: *mut *mut *mut i8,
34567        lpcmapiuid: *mut u32,
34568        lpppuidarray: *mut *mut *mut MAPIUID,
34569    ) -> windows_core::Result<()> {
34570        unsafe {
34571            (windows_core::Interface::vtable(self).AddressTypes)(
34572                windows_core::Interface::as_raw(self),
34573                lpulflags as _,
34574                lpcadrtype as _,
34575                lpppadrtypearray as _,
34576                lpcmapiuid as _,
34577                lpppuidarray as _,
34578            )
34579            .ok()
34580        }
34581    }
34582    pub unsafe fn RegisterOptions(
34583        &self,
34584        lpulflags: *mut u32,
34585        lpcoptions: *mut u32,
34586        lppoptions: *mut *mut OPTIONDATA,
34587    ) -> windows_core::Result<()> {
34588        unsafe {
34589            (windows_core::Interface::vtable(self).RegisterOptions)(
34590                windows_core::Interface::as_raw(self),
34591                lpulflags as _,
34592                lpcoptions as _,
34593                lppoptions as _,
34594            )
34595            .ok()
34596        }
34597    }
34598    pub unsafe fn TransportNotify(
34599        &self,
34600        lpulflags: *mut u32,
34601        lppvdata: *mut *mut core::ffi::c_void,
34602    ) -> windows_core::Result<()> {
34603        unsafe {
34604            (windows_core::Interface::vtable(self).TransportNotify)(
34605                windows_core::Interface::as_raw(self),
34606                lpulflags as _,
34607                lppvdata as _,
34608            )
34609            .ok()
34610        }
34611    }
34612    pub unsafe fn Idle(&self, ulflags: u32) -> windows_core::Result<()> {
34613        unsafe {
34614            (windows_core::Interface::vtable(self).Idle)(
34615                windows_core::Interface::as_raw(self),
34616                ulflags,
34617            )
34618            .ok()
34619        }
34620    }
34621    pub unsafe fn TransportLogoff(&self, ulflags: u32) -> windows_core::Result<()> {
34622        unsafe {
34623            (windows_core::Interface::vtable(self).TransportLogoff)(
34624                windows_core::Interface::as_raw(self),
34625                ulflags,
34626            )
34627            .ok()
34628        }
34629    }
34630    pub unsafe fn SubmitMessage<P1>(
34631        &self,
34632        ulflags: u32,
34633        lpmessage: P1,
34634        lpulmsgref: *mut usize,
34635        lpulreturnparm: *mut usize,
34636    ) -> windows_core::Result<()>
34637    where
34638        P1: windows_core::Param<IMessage>,
34639    {
34640        unsafe {
34641            (windows_core::Interface::vtable(self).SubmitMessage)(
34642                windows_core::Interface::as_raw(self),
34643                ulflags,
34644                lpmessage.param().abi(),
34645                lpulmsgref as _,
34646                lpulreturnparm as _,
34647            )
34648            .ok()
34649        }
34650    }
34651    pub unsafe fn EndMessage(
34652        &self,
34653        ulmsgref: usize,
34654        lpulflags: *mut u32,
34655    ) -> windows_core::Result<()> {
34656        unsafe {
34657            (windows_core::Interface::vtable(self).EndMessage)(
34658                windows_core::Interface::as_raw(self),
34659                ulmsgref,
34660                lpulflags as _,
34661            )
34662            .ok()
34663        }
34664    }
34665    pub unsafe fn Poll(&self, lpulincoming: *mut u32) -> windows_core::Result<()> {
34666        unsafe {
34667            (windows_core::Interface::vtable(self).Poll)(
34668                windows_core::Interface::as_raw(self),
34669                lpulincoming as _,
34670            )
34671            .ok()
34672        }
34673    }
34674    pub unsafe fn StartMessage<P1>(
34675        &self,
34676        ulflags: u32,
34677        lpmessage: P1,
34678        lpulmsgref: *mut usize,
34679    ) -> windows_core::Result<()>
34680    where
34681        P1: windows_core::Param<IMessage>,
34682    {
34683        unsafe {
34684            (windows_core::Interface::vtable(self).StartMessage)(
34685                windows_core::Interface::as_raw(self),
34686                ulflags,
34687                lpmessage.param().abi(),
34688                lpulmsgref as _,
34689            )
34690            .ok()
34691        }
34692    }
34693    pub unsafe fn OpenStatusEntry(
34694        &self,
34695        lpinterface: *mut windows_core::GUID,
34696        ulflags: u32,
34697        lpulobjtype: *mut u32,
34698        lppentry: *mut Option<IMAPIStatus>,
34699    ) -> windows_core::Result<()> {
34700        unsafe {
34701            (windows_core::Interface::vtable(self).OpenStatusEntry)(
34702                windows_core::Interface::as_raw(self),
34703                lpinterface as _,
34704                ulflags,
34705                lpulobjtype as _,
34706                core::mem::transmute(lppentry),
34707            )
34708            .ok()
34709        }
34710    }
34711    pub unsafe fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()> {
34712        unsafe {
34713            (windows_core::Interface::vtable(self).ValidateState)(
34714                windows_core::Interface::as_raw(self),
34715                uluiparam,
34716                ulflags,
34717            )
34718            .ok()
34719        }
34720    }
34721    pub unsafe fn FlushQueues(
34722        &self,
34723        uluiparam: usize,
34724        cbtargettransport: u32,
34725        lptargettransport: *mut ENTRYID,
34726        ulflags: u32,
34727    ) -> windows_core::Result<()> {
34728        unsafe {
34729            (windows_core::Interface::vtable(self).FlushQueues)(
34730                windows_core::Interface::as_raw(self),
34731                uluiparam,
34732                cbtargettransport,
34733                lptargettransport as _,
34734                ulflags,
34735            )
34736            .ok()
34737        }
34738    }
34739}
34740#[repr(C)]
34741pub struct IXPLogon_Vtbl {
34742    pub base__: windows_core::IUnknown_Vtbl,
34743    pub AddressTypes: unsafe extern "system" fn(
34744        *mut core::ffi::c_void,
34745        *mut u32,
34746        *mut u32,
34747        *mut *mut *mut i8,
34748        *mut u32,
34749        *mut *mut *mut MAPIUID,
34750    ) -> windows_core::HRESULT,
34751    pub RegisterOptions: unsafe extern "system" fn(
34752        *mut core::ffi::c_void,
34753        *mut u32,
34754        *mut u32,
34755        *mut *mut OPTIONDATA,
34756    ) -> windows_core::HRESULT,
34757    pub TransportNotify: unsafe extern "system" fn(
34758        *mut core::ffi::c_void,
34759        *mut u32,
34760        *mut *mut core::ffi::c_void,
34761    ) -> windows_core::HRESULT,
34762    pub Idle: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
34763    pub TransportLogoff:
34764        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
34765    pub SubmitMessage: unsafe extern "system" fn(
34766        *mut core::ffi::c_void,
34767        u32,
34768        *mut core::ffi::c_void,
34769        *mut usize,
34770        *mut usize,
34771    ) -> windows_core::HRESULT,
34772    pub EndMessage:
34773        unsafe extern "system" fn(*mut core::ffi::c_void, usize, *mut u32) -> windows_core::HRESULT,
34774    pub Poll: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
34775    pub StartMessage: unsafe extern "system" fn(
34776        *mut core::ffi::c_void,
34777        u32,
34778        *mut core::ffi::c_void,
34779        *mut usize,
34780    ) -> windows_core::HRESULT,
34781    pub OpenStatusEntry: unsafe extern "system" fn(
34782        *mut core::ffi::c_void,
34783        *mut windows_core::GUID,
34784        u32,
34785        *mut u32,
34786        *mut *mut core::ffi::c_void,
34787    ) -> windows_core::HRESULT,
34788    pub ValidateState:
34789        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32) -> windows_core::HRESULT,
34790    pub FlushQueues: unsafe extern "system" fn(
34791        *mut core::ffi::c_void,
34792        usize,
34793        u32,
34794        *mut ENTRYID,
34795        u32,
34796    ) -> windows_core::HRESULT,
34797}
34798pub trait IXPLogon_Impl: windows_core::IUnknownImpl {
34799    fn AddressTypes(
34800        &self,
34801        lpulflags: *mut u32,
34802        lpcadrtype: *mut u32,
34803        lpppadrtypearray: *mut *mut *mut i8,
34804        lpcmapiuid: *mut u32,
34805        lpppuidarray: *mut *mut *mut MAPIUID,
34806    ) -> windows_core::Result<()>;
34807    fn RegisterOptions(
34808        &self,
34809        lpulflags: *mut u32,
34810        lpcoptions: *mut u32,
34811        lppoptions: *mut *mut OPTIONDATA,
34812    ) -> windows_core::Result<()>;
34813    fn TransportNotify(
34814        &self,
34815        lpulflags: *mut u32,
34816        lppvdata: *mut *mut core::ffi::c_void,
34817    ) -> windows_core::Result<()>;
34818    fn Idle(&self, ulflags: u32) -> windows_core::Result<()>;
34819    fn TransportLogoff(&self, ulflags: u32) -> windows_core::Result<()>;
34820    fn SubmitMessage(
34821        &self,
34822        ulflags: u32,
34823        lpmessage: windows_core::Ref<'_, IMessage>,
34824        lpulmsgref: *mut usize,
34825        lpulreturnparm: *mut usize,
34826    ) -> windows_core::Result<()>;
34827    fn EndMessage(&self, ulmsgref: usize, lpulflags: *mut u32) -> windows_core::Result<()>;
34828    fn Poll(&self, lpulincoming: *mut u32) -> windows_core::Result<()>;
34829    fn StartMessage(
34830        &self,
34831        ulflags: u32,
34832        lpmessage: windows_core::Ref<'_, IMessage>,
34833        lpulmsgref: *mut usize,
34834    ) -> windows_core::Result<()>;
34835    fn OpenStatusEntry(
34836        &self,
34837        lpinterface: *mut windows_core::GUID,
34838        ulflags: u32,
34839        lpulobjtype: *mut u32,
34840        lppentry: windows_core::OutRef<'_, IMAPIStatus>,
34841    ) -> windows_core::Result<()>;
34842    fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()>;
34843    fn FlushQueues(
34844        &self,
34845        uluiparam: usize,
34846        cbtargettransport: u32,
34847        lptargettransport: *mut ENTRYID,
34848        ulflags: u32,
34849    ) -> windows_core::Result<()>;
34850}
34851impl IXPLogon_Vtbl {
34852    pub const fn new<Identity: IXPLogon_Impl, const OFFSET: isize>() -> Self {
34853        unsafe extern "system" fn AddressTypes<Identity: IXPLogon_Impl, const OFFSET: isize>(
34854            this: *mut core::ffi::c_void,
34855            lpulflags: *mut u32,
34856            lpcadrtype: *mut u32,
34857            lpppadrtypearray: *mut *mut *mut i8,
34858            lpcmapiuid: *mut u32,
34859            lpppuidarray: *mut *mut *mut MAPIUID,
34860        ) -> windows_core::HRESULT {
34861            unsafe {
34862                let this: &Identity =
34863                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34864                IXPLogon_Impl::AddressTypes(
34865                    this,
34866                    core::mem::transmute_copy(&lpulflags),
34867                    core::mem::transmute_copy(&lpcadrtype),
34868                    core::mem::transmute_copy(&lpppadrtypearray),
34869                    core::mem::transmute_copy(&lpcmapiuid),
34870                    core::mem::transmute_copy(&lpppuidarray),
34871                )
34872                .into()
34873            }
34874        }
34875        unsafe extern "system" fn RegisterOptions<Identity: IXPLogon_Impl, const OFFSET: isize>(
34876            this: *mut core::ffi::c_void,
34877            lpulflags: *mut u32,
34878            lpcoptions: *mut u32,
34879            lppoptions: *mut *mut OPTIONDATA,
34880        ) -> windows_core::HRESULT {
34881            unsafe {
34882                let this: &Identity =
34883                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34884                IXPLogon_Impl::RegisterOptions(
34885                    this,
34886                    core::mem::transmute_copy(&lpulflags),
34887                    core::mem::transmute_copy(&lpcoptions),
34888                    core::mem::transmute_copy(&lppoptions),
34889                )
34890                .into()
34891            }
34892        }
34893        unsafe extern "system" fn TransportNotify<Identity: IXPLogon_Impl, const OFFSET: isize>(
34894            this: *mut core::ffi::c_void,
34895            lpulflags: *mut u32,
34896            lppvdata: *mut *mut core::ffi::c_void,
34897        ) -> windows_core::HRESULT {
34898            unsafe {
34899                let this: &Identity =
34900                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34901                IXPLogon_Impl::TransportNotify(
34902                    this,
34903                    core::mem::transmute_copy(&lpulflags),
34904                    core::mem::transmute_copy(&lppvdata),
34905                )
34906                .into()
34907            }
34908        }
34909        unsafe extern "system" fn Idle<Identity: IXPLogon_Impl, const OFFSET: isize>(
34910            this: *mut core::ffi::c_void,
34911            ulflags: u32,
34912        ) -> windows_core::HRESULT {
34913            unsafe {
34914                let this: &Identity =
34915                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34916                IXPLogon_Impl::Idle(this, core::mem::transmute_copy(&ulflags)).into()
34917            }
34918        }
34919        unsafe extern "system" fn TransportLogoff<Identity: IXPLogon_Impl, const OFFSET: isize>(
34920            this: *mut core::ffi::c_void,
34921            ulflags: u32,
34922        ) -> windows_core::HRESULT {
34923            unsafe {
34924                let this: &Identity =
34925                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34926                IXPLogon_Impl::TransportLogoff(this, core::mem::transmute_copy(&ulflags)).into()
34927            }
34928        }
34929        unsafe extern "system" fn SubmitMessage<Identity: IXPLogon_Impl, const OFFSET: isize>(
34930            this: *mut core::ffi::c_void,
34931            ulflags: u32,
34932            lpmessage: *mut core::ffi::c_void,
34933            lpulmsgref: *mut usize,
34934            lpulreturnparm: *mut usize,
34935        ) -> windows_core::HRESULT {
34936            unsafe {
34937                let this: &Identity =
34938                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34939                IXPLogon_Impl::SubmitMessage(
34940                    this,
34941                    core::mem::transmute_copy(&ulflags),
34942                    core::mem::transmute_copy(&lpmessage),
34943                    core::mem::transmute_copy(&lpulmsgref),
34944                    core::mem::transmute_copy(&lpulreturnparm),
34945                )
34946                .into()
34947            }
34948        }
34949        unsafe extern "system" fn EndMessage<Identity: IXPLogon_Impl, const OFFSET: isize>(
34950            this: *mut core::ffi::c_void,
34951            ulmsgref: usize,
34952            lpulflags: *mut u32,
34953        ) -> windows_core::HRESULT {
34954            unsafe {
34955                let this: &Identity =
34956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34957                IXPLogon_Impl::EndMessage(
34958                    this,
34959                    core::mem::transmute_copy(&ulmsgref),
34960                    core::mem::transmute_copy(&lpulflags),
34961                )
34962                .into()
34963            }
34964        }
34965        unsafe extern "system" fn Poll<Identity: IXPLogon_Impl, const OFFSET: isize>(
34966            this: *mut core::ffi::c_void,
34967            lpulincoming: *mut u32,
34968        ) -> windows_core::HRESULT {
34969            unsafe {
34970                let this: &Identity =
34971                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34972                IXPLogon_Impl::Poll(this, core::mem::transmute_copy(&lpulincoming)).into()
34973            }
34974        }
34975        unsafe extern "system" fn StartMessage<Identity: IXPLogon_Impl, const OFFSET: isize>(
34976            this: *mut core::ffi::c_void,
34977            ulflags: u32,
34978            lpmessage: *mut core::ffi::c_void,
34979            lpulmsgref: *mut usize,
34980        ) -> windows_core::HRESULT {
34981            unsafe {
34982                let this: &Identity =
34983                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34984                IXPLogon_Impl::StartMessage(
34985                    this,
34986                    core::mem::transmute_copy(&ulflags),
34987                    core::mem::transmute_copy(&lpmessage),
34988                    core::mem::transmute_copy(&lpulmsgref),
34989                )
34990                .into()
34991            }
34992        }
34993        unsafe extern "system" fn OpenStatusEntry<Identity: IXPLogon_Impl, const OFFSET: isize>(
34994            this: *mut core::ffi::c_void,
34995            lpinterface: *mut windows_core::GUID,
34996            ulflags: u32,
34997            lpulobjtype: *mut u32,
34998            lppentry: *mut *mut core::ffi::c_void,
34999        ) -> windows_core::HRESULT {
35000            unsafe {
35001                let this: &Identity =
35002                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35003                IXPLogon_Impl::OpenStatusEntry(
35004                    this,
35005                    core::mem::transmute_copy(&lpinterface),
35006                    core::mem::transmute_copy(&ulflags),
35007                    core::mem::transmute_copy(&lpulobjtype),
35008                    core::mem::transmute_copy(&lppentry),
35009                )
35010                .into()
35011            }
35012        }
35013        unsafe extern "system" fn ValidateState<Identity: IXPLogon_Impl, const OFFSET: isize>(
35014            this: *mut core::ffi::c_void,
35015            uluiparam: usize,
35016            ulflags: u32,
35017        ) -> windows_core::HRESULT {
35018            unsafe {
35019                let this: &Identity =
35020                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35021                IXPLogon_Impl::ValidateState(
35022                    this,
35023                    core::mem::transmute_copy(&uluiparam),
35024                    core::mem::transmute_copy(&ulflags),
35025                )
35026                .into()
35027            }
35028        }
35029        unsafe extern "system" fn FlushQueues<Identity: IXPLogon_Impl, const OFFSET: isize>(
35030            this: *mut core::ffi::c_void,
35031            uluiparam: usize,
35032            cbtargettransport: u32,
35033            lptargettransport: *mut ENTRYID,
35034            ulflags: u32,
35035        ) -> windows_core::HRESULT {
35036            unsafe {
35037                let this: &Identity =
35038                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35039                IXPLogon_Impl::FlushQueues(
35040                    this,
35041                    core::mem::transmute_copy(&uluiparam),
35042                    core::mem::transmute_copy(&cbtargettransport),
35043                    core::mem::transmute_copy(&lptargettransport),
35044                    core::mem::transmute_copy(&ulflags),
35045                )
35046                .into()
35047            }
35048        }
35049        Self {
35050            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35051            AddressTypes: AddressTypes::<Identity, OFFSET>,
35052            RegisterOptions: RegisterOptions::<Identity, OFFSET>,
35053            TransportNotify: TransportNotify::<Identity, OFFSET>,
35054            Idle: Idle::<Identity, OFFSET>,
35055            TransportLogoff: TransportLogoff::<Identity, OFFSET>,
35056            SubmitMessage: SubmitMessage::<Identity, OFFSET>,
35057            EndMessage: EndMessage::<Identity, OFFSET>,
35058            Poll: Poll::<Identity, OFFSET>,
35059            StartMessage: StartMessage::<Identity, OFFSET>,
35060            OpenStatusEntry: OpenStatusEntry::<Identity, OFFSET>,
35061            ValidateState: ValidateState::<Identity, OFFSET>,
35062            FlushQueues: FlushQueues::<Identity, OFFSET>,
35063        }
35064    }
35065    pub fn matches(iid: &windows_core::GUID) -> bool {
35066        iid == &<IXPLogon as windows_core::Interface>::IID
35067    }
35068}
35069impl windows_core::RuntimeName for IXPLogon {}
35070pub const IXPLogon_AddressTypes: METHODS = METHODS(96i32);
35071pub const IXPLogon_EndMessage: METHODS = METHODS(102i32);
35072pub const IXPLogon_FlushQueues: METHODS = METHODS(107i32);
35073pub const IXPLogon_Idle: METHODS = METHODS(99i32);
35074pub const IXPLogon_OpenStatusEntry: METHODS = METHODS(105i32);
35075pub const IXPLogon_Poll: METHODS = METHODS(103i32);
35076pub const IXPLogon_RegisterOptions: METHODS = METHODS(97i32);
35077pub const IXPLogon_StartMessage: METHODS = METHODS(104i32);
35078pub const IXPLogon_SubmitMessage: METHODS = METHODS(101i32);
35079pub const IXPLogon_TransportLogoff: METHODS = METHODS(100i32);
35080pub const IXPLogon_TransportNotify: METHODS = METHODS(98i32);
35081pub const IXPLogon_ValidateState: METHODS = METHODS(106i32);
35082windows_core::imp::define_interface!(
35083    IXPProvider,
35084    IXPProvider_Vtbl,
35085    0x00020312_0000_0000_c000_000000000046
35086);
35087windows_core::imp::interface_hierarchy!(IXPProvider, windows_core::IUnknown);
35088impl IXPProvider {
35089    pub unsafe fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
35090        unsafe {
35091            (windows_core::Interface::vtable(self).Shutdown)(
35092                windows_core::Interface::as_raw(self),
35093                lpulflags as _,
35094            )
35095            .ok()
35096        }
35097    }
35098    pub unsafe fn TransportLogon<P0>(
35099        &self,
35100        lpmapisup: P0,
35101        uluiparam: usize,
35102        lpszprofilename: *const i8,
35103        lpulflags: *mut u32,
35104        lppmapierror: *mut *mut MAPIERROR,
35105        lppxplogon: *mut Option<IXPLogon>,
35106    ) -> windows_core::Result<()>
35107    where
35108        P0: windows_core::Param<IMAPISupport>,
35109    {
35110        unsafe {
35111            (windows_core::Interface::vtable(self).TransportLogon)(
35112                windows_core::Interface::as_raw(self),
35113                lpmapisup.param().abi(),
35114                uluiparam,
35115                lpszprofilename,
35116                lpulflags as _,
35117                lppmapierror as _,
35118                core::mem::transmute(lppxplogon),
35119            )
35120            .ok()
35121        }
35122    }
35123}
35124#[repr(C)]
35125pub struct IXPProvider_Vtbl {
35126    pub base__: windows_core::IUnknown_Vtbl,
35127    pub Shutdown:
35128        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
35129    pub TransportLogon: unsafe extern "system" fn(
35130        *mut core::ffi::c_void,
35131        *mut core::ffi::c_void,
35132        usize,
35133        *const i8,
35134        *mut u32,
35135        *mut *mut MAPIERROR,
35136        *mut *mut core::ffi::c_void,
35137    ) -> windows_core::HRESULT,
35138}
35139pub trait IXPProvider_Impl: windows_core::IUnknownImpl {
35140    fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
35141    fn TransportLogon(
35142        &self,
35143        lpmapisup: windows_core::Ref<'_, IMAPISupport>,
35144        uluiparam: usize,
35145        lpszprofilename: *const i8,
35146        lpulflags: *mut u32,
35147        lppmapierror: *mut *mut MAPIERROR,
35148        lppxplogon: windows_core::OutRef<'_, IXPLogon>,
35149    ) -> windows_core::Result<()>;
35150}
35151impl IXPProvider_Vtbl {
35152    pub const fn new<Identity: IXPProvider_Impl, const OFFSET: isize>() -> Self {
35153        unsafe extern "system" fn Shutdown<Identity: IXPProvider_Impl, const OFFSET: isize>(
35154            this: *mut core::ffi::c_void,
35155            lpulflags: *mut u32,
35156        ) -> windows_core::HRESULT {
35157            unsafe {
35158                let this: &Identity =
35159                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35160                IXPProvider_Impl::Shutdown(this, core::mem::transmute_copy(&lpulflags)).into()
35161            }
35162        }
35163        unsafe extern "system" fn TransportLogon<
35164            Identity: IXPProvider_Impl,
35165            const OFFSET: isize,
35166        >(
35167            this: *mut core::ffi::c_void,
35168            lpmapisup: *mut core::ffi::c_void,
35169            uluiparam: usize,
35170            lpszprofilename: *const i8,
35171            lpulflags: *mut u32,
35172            lppmapierror: *mut *mut MAPIERROR,
35173            lppxplogon: *mut *mut core::ffi::c_void,
35174        ) -> windows_core::HRESULT {
35175            unsafe {
35176                let this: &Identity =
35177                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35178                IXPProvider_Impl::TransportLogon(
35179                    this,
35180                    core::mem::transmute_copy(&lpmapisup),
35181                    core::mem::transmute_copy(&uluiparam),
35182                    core::mem::transmute_copy(&lpszprofilename),
35183                    core::mem::transmute_copy(&lpulflags),
35184                    core::mem::transmute_copy(&lppmapierror),
35185                    core::mem::transmute_copy(&lppxplogon),
35186                )
35187                .into()
35188            }
35189        }
35190        Self {
35191            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35192            Shutdown: Shutdown::<Identity, OFFSET>,
35193            TransportLogon: TransportLogon::<Identity, OFFSET>,
35194        }
35195    }
35196    pub fn matches(iid: &windows_core::GUID) -> bool {
35197        iid == &<IXPProvider as windows_core::Interface>::IID
35198    }
35199}
35200impl windows_core::RuntimeName for IXPProvider {}
35201pub const IXPProvider_Shutdown: METHODS = METHODS(94i32);
35202pub const IXPProvider_TransportLogon: METHODS = METHODS(95i32);
35203pub const KEEP_OPEN_READONLY: u32 = 1u32;
35204pub const KEEP_OPEN_READWRITE: u32 = 2u32;
35205pub type LAUNCHWIZARDENTRY = Option<
35206    unsafe extern "system" fn(
35207        hparentwnd: windows::Win32::Foundation::HWND,
35208        ulflags: u32,
35209        lppszservicenametoadd: *mut *mut i8,
35210        cbbuffermax: u32,
35211        lpsznewprofilename: *mut i8,
35212    ) -> windows_core::HRESULT,
35213>;
35214pub const LAUNCHWIZARDENTRYNAME: windows_core::PCSTR = windows_core::s!("LAUNCHWIZARD");
35215pub const LIBID_MIMEOLE: windows_core::GUID =
35216    windows_core::GUID::from_u128(0xe4b28371_83b0_11d0_8259_00c04fd85ab4);
35217pub const LOCK_BLOCKING_MID_LOCK: u32 = 2u32;
35218pub const LOCK_NON_PERSISTENT: u32 = 1u32;
35219pub const LOCK_NULL_RESOURCE: u32 = 4u32;
35220pub const LOCK_READ_ACCESS_CHECK_ONLY: u32 = 8u32;
35221pub const LOCK_RESERVED: u32 = 2147483648u32;
35222pub const LOCK_WRITE_THROUGH_GOP: u32 = 65536u32;
35223pub const LOGOFF_ABORT: u32 = 8u32;
35224pub const LOGOFF_COMPLETE: u32 = 65536u32;
35225pub const LOGOFF_HURRY: u32 = 2147483648u32;
35226pub const LOGOFF_INBOUND: u32 = 131072u32;
35227pub const LOGOFF_NORMAL: u32 = 1u32;
35228pub const LOGOFF_NO_WAIT: u32 = 1u32;
35229pub const LOGOFF_ORDERLY: u32 = 2u32;
35230pub const LOGOFF_OUTBOUND: u32 = 262144u32;
35231pub const LOGOFF_OUTBOUND_QUEUE: u32 = 524288u32;
35232pub const LOGOFF_PURGE: u32 = 4u32;
35233pub const LOGOFF_QUIET: u32 = 16u32;
35234pub const LOGON_CHANGED: u32 = 8u32;
35235pub const LOGON_NO_CONNECT: u32 = 4u32;
35236pub const LOGON_NO_DIALOG: u32 = 1u32;
35237pub const LOGON_NO_INBOUND: u32 = 8u32;
35238pub const LOGON_NO_OUTBOUND: u32 = 16u32;
35239pub const LOGON_SP_IDLE: u32 = 65536u32;
35240pub const LOGON_SP_NEWPW: u32 = 4u32;
35241pub const LOGON_SP_POLL: u32 = 131072u32;
35242pub const LOGON_SP_PROMPT: u32 = 2u32;
35243pub const LOGON_SP_RESOLVE: u32 = 262144u32;
35244pub const LOGON_SP_TRANSPORT: u32 = 1u32;
35245pub type LPALLOCATEBUFFER =
35246    Option<unsafe extern "system" fn(cbsize: u32, lppbuffer: *mut *mut core::ffi::c_void) -> i32>;
35247pub type LPALLOCATEMORE = Option<
35248    unsafe extern "system" fn(
35249        cbsize: u32,
35250        lpobject: *mut core::ffi::c_void,
35251        lppbuffer: *mut *mut core::ffi::c_void,
35252    ) -> i32,
35253>;
35254pub type LPCREATECONVERSATIONINDEX = Option<
35255    unsafe extern "system" fn(
35256        cbparent: u32,
35257        lpbparent: *mut u8,
35258        lpcbconvindex: *mut u32,
35259        lppbconvindex: *mut *mut u8,
35260    ) -> i32,
35261>;
35262pub type LPDISPATCHNOTIFICATIONS =
35263    Option<unsafe extern "system" fn(ulflags: u32) -> windows_core::HRESULT>;
35264pub type LPFGETCOMPONENTPATH = Option<unsafe extern "system" fn() -> windows_core::BOOL>;
35265pub type LPFNABSDI = Option<
35266    unsafe extern "system" fn(
35267        uluiparam: usize,
35268        lpvmsg: *mut core::ffi::c_void,
35269    ) -> windows_core::BOOL,
35270>;
35271pub type LPFNBUTTON = Option<
35272    unsafe extern "system" fn(
35273        uluiparam: usize,
35274        lpvcontext: *mut core::ffi::c_void,
35275        cbentryid: u32,
35276        lpselection: *mut ENTRYID,
35277        ulflags: u32,
35278    ) -> i32,
35279>;
35280pub type LPFNDISMISS =
35281    Option<unsafe extern "system" fn(uluiparam: usize, lpvcontext: *mut core::ffi::c_void)>;
35282pub type LPFREEBUFFER = Option<unsafe extern "system" fn(lpbuffer: *mut core::ffi::c_void) -> u32>;
35283pub type LPLAUNCHWIZARDENTRY = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35284pub type LPMAPIADDRESS = Option<
35285    unsafe extern "system" fn(
35286        lhsession: usize,
35287        uluiparam: usize,
35288        lpszcaption: windows_core::PCSTR,
35289        neditfields: u32,
35290        lpszlabels: windows_core::PCSTR,
35291        nrecips: u32,
35292        lprecips: *mut MapiRecipDesc,
35293        flflags: u32,
35294        ulreserved: u32,
35295        lpnnewrecips: *mut u32,
35296        lppnewrecips: *mut *mut MapiRecipDesc,
35297    ) -> u32,
35298>;
35299pub type LPMAPIADMINPROFILES = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35300pub type LPMAPIALLOCATEBUFFER = Option<unsafe extern "system" fn() -> i32>;
35301pub type LPMAPIALLOCATEMORE = Option<unsafe extern "system" fn() -> i32>;
35302pub type LPMAPIDELETEMAIL = Option<
35303    unsafe extern "system" fn(
35304        lhsession: usize,
35305        uluiparam: usize,
35306        lpszmessageid: windows_core::PCSTR,
35307        flflags: u32,
35308        ulreserved: u32,
35309    ) -> u32,
35310>;
35311pub type LPMAPIDETAILS = Option<
35312    unsafe extern "system" fn(
35313        lhsession: usize,
35314        uluiparam: usize,
35315        lprecip: *mut MapiRecipDesc,
35316        flflags: u32,
35317        ulreserved: u32,
35318    ) -> u32,
35319>;
35320pub type LPMAPIFINDNEXT = Option<
35321    unsafe extern "system" fn(
35322        lhsession: usize,
35323        uluiparam: usize,
35324        lpszmessagetype: windows_core::PCSTR,
35325        lpszseedmessageid: windows_core::PCSTR,
35326        flflags: u32,
35327        ulreserved: u32,
35328        lpszmessageid: windows_core::PCSTR,
35329    ) -> u32,
35330>;
35331pub type LPMAPIFREEBUFFER = Option<unsafe extern "system" fn() -> u32>;
35332pub type LPMAPIINITIALIZE = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35333pub type LPMAPILOGOFF = Option<
35334    unsafe extern "system" fn(
35335        lhsession: usize,
35336        uluiparam: usize,
35337        flflags: u32,
35338        ulreserved: u32,
35339    ) -> u32,
35340>;
35341pub type LPMAPILOGON = Option<
35342    unsafe extern "system" fn(
35343        uluiparam: usize,
35344        lpszprofilename: windows_core::PCSTR,
35345        lpszpassword: windows_core::PCSTR,
35346        flflags: u32,
35347        ulreserved: u32,
35348        lplhsession: *mut usize,
35349    ) -> u32,
35350>;
35351pub type LPMAPILOGONEX = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35352pub type LPMAPIREADMAIL = Option<
35353    unsafe extern "system" fn(
35354        lhsession: usize,
35355        uluiparam: usize,
35356        lpszmessageid: windows_core::PCSTR,
35357        flflags: u32,
35358        ulreserved: u32,
35359        lppmessage: *mut *mut MapiMessage,
35360    ) -> u32,
35361>;
35362pub type LPMAPIRESOLVENAME = Option<
35363    unsafe extern "system" fn(
35364        lhsession: usize,
35365        uluiparam: usize,
35366        lpszname: windows_core::PCSTR,
35367        flflags: u32,
35368        ulreserved: u32,
35369        lpprecip: *mut *mut MapiRecipDesc,
35370    ) -> u32,
35371>;
35372pub type LPMAPISAVEMAIL = Option<
35373    unsafe extern "system" fn(
35374        lhsession: usize,
35375        uluiparam: usize,
35376        lpmessage: *mut MapiMessage,
35377        flflags: u32,
35378        ulreserved: u32,
35379        lpszmessageid: windows_core::PCSTR,
35380    ) -> u32,
35381>;
35382pub type LPMAPISENDDOCUMENTS = Option<
35383    unsafe extern "system" fn(
35384        uluiparam: usize,
35385        lpszdelimchar: windows_core::PCSTR,
35386        lpszfilepaths: windows_core::PCSTR,
35387        lpszfilenames: windows_core::PCSTR,
35388        ulreserved: u32,
35389    ) -> u32,
35390>;
35391pub type LPMAPISENDMAIL = Option<
35392    unsafe extern "system" fn(
35393        lhsession: usize,
35394        uluiparam: usize,
35395        lpmessage: *mut MapiMessage,
35396        flflags: u32,
35397        ulreserved: u32,
35398    ) -> u32,
35399>;
35400pub type LPMAPIUNINITIALIZE = Option<unsafe extern "system" fn()>;
35401pub type LPMSGSERVICEENTRY = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35402pub type LPNOTIFCALLBACK = Option<
35403    unsafe extern "system" fn(
35404        lpvcontext: *mut core::ffi::c_void,
35405        cnotification: u32,
35406        lpnotifications: *mut NOTIFICATION,
35407    ) -> i32,
35408>;
35409pub type LPOPENSTREAMONFILE = Option<
35410    unsafe extern "system" fn(
35411        lpallocatebuffer: LPALLOCATEBUFFER,
35412        lpfreebuffer: LPFREEBUFFER,
35413        ulflags: u32,
35414        lpszfilename: *const i8,
35415        lpszprefix: *const i8,
35416        lppstream: windows_core::OutRef<'_, windows::Win32::System::Com::IStream>,
35417    ) -> windows_core::HRESULT,
35418>;
35419pub type LPSERVICEWIZARDDLGPROC = Option<unsafe extern "system" fn() -> windows_core::BOOL>;
35420pub type LPWIZARDENTRY = Option<unsafe extern "system" fn() -> u32>;
35421pub type MAPIADMINPROFILES = Option<
35422    unsafe extern "system" fn(
35423        ulflags: u32,
35424        lppprofadmin: windows_core::OutRef<'_, IProfAdmin>,
35425    ) -> windows_core::HRESULT,
35426>;
35427pub type MAPIALLOCATEBUFFER =
35428    Option<unsafe extern "system" fn(cbsize: u32, lppbuffer: *mut *mut core::ffi::c_void) -> i32>;
35429pub type MAPIALLOCATEMORE = Option<
35430    unsafe extern "system" fn(
35431        cbsize: u32,
35432        lpobject: *mut core::ffi::c_void,
35433        lppbuffer: *mut *mut core::ffi::c_void,
35434    ) -> i32,
35435>;
35436#[repr(C)]
35437#[derive(Clone, Copy, Debug, PartialEq)]
35438pub struct MAPIERROR {
35439    pub ulVersion: u32,
35440    pub lpszError: *mut i8,
35441    pub lpszComponent: *mut i8,
35442    pub ulLowLevelError: u32,
35443    pub ulContext: u32,
35444}
35445impl Default for MAPIERROR {
35446    fn default() -> Self {
35447        unsafe { core::mem::zeroed() }
35448    }
35449}
35450pub const MAPIFORM_CPU_AXP: u32 = 3u32;
35451pub const MAPIFORM_CPU_M68: u32 = 5u32;
35452pub const MAPIFORM_CPU_MIP: u32 = 2u32;
35453pub const MAPIFORM_CPU_PPC: u32 = 4u32;
35454pub const MAPIFORM_CPU_X64: u32 = 6u32;
35455pub const MAPIFORM_CPU_X86: u32 = 1u32;
35456pub const MAPIFORM_EXACTMATCH: u32 = 32u32;
35457pub const MAPIFORM_INSTALL_DIALOG: u32 = 8u32;
35458pub const MAPIFORM_INSTALL_OVERWRITEONCONFLICT: u32 = 16u32;
35459pub const MAPIFORM_OS_MAC_7x: u32 = 4u32;
35460pub const MAPIFORM_OS_WINNT_35: u32 = 2u32;
35461pub const MAPIFORM_OS_WINNT_40: u32 = 5u32;
35462pub const MAPIFORM_OS_WINNT_50: u32 = 6u32;
35463pub const MAPIFORM_OS_WINNT_60: u32 = 7u32;
35464pub const MAPIFORM_OS_WIN_31: u32 = 1u32;
35465pub const MAPIFORM_OS_WIN_95: u32 = 3u32;
35466pub const MAPIFORM_SELECT_ALL_REGISTRIES: u32 = 0u32;
35467pub const MAPIFORM_SELECT_FOLDER_REGISTRY_ONLY: u32 = 1u32;
35468pub const MAPIFORM_SELECT_NON_FOLDER_REGISTRY_ONLY: u32 = 2u32;
35469pub type MAPIFREEBUFFER =
35470    Option<unsafe extern "system" fn(lpbuffer: *mut core::ffi::c_void) -> u32>;
35471#[repr(C)]
35472#[derive(Clone, Copy, Debug, PartialEq)]
35473pub struct MAPIINIT {
35474    pub ulVersion: u32,
35475    pub ulFlags: u32,
35476}
35477impl Default for MAPIINIT {
35478    fn default() -> Self {
35479        unsafe { core::mem::zeroed() }
35480    }
35481}
35482pub type MAPIINITIALIZE =
35483    Option<unsafe extern "system" fn(lpmapiinit: *mut core::ffi::c_void) -> windows_core::HRESULT>;
35484pub type MAPILOGONEX = Option<
35485    unsafe extern "system" fn(
35486        uluiparam: usize,
35487        lpszprofilename: *const i8,
35488        lpszpassword: *const i8,
35489        ulflags: u32,
35490        lppsession: windows_core::OutRef<'_, IMAPISession>,
35491    ) -> windows_core::HRESULT,
35492>;
35493#[repr(C)]
35494#[derive(Clone, Copy)]
35495pub struct MAPINAMEID {
35496    pub lpguid: *mut windows_core::GUID,
35497    pub ulKind: u32,
35498    pub Kind: MAPINAMEID_0,
35499}
35500impl Default for MAPINAMEID {
35501    fn default() -> Self {
35502        unsafe { core::mem::zeroed() }
35503    }
35504}
35505#[repr(C)]
35506#[derive(Clone, Copy)]
35507pub union MAPINAMEID_0 {
35508    pub lID_Reserved: isize,
35509    pub lID: i32,
35510    pub lpwstrName: windows_core::PWSTR,
35511}
35512impl Default for MAPINAMEID_0 {
35513    fn default() -> Self {
35514        unsafe { core::mem::zeroed() }
35515    }
35516}
35517#[repr(C)]
35518#[derive(Clone, Copy, Debug, PartialEq)]
35519pub struct MAPIUID {
35520    pub ab: [u8; 16],
35521}
35522impl Default for MAPIUID {
35523    fn default() -> Self {
35524        unsafe { core::mem::zeroed() }
35525    }
35526}
35527pub type MAPIUNINITIALIZE = Option<unsafe extern "system" fn()>;
35528pub const MAPI_AB: u32 = 34u32;
35529pub const MAPI_ABCONT: u32 = 4u32;
35530pub const MAPI_AB_NOMODIFY: u32 = 1024u32;
35531pub const MAPI_AB_PROVIDER: u32 = 35u32;
35532pub const MAPI_ACCESS_CREATE_ASSOCIATED: u32 = 32u32;
35533pub const MAPI_ACCESS_CREATE_CONTENTS: u32 = 16u32;
35534pub const MAPI_ACCESS_CREATE_HIERARCHY: u32 = 8u32;
35535pub const MAPI_ACCESS_DELETE: u32 = 4u32;
35536pub const MAPI_ACCESS_MODIFY: u32 = 1u32;
35537pub const MAPI_ACCESS_READ: u32 = 2u32;
35538pub const MAPI_ADDRBOOK: u32 = 2u32;
35539pub const MAPI_ALLOW_OTHERS: u32 = 8u32;
35540pub const MAPI_AMBIGUOUS: u32 = 1u32;
35541pub const MAPI_ASSOCIATED: u32 = 64u32;
35542pub const MAPI_ATTACH: u32 = 7u32;
35543pub const MAPI_BCC: u32 = 3u32;
35544pub const MAPI_BEST_ACCESS: u32 = 16u32;
35545pub const MAPI_BG_SESSION: u32 = 2097152u32;
35546pub const MAPI_BODY_AS_FILE: u32 = 512u32;
35547pub const MAPI_CACHE_ONLY: u32 = 16384u32;
35548pub const MAPI_CC: u32 = 2u32;
35549pub const MAPI_COMPOUND: u32 = 128u32;
35550pub const MAPI_CREATE: u32 = 2u32;
35551pub const MAPI_DECLINE_OK: u32 = 4u32;
35552pub const MAPI_DEFAULT_SERVICES: u32 = 1u32;
35553pub const MAPI_DEFAULT_STORE: u32 = 1u32;
35554pub const MAPI_DEFERRED_ERRORS: u32 = 8u32;
35555pub const MAPI_DIALOG: u32 = 8u32;
35556pub const MAPI_DIM: u32 = 1u32;
35557pub const MAPI_DISABLED: u32 = 1u32;
35558pub const MAPI_DISTLIST: u32 = 8u32;
35559pub const MAPI_ENABLED: u32 = 0u32;
35560pub const MAPI_ENVELOPE_ONLY: u32 = 64u32;
35561pub const MAPI_ERROR_VERSION: i32 = 0i32;
35562pub const MAPI_EXPLICIT_PROFILE: u32 = 16u32;
35563pub const MAPI_EXTENDED: u32 = 32u32;
35564pub const MAPI_EXTENDEDCALLBACKS: u32 = 1024u32;
35565pub const MAPI_E_ACCESS_DENIED: u32 = 6u32;
35566pub const MAPI_E_ACCOUNT_DISABLED: windows_core::HRESULT =
35567    windows_core::HRESULT(0x80040124_u32 as _);
35568pub const MAPI_E_AMBIGUOUS_RECIP: windows_core::HRESULT =
35569    windows_core::HRESULT(0x80040700_u32 as _);
35570pub const MAPI_E_AMBIGUOUS_RECIPIENT: u32 = 21u32;
35571pub const MAPI_E_AMBIG_RECIP: u32 = 21u32;
35572pub const MAPI_E_ATTACHMENT_NOT_FOUND: u32 = 11u32;
35573pub const MAPI_E_ATTACHMENT_OPEN_FAILURE: u32 = 12u32;
35574pub const MAPI_E_ATTACHMENT_WRITE_FAILURE: u32 = 13u32;
35575pub const MAPI_E_BAD_CHARWIDTH: windows_core::HRESULT = windows_core::HRESULT(0x80040103_u32 as _);
35576pub const MAPI_E_BAD_COLUMN: windows_core::HRESULT = windows_core::HRESULT(0x80040118_u32 as _);
35577pub const MAPI_E_BAD_RECIPTYPE: u32 = 15u32;
35578pub const MAPI_E_BAD_VALUE: windows_core::HRESULT = windows_core::HRESULT(0x80040301_u32 as _);
35579pub const MAPI_E_BUSY: windows_core::HRESULT = windows_core::HRESULT(0x8004010B_u32 as _);
35580pub const MAPI_E_CALL_FAILED: windows_core::HRESULT = windows_core::HRESULT(0x80004005_u32 as _);
35581pub const MAPI_E_CANCEL: windows_core::HRESULT = windows_core::HRESULT(0x80040501_u32 as _);
35582pub const MAPI_E_COLLISION: windows_core::HRESULT = windows_core::HRESULT(0x80040604_u32 as _);
35583pub const MAPI_E_COMPUTED: windows_core::HRESULT = windows_core::HRESULT(0x8004011A_u32 as _);
35584pub const MAPI_E_CORRUPT_DATA: windows_core::HRESULT = windows_core::HRESULT(0x8004011B_u32 as _);
35585pub const MAPI_E_CORRUPT_STORE: windows_core::HRESULT = windows_core::HRESULT(0x80040600_u32 as _);
35586pub const MAPI_E_DECLINE_COPY: windows_core::HRESULT = windows_core::HRESULT(0x80040306_u32 as _);
35587pub const MAPI_E_DISK_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80040116_u32 as _);
35588pub const MAPI_E_DISK_FULL: u32 = 4u32;
35589pub const MAPI_E_END_OF_SESSION: windows_core::HRESULT = windows_core::HRESULT(0x80040200_u32 as _);
35590pub const MAPI_E_EXTENDED_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80040119_u32 as _);
35591pub const MAPI_E_FAILONEPROVIDER: windows_core::HRESULT =
35592    windows_core::HRESULT(0x8004011D_u32 as _);
35593pub const MAPI_E_FAILURE: u32 = 2u32;
35594pub const MAPI_E_FOLDER_CYCLE: windows_core::HRESULT = windows_core::HRESULT(0x8004060B_u32 as _);
35595pub const MAPI_E_HAS_FOLDERS: windows_core::HRESULT = windows_core::HRESULT(0x80040609_u32 as _);
35596pub const MAPI_E_HAS_MESSAGES: windows_core::HRESULT = windows_core::HRESULT(0x8004060A_u32 as _);
35597pub const MAPI_E_INSUFFICIENT_MEMORY: u32 = 5u32;
35598pub const MAPI_E_INTERFACE_NOT_SUPPORTED: windows_core::HRESULT =
35599    windows_core::HRESULT(0x80004002_u32 as _);
35600pub const MAPI_E_INVALID_ACCESS_TIME: windows_core::HRESULT =
35601    windows_core::HRESULT(0x80040123_u32 as _);
35602pub const MAPI_E_INVALID_BOOKMARK: windows_core::HRESULT =
35603    windows_core::HRESULT(0x80040405_u32 as _);
35604pub const MAPI_E_INVALID_EDITFIELDS: u32 = 24u32;
35605pub const MAPI_E_INVALID_ENTRYID: windows_core::HRESULT =
35606    windows_core::HRESULT(0x80040107_u32 as _);
35607pub const MAPI_E_INVALID_MESSAGE: u32 = 17u32;
35608pub const MAPI_E_INVALID_OBJECT: windows_core::HRESULT = windows_core::HRESULT(0x80040108_u32 as _);
35609pub const MAPI_E_INVALID_PARAMETER: windows_core::HRESULT =
35610    windows_core::HRESULT(0x80070057_u32 as _);
35611pub const MAPI_E_INVALID_RECIPS: u32 = 25u32;
35612pub const MAPI_E_INVALID_SESSION: u32 = 19u32;
35613pub const MAPI_E_INVALID_TYPE: windows_core::HRESULT = windows_core::HRESULT(0x80040302_u32 as _);
35614pub const MAPI_E_INVALID_WORKSTATION_ACCOUNT: windows_core::HRESULT =
35615    windows_core::HRESULT(0x80040122_u32 as _);
35616pub const MAPI_E_LOGIN_FAILURE: u32 = 3u32;
35617pub const MAPI_E_LOGON_FAILED: windows_core::HRESULT = windows_core::HRESULT(0x80040111_u32 as _);
35618pub const MAPI_E_LOGON_FAILURE: u32 = 3u32;
35619pub const MAPI_E_MESSAGE_IN_USE: u32 = 22u32;
35620pub const MAPI_E_MISSING_REQUIRED_COLUMN: windows_core::HRESULT =
35621    windows_core::HRESULT(0x80040202_u32 as _);
35622pub const MAPI_E_NETWORK_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80040115_u32 as _);
35623pub const MAPI_E_NETWORK_FAILURE: u32 = 23u32;
35624pub const MAPI_E_NON_STANDARD: windows_core::HRESULT = windows_core::HRESULT(0x80040606_u32 as _);
35625pub const MAPI_E_NOT_ENOUGH_DISK: windows_core::HRESULT =
35626    windows_core::HRESULT(0x8004010D_u32 as _);
35627pub const MAPI_E_NOT_ENOUGH_MEMORY: windows_core::HRESULT =
35628    windows_core::HRESULT(0x8007000E_u32 as _);
35629pub const MAPI_E_NOT_ENOUGH_RESOURCES: windows_core::HRESULT =
35630    windows_core::HRESULT(0x8004010E_u32 as _);
35631pub const MAPI_E_NOT_FOUND: windows_core::HRESULT = windows_core::HRESULT(0x8004010F_u32 as _);
35632pub const MAPI_E_NOT_INITIALIZED: windows_core::HRESULT =
35633    windows_core::HRESULT(0x80040605_u32 as _);
35634pub const MAPI_E_NOT_IN_QUEUE: windows_core::HRESULT = windows_core::HRESULT(0x80040601_u32 as _);
35635pub const MAPI_E_NOT_ME: windows_core::HRESULT = windows_core::HRESULT(0x80040502_u32 as _);
35636pub const MAPI_E_NOT_SUPPORTED: u32 = 26u32;
35637pub const MAPI_E_NO_ACCESS: windows_core::HRESULT = windows_core::HRESULT(0x80070005_u32 as _);
35638pub const MAPI_E_NO_MESSAGES: u32 = 16u32;
35639pub const MAPI_E_NO_RECIPIENTS: windows_core::HRESULT = windows_core::HRESULT(0x80040607_u32 as _);
35640pub const MAPI_E_NO_SUPPORT: windows_core::HRESULT = windows_core::HRESULT(0x80040102_u32 as _);
35641pub const MAPI_E_NO_SUPPRESS: windows_core::HRESULT = windows_core::HRESULT(0x80040602_u32 as _);
35642pub const MAPI_E_OBJECT_CHANGED: windows_core::HRESULT = windows_core::HRESULT(0x80040109_u32 as _);
35643pub const MAPI_E_OBJECT_DELETED: windows_core::HRESULT = windows_core::HRESULT(0x8004010A_u32 as _);
35644pub const MAPI_E_PASSWORD_CHANGE_REQUIRED: windows_core::HRESULT =
35645    windows_core::HRESULT(0x80040120_u32 as _);
35646pub const MAPI_E_PASSWORD_EXPIRED: windows_core::HRESULT =
35647    windows_core::HRESULT(0x80040121_u32 as _);
35648pub const MAPI_E_SESSION_LIMIT: windows_core::HRESULT = windows_core::HRESULT(0x80040112_u32 as _);
35649pub const MAPI_E_STRING_TOO_LONG: windows_core::HRESULT =
35650    windows_core::HRESULT(0x80040105_u32 as _);
35651pub const MAPI_E_SUBMITTED: windows_core::HRESULT = windows_core::HRESULT(0x80040608_u32 as _);
35652pub const MAPI_E_TABLE_EMPTY: windows_core::HRESULT = windows_core::HRESULT(0x80040402_u32 as _);
35653pub const MAPI_E_TABLE_TOO_BIG: windows_core::HRESULT = windows_core::HRESULT(0x80040403_u32 as _);
35654pub const MAPI_E_TEXT_TOO_LARGE: u32 = 18u32;
35655pub const MAPI_E_TIMEOUT: windows_core::HRESULT = windows_core::HRESULT(0x80040401_u32 as _);
35656pub const MAPI_E_TOO_BIG: windows_core::HRESULT = windows_core::HRESULT(0x80040305_u32 as _);
35657pub const MAPI_E_TOO_COMPLEX: windows_core::HRESULT = windows_core::HRESULT(0x80040117_u32 as _);
35658pub const MAPI_E_TOO_MANY_FILES: u32 = 9u32;
35659pub const MAPI_E_TOO_MANY_RECIPIENTS: u32 = 10u32;
35660pub const MAPI_E_TOO_MANY_SESSIONS: u32 = 8u32;
35661pub const MAPI_E_TYPE_NOT_SUPPORTED: u32 = 20u32;
35662pub const MAPI_E_TYPE_NO_SUPPORT: windows_core::HRESULT =
35663    windows_core::HRESULT(0x80040303_u32 as _);
35664pub const MAPI_E_UNABLE_TO_ABORT: windows_core::HRESULT =
35665    windows_core::HRESULT(0x80040114_u32 as _);
35666pub const MAPI_E_UNABLE_TO_COMPLETE: windows_core::HRESULT =
35667    windows_core::HRESULT(0x80040400_u32 as _);
35668pub const MAPI_E_UNCONFIGURED: windows_core::HRESULT = windows_core::HRESULT(0x8004011C_u32 as _);
35669pub const MAPI_E_UNEXPECTED_ID: windows_core::HRESULT = windows_core::HRESULT(0x80040307_u32 as _);
35670pub const MAPI_E_UNEXPECTED_TYPE: windows_core::HRESULT =
35671    windows_core::HRESULT(0x80040304_u32 as _);
35672pub const MAPI_E_UNKNOWN_CPID: windows_core::HRESULT = windows_core::HRESULT(0x8004011E_u32 as _);
35673pub const MAPI_E_UNKNOWN_ENTRYID: windows_core::HRESULT =
35674    windows_core::HRESULT(0x80040201_u32 as _);
35675pub const MAPI_E_UNKNOWN_FLAGS: windows_core::HRESULT = windows_core::HRESULT(0x80040106_u32 as _);
35676pub const MAPI_E_UNKNOWN_LCID: windows_core::HRESULT = windows_core::HRESULT(0x8004011F_u32 as _);
35677pub const MAPI_E_UNKNOWN_RECIPIENT: u32 = 14u32;
35678pub const MAPI_E_USER_ABORT: u32 = 1u32;
35679pub const MAPI_E_USER_CANCEL: windows_core::HRESULT = windows_core::HRESULT(0x80040113_u32 as _);
35680pub const MAPI_E_VERSION: windows_core::HRESULT = windows_core::HRESULT(0x80040110_u32 as _);
35681pub const MAPI_E_WAIT: windows_core::HRESULT = windows_core::HRESULT(0x80040500_u32 as _);
35682pub const MAPI_FOLDER: u32 = 3u32;
35683pub const MAPI_FORCE_CREATE: u32 = 1u32;
35684pub const MAPI_FORCE_DOWNLOAD: u32 = 4096u32;
35685pub const MAPI_FORMINFO: u32 = 12u32;
35686pub const MAPI_FULL_IPM_TREE: u32 = 2u32;
35687pub const MAPI_GUARANTEE_FIFO: u32 = 256u32;
35688pub const MAPI_HOOK_PROVIDER: u32 = 40u32;
35689pub const MAPI_INIT_VERSION: u32 = 0u32;
35690pub const MAPI_LOGOFF_SHARED: u32 = 1u32;
35691pub const MAPI_LOGOFF_UI: u32 = 2u32;
35692pub const MAPI_LOGON_UI: u32 = 1u32;
35693pub const MAPI_LONG_MSGID: u32 = 16384u32;
35694pub const MAPI_MAILUSER: u32 = 6u32;
35695pub const MAPI_MESSAGE: u32 = 5u32;
35696pub const MAPI_MESSAGE_BEHAVIOR_FOLDER: u32 = 1u32;
35697pub const MAPI_MESSAGE_BEHAVIOR_IPM: u32 = 0u32;
35698pub const MAPI_MH_DP_ML: u32 = 3u32;
35699pub const MAPI_MH_DP_MS: u32 = 2u32;
35700pub const MAPI_MH_DP_OTHER_AU: u32 = 6u32;
35701pub const MAPI_MH_DP_PDAU: u32 = 4u32;
35702pub const MAPI_MH_DP_PDS_PATRON: u32 = 5u32;
35703pub const MAPI_MH_DP_PRIVATE_UA: u32 = 1u32;
35704pub const MAPI_MH_DP_PUBLIC_UA: u32 = 0u32;
35705pub const MAPI_MODIFY: u32 = 1u32;
35706pub const MAPI_MOVE: u32 = 1u32;
35707pub const MAPI_MULTITHREAD_NOTIFICATIONS: u32 = 1u32;
35708pub const MAPI_NEW_MESSAGE: u32 = 2u32;
35709pub const MAPI_NEW_SESSION: u32 = 2u32;
35710pub const MAPI_NON_READ: u32 = 1u32;
35711pub const MAPI_NOREPLACE: u32 = 2u32;
35712pub const MAPI_NOTRECIP: u32 = 64u32;
35713pub const MAPI_NOTRESERVED: u32 = 8u32;
35714pub const MAPI_NOW: u32 = 16u32;
35715pub const MAPI_NO_CACHE: u32 = 512u32;
35716pub const MAPI_NO_COINIT: u32 = 8u32;
35717pub const MAPI_NO_HBAR: u32 = 1u32;
35718pub const MAPI_NO_IDS: u32 = 2u32;
35719pub const MAPI_NO_MAIL: u32 = 32768u32;
35720pub const MAPI_NO_STRINGS: u32 = 1u32;
35721pub const MAPI_NO_VBAR: u32 = 2u32;
35722pub const MAPI_NT_SERVICE: u32 = 65536u32;
35723pub const MAPI_OLE: u32 = 1u32;
35724pub const MAPI_OLE_STATIC: u32 = 2u32;
35725pub const MAPI_ONE_OFF_NO_RICH_INFO: u32 = 1u32;
35726pub const MAPI_ONE_OFF_UNICODE: u32 = 32768u32;
35727pub const MAPI_ORIG: u32 = 0u32;
35728pub const MAPI_P1: u32 = 268435456u32;
35729pub const MAPI_PASSWORD_UI: u32 = 131072u32;
35730pub const MAPI_PEEK: u32 = 128u32;
35731pub const MAPI_POST_MESSAGE: u32 = 1u32;
35732pub const MAPI_PRIMARY_STORE: u32 = 4u32;
35733pub const MAPI_PROFILE_PROVIDER: u32 = 38u32;
35734pub const MAPI_PROFSECT: u32 = 9u32;
35735pub const MAPI_PW_ADD_SERVICE_ONLY: u32 = 4u32;
35736pub const MAPI_PW_FIRST_PROFILE: u32 = 1u32;
35737pub const MAPI_PW_HIDE_SERVICES_LIST: u32 = 16u32;
35738pub const MAPI_PW_LAUNCHED_BY_CONFIG: u32 = 2u32;
35739pub const MAPI_PW_PROVIDER_UI_ONLY: u32 = 8u32;
35740pub const MAPI_RECEIPT_REQUESTED: u32 = 2u32;
35741pub const MAPI_RESERVED1: u32 = 65536u32;
35742pub const MAPI_RESOLVED: u32 = 2u32;
35743pub const MAPI_SECONDARY_STORE: u32 = 5u32;
35744pub const MAPI_SEND_NO_RICH_INFO: u32 = 65536u32;
35745pub const MAPI_SENT: u32 = 4u32;
35746pub const MAPI_SERVICE_UI_ALWAYS: u32 = 8192u32;
35747pub const MAPI_SESSION: u32 = 11u32;
35748pub const MAPI_SHORTTERM: u32 = 128u32;
35749pub const MAPI_SIMPLE_STORE_PERMANENT: u32 = 3u32;
35750pub const MAPI_SIMPLE_STORE_TEMPORARY: u32 = 2u32;
35751pub const MAPI_SPOOLER: u32 = 37u32;
35752pub const MAPI_STATUS: u32 = 10u32;
35753pub const MAPI_STORE: u32 = 1u32;
35754pub const MAPI_STORE_PROVIDER: u32 = 33u32;
35755pub const MAPI_SUBMITTED: u32 = 2147483648u32;
35756pub const MAPI_SUBSYSTEM: u32 = 39u32;
35757pub const MAPI_SUPPRESS_ATTACH: u32 = 2048u32;
35758pub const MAPI_THISSESSION: u32 = 32u32;
35759pub const MAPI_TIMEOUT_SHORT: u32 = 1048576u32;
35760pub const MAPI_TO: u32 = 1u32;
35761pub const MAPI_TOP_LEVEL: u32 = 1u32;
35762pub const MAPI_TRANSPORT_PROVIDER: u32 = 36u32;
35763pub const MAPI_UNICODE: u32 = 2147483648u32;
35764pub const MAPI_UNREAD: u32 = 1u32;
35765pub const MAPI_UNREAD_ONLY: u32 = 32u32;
35766pub const MAPI_UNRESOLVED: u32 = 0u32;
35767pub const MAPI_USER_ABORT: u32 = 1u32;
35768pub const MAPI_USE_DEFAULT: u32 = 64u32;
35769pub const MAPI_W_APPROX_COUNT: windows_core::HRESULT = windows_core::HRESULT(0x40482_u32 as _);
35770pub const MAPI_W_CANCEL_MESSAGE: windows_core::HRESULT = windows_core::HRESULT(0x40580_u32 as _);
35771pub const MAPI_W_ERRORS_RETURNED: windows_core::HRESULT = windows_core::HRESULT(0x40380_u32 as _);
35772pub const MAPI_W_NO_SERVICE: windows_core::HRESULT = windows_core::HRESULT(0x40203_u32 as _);
35773pub const MAPI_W_PARTIAL_COMPLETION: windows_core::HRESULT =
35774    windows_core::HRESULT(0x40680_u32 as _);
35775pub const MAPI_W_POSITION_CHANGED: windows_core::HRESULT = windows_core::HRESULT(0x40481_u32 as _);
35776pub const MAX_ADMD_NAME_SIZ: u32 = 17u32;
35777pub const MAX_CBMAX_BODY_LINE: u32 = 4294967295u32;
35778pub const MAX_CBMAX_HEADER_LINE: u32 = 4294967295u32;
35779pub const MAX_COUNTRY_NAME_SIZ: u32 = 4u32;
35780pub const MAX_MTA_NAME_SIZ: u32 = 33u32;
35781pub const MAX_PATH: u32 = 260u32;
35782pub const MAX_PRMD_NAME_SIZ: u32 = 17u32;
35783pub const MDB_FOLDER_IPM: u32 = 1u32;
35784pub const MDB_FOLDER_NORMAL: u32 = 4u32;
35785pub const MDB_FOLDER_RULES: u32 = 8u32;
35786pub const MDB_FOLDER_SEARCH: u32 = 2u32;
35787pub const MDB_IPM: u32 = 32u32;
35788pub const MDB_LIMIT_BELOW: u32 = 1u32;
35789pub const MDB_LIMIT_DISABLED: u32 = 16u32;
35790pub const MDB_LIMIT_ISSUE_WARNING: u32 = 2u32;
35791pub const MDB_LIMIT_NO_CHECK: u32 = 8u32;
35792pub const MDB_LIMIT_PROHIBIT_SEND: u32 = 4u32;
35793pub const MDB_NON_IPM: u32 = 16u32;
35794pub const MDB_NO_DIALOG: u32 = 1u32;
35795pub const MDB_NO_MAIL: u32 = 128u32;
35796pub const MDB_ONLINE: u32 = 256u32;
35797pub const MDB_OPEN_MSG_NO_BLOCK: u32 = 32u32;
35798pub const MDB_QUOTA_NOQUOTA: u32 = 4294967295u32;
35799pub const MDB_SAVE_MSG_UNLOCK: u32 = 64u32;
35800pub const MDB_TEMPORARY: u32 = 32u32;
35801pub const MDB_WRITE: u32 = 4u32;
35802pub const MEBF_FORMATBARSEP: u32 = 4u32;
35803pub const MEBF_INNERCLIENTEDGE: u32 = 2u32;
35804pub const MEBF_NOSCROLL: u32 = 8u32;
35805pub const MEBF_OUTERCLIENTEDGE: u32 = 1u32;
35806pub const MECD_ENCODEFILEURLSONLY: u32 = 8u32;
35807pub const MECD_ENCODEIMAGES: u32 = 4u32;
35808pub const MECD_ENCODEPLUGINS: u32 = 64u32;
35809pub const MECD_ENCODESOUNDS: u32 = 16u32;
35810pub const MECD_ENCODEVIDEO: u32 = 32u32;
35811pub const MECD_HTML: u32 = 1u32;
35812pub const MECD_PLAINTEXT: u32 = 2u32;
35813pub const MECMDID_APPLYDOCUMENT: u32 = 19u32;
35814pub const MECMDID_BACKGROUNDCOLOR: u32 = 18u32;
35815pub const MECMDID_BACKGROUNDIMAGE: u32 = 15u32;
35816pub const MECMDID_BACKGROUNDSOUND: u32 = 21u32;
35817pub const MECMDID_CHARSET: u32 = 13u32;
35818pub const MECMDID_DIRTY: u32 = 1u32;
35819pub const MECMDID_DOWNGRADEPLAINTEXT: u32 = 5u32;
35820pub const MECMDID_EDITHTML: u32 = 4u32;
35821pub const MECMDID_EDITMODE: u32 = 12u32;
35822pub const MECMDID_EMPTY: u32 = 2u32;
35823pub const MECMDID_FORMATFONT: u32 = 10u32;
35824pub const MECMDID_FORMATPARAGRAPH: u32 = 26u32;
35825pub const MECMDID_INSERTBGSOUND: u32 = 22u32;
35826pub const MECMDID_INSERTHTML: u32 = 17u32;
35827pub const MECMDID_INSERTTEXT: u32 = 16u32;
35828pub const MECMDID_INSERTTEXTFILE: u32 = 8u32;
35829pub const MECMDID_PREVIEWFORMAT: u32 = 11u32;
35830pub const MECMDID_ROT13: u32 = 7u32;
35831pub const MECMDID_SAVEASSTATIONERY: u32 = 14u32;
35832pub const MECMDID_SAVEATTACHMENTS: u32 = 20u32;
35833pub const MECMDID_SETSOURCETAB: u32 = 24u32;
35834pub const MECMDID_SETTEXT: u32 = 6u32;
35835pub const MECMDID_SHOWSOURCETABS: u32 = 23u32;
35836pub const MECMDID_STYLE: u32 = 3u32;
35837pub const MECMDID_TABLINKS: u32 = 25u32;
35838pub const MECMDID_VIEWSOURCE: u32 = 9u32;
35839pub const MECMD_VS_HTML: u32 = 1u32;
35840pub const MECMD_VS_MESSAGE: u32 = 2u32;
35841pub const MEHEADER_FORCE_ENGLISH: u32 = 4u32;
35842pub const MEHEADER_MAIL: u32 = 2u32;
35843pub const MEHEADER_NEWS: u32 = 1u32;
35844pub const MEHEADER_NONE: u32 = 0u32;
35845pub const MEHOSTCMDID_ADD_TO_ADDRESSBOOK: u32 = 10u32;
35846pub const MEHOSTCMDID_ADD_TO_FAVORITES: u32 = 11u32;
35847pub const MEHOSTCMDID_BORDERFLAGS: u32 = 14u32;
35848pub const MEHOSTCMDID_COMPOSE_FONT: u32 = 9u32;
35849pub const MEHOSTCMDID_FLAGS: u32 = 6u32;
35850pub const MEHOSTCMDID_FONTCACHE: u32 = 13u32;
35851pub const MEHOSTCMDID_HEADER_TYPE: u32 = 4u32;
35852pub const MEHOSTCMDID_ONPARSECOMPLETE: u32 = 5u32;
35853pub const MEHOSTCMDID_QUOTE_CHAR: u32 = 7u32;
35854pub const MEHOSTCMDID_REPLY_TICK_COLOR: u32 = 8u32;
35855pub const MEHOSTCMDID_SAVEATTACH_PATH: u32 = 17u32;
35856pub const MEHOSTCMDID_SECURITY_ZONE: u32 = 15u32;
35857pub const MEHOSTCMDID_SIGNATURE: u32 = 3u32;
35858pub const MEHOSTCMDID_SIGNATURE_ENABLED: u32 = 1u32;
35859pub const MEHOSTCMDID_SIGNATURE_OPTIONS: u32 = 2u32;
35860pub const MEHOSTCMDID_SLIDESHOW_DELAY: u32 = 12u32;
35861pub const MEHOSTCMDID_SOURCEEDIT_FLAGS: u32 = 18u32;
35862pub const MEHOSTCMDID_SPELL_LANGUAGE: u32 = 19u32;
35863pub const MEHOSTCMDID_SPELL_OPTIONS: u32 = 16u32;
35864pub const MEO_FLAGS_AUTOINLINE: u32 = 4u32;
35865pub const MEO_FLAGS_AUTOTEXT: u32 = 16u32;
35866pub const MEO_FLAGS_BLOCKQUOTE: u32 = 32u32;
35867pub const MEO_FLAGS_DONTSPELLCHECKQUOTED: u32 = 128u32;
35868pub const MEO_FLAGS_HTML: u32 = 2u32;
35869pub const MEO_FLAGS_INCLUDEMSG: u32 = 1u32;
35870pub const MEO_FLAGS_SENDEXTERNALIMGSRC: u32 = 256u32;
35871pub const MEO_FLAGS_SENDIMAGES: u32 = 64u32;
35872pub const MEO_FLAGS_SLIDESHOW: u32 = 8u32;
35873pub const MESIGOPT_BOTTOM: u32 = 8u32;
35874pub const MESIGOPT_HTML: u32 = 16u32;
35875pub const MESIGOPT_PLAIN: u32 = 1u32;
35876pub const MESIGOPT_PREFIX: u32 = 4u32;
35877pub const MESIGOPT_TOP: u32 = 2u32;
35878pub const MESIG_AUTO: u32 = 1u32;
35879pub const MESIG_MANUAL: u32 = 2u32;
35880pub const MESPELLOPT_ALWAYSSUGGEST: u32 = 32u32;
35881pub const MESPELLOPT_CHECKONSEND: u32 = 64u32;
35882pub const MESPELLOPT_CHECKONTYPE: u32 = 128u32;
35883pub const MESPELLOPT_IGNOREDBCS: u32 = 4u32;
35884pub const MESPELLOPT_IGNORENUMBER: u32 = 1u32;
35885pub const MESPELLOPT_IGNOREPROTECT: u32 = 8u32;
35886pub const MESPELLOPT_IGNOREUPPER: u32 = 2u32;
35887pub const MESPELLOPT_IGNOREURL: u32 = 16u32;
35888pub const MESRCFLAGS_COLOR: u32 = 1u32;
35889pub const MESSAGE_BEST_BODY: u32 = 16u32;
35890pub const MESSAGE_DIALOG: u32 = 2u32;
35891pub const MESSAGE_MOVE: u32 = 1u32;
35892pub const MESSAGE_SEND_ENTRYID: u32 = 32u32;
35893pub const MESTYLE_FORMATBAR: u32 = 2u32;
35894pub const MESTYLE_MINIHEADER: u32 = 3u32;
35895pub const MESTYLE_NOHEADER: u32 = 0u32;
35896pub const MESTYLE_PREVIEW: u32 = 1u32;
35897pub const MEST_EDIT: u32 = 0u32;
35898pub const MEST_NEXT: u32 = 3u32;
35899pub const MEST_PREVIEW: u32 = 2u32;
35900pub const MEST_PREVIOUS: u32 = 4u32;
35901pub const MEST_SOURCE: u32 = 1u32;
35902#[repr(transparent)]
35903#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35904pub struct METHODS(pub i32);
35905pub const MIMEOLE_COMPAT_MLANG2: u32 = 2u32;
35906pub const MIMEOLE_COMPAT_OE5: u32 = 1u32;
35907#[repr(C)]
35908#[derive(Clone, Copy, Debug, PartialEq)]
35909pub struct MIMEPARAMINFO {
35910    pub pszName: windows_core::PSTR,
35911    pub pszData: windows_core::PSTR,
35912}
35913impl Default for MIMEPARAMINFO {
35914    fn default() -> Self {
35915        unsafe { core::mem::zeroed() }
35916    }
35917}
35918#[repr(transparent)]
35919#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35920pub struct MIMEPROPFLAGS(pub i32);
35921#[repr(transparent)]
35922#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35923pub struct MIMEPROPID(pub i32);
35924#[repr(C)]
35925#[derive(Clone, Copy, Debug, PartialEq)]
35926pub struct MIMEPROPINFO {
35927    pub dwMask: u32,
35928    pub hCharset: *mut HCHARSET__,
35929    pub ietEncoding: ENCODINGTYPE,
35930    pub dwRowNumber: u32,
35931    pub dwFlags: u32,
35932    pub dwPropId: u32,
35933    pub cValues: u32,
35934    pub vtDefault: u16,
35935    pub vtCurrent: u16,
35936}
35937impl Default for MIMEPROPINFO {
35938    fn default() -> Self {
35939        unsafe { core::mem::zeroed() }
35940    }
35941}
35942#[repr(transparent)]
35943#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35944pub struct MIMESAVETYPE(pub i32);
35945pub const MIN_CBMAX_BODY_LINE: u32 = 30u32;
35946pub const MIN_CBMAX_HEADER_LINE: u32 = 76u32;
35947pub const MIN_EMS_AB_CONSTRUCTED_PROP_ID: u32 = 65528u32;
35948pub const MNID_ID: u32 = 0u32;
35949pub const MNID_STRING: u32 = 1u32;
35950pub const MODRECIP_ADD: u32 = 2u32;
35951pub const MODRECIP_MODIFY: u32 = 4u32;
35952pub const MODRECIP_REMOVE: u32 = 8u32;
35953pub const MPF_ADDRESS: MIMEPROPFLAGS = MIMEPROPFLAGS(4i32);
35954pub const MPF_HASPARAMS: MIMEPROPFLAGS = MIMEPROPFLAGS(8i32);
35955pub const MPF_INETCSET: MIMEPROPFLAGS = MIMEPROPFLAGS(1i32);
35956pub const MPF_MIME: MIMEPROPFLAGS = MIMEPROPFLAGS(16i32);
35957pub const MPF_READONLY: MIMEPROPFLAGS = MIMEPROPFLAGS(32i32);
35958pub const MPF_RFC1522: MIMEPROPFLAGS = MIMEPROPFLAGS(2i32);
35959pub const MSCAP_RES_ANNOTATION: u32 = 1u32;
35960pub const MSCAP_SECURE_FOLDER_HOMEPAGES: u32 = 1u32;
35961#[repr(transparent)]
35962#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35963pub struct MSCAP_SELECTOR(pub i32);
35964pub const MSCAP_SEL_FOLDER: MSCAP_SELECTOR = MSCAP_SELECTOR(2i32);
35965pub const MSCAP_SEL_RESERVED1: MSCAP_SELECTOR = MSCAP_SELECTOR(0i32);
35966pub const MSCAP_SEL_RESERVED2: MSCAP_SELECTOR = MSCAP_SELECTOR(1i32);
35967pub const MSCAP_SEL_RESERVED3: MSCAP_SELECTOR = MSCAP_SELECTOR(3i32);
35968pub const MSCAP_SEL_RESTRICTION: MSCAP_SELECTOR = MSCAP_SELECTOR(4i32);
35969pub type MSGCALLRELEASE = Option<
35970    unsafe extern "system" fn(ulcallerdata: u32, lpmessage: windows_core::Ref<'_, IMessage>),
35971>;
35972pub const MSGFLAG_ASSOCIATED: u32 = 64u32;
35973pub const MSGFLAG_FROMME: u32 = 32u32;
35974pub const MSGFLAG_HASATTACH: u32 = 16u32;
35975pub const MSGFLAG_NRN_PENDING: u32 = 512u32;
35976pub const MSGFLAG_READ: u32 = 1u32;
35977pub const MSGFLAG_RESEND: u32 = 128u32;
35978pub const MSGFLAG_RN_PENDING: u32 = 256u32;
35979pub const MSGFLAG_SUBMIT: u32 = 4u32;
35980pub const MSGFLAG_UNMODIFIED: u32 = 2u32;
35981pub const MSGFLAG_UNSENT: u32 = 8u32;
35982pub type MSGSERVICEENTRY = Option<
35983    unsafe extern "system" fn(
35984        hinstance: windows::Win32::Foundation::HINSTANCE,
35985        lpmalloc: windows_core::Ref<'_, windows::Win32::System::Com::IMalloc>,
35986        lpmapisup: windows_core::Ref<'_, IMAPISupport>,
35987        uluiparam: usize,
35988        ulflags: u32,
35989        ulcontext: u32,
35990        cvalues: u32,
35991        lpprops: *mut SPropValue,
35992        lpprovideradmin: windows_core::Ref<'_, IProviderAdmin>,
35993        lppmapierror: *mut *mut MAPIERROR,
35994    ) -> windows_core::HRESULT,
35995>;
35996pub const MSGSTATUS_DELMARKED: u32 = 8u32;
35997pub const MSGSTATUS_HIDDEN: u32 = 4u32;
35998pub const MSGSTATUS_HIGHLIGHTED: u32 = 1u32;
35999pub const MSGSTATUS_IN_CONFLICT: u32 = 2048u32;
36000pub const MSGSTATUS_MDNSENT: u32 = 16384u32;
36001pub const MSGSTATUS_REMOTE_DELETE: u32 = 8192u32;
36002pub const MSGSTATUS_REMOTE_DOWNLOAD: u32 = 4096u32;
36003pub const MSGSTATUS_TAGGED: u32 = 2u32;
36004pub const MSG_LOCKED: u32 = 1u32;
36005pub const MSG_SERVICE_CONFIGURE: u32 = 3u32;
36006pub const MSG_SERVICE_CREATE: u32 = 2u32;
36007pub const MSG_SERVICE_DELETE: u32 = 4u32;
36008pub const MSG_SERVICE_INSTALL: u32 = 1u32;
36009pub const MSG_SERVICE_PROVIDER_CREATE: u32 = 6u32;
36010pub const MSG_SERVICE_PROVIDER_DELETE: u32 = 7u32;
36011pub const MSG_SERVICE_UI_READ_ONLY: u32 = 8u32;
36012pub const MSG_SERVICE_UNINSTALL: u32 = 5u32;
36013pub const MSG_UNLOCKED: u32 = 0u32;
36014pub type MSPROVIDERINIT = Option<
36015    unsafe extern "system" fn(
36016        hinstance: windows::Win32::Foundation::HINSTANCE,
36017        lpmalloc: windows_core::Ref<'_, windows::Win32::System::Com::IMalloc>,
36018        lpallocatebuffer: LPALLOCATEBUFFER,
36019        lpallocatemore: LPALLOCATEMORE,
36020        lpfreebuffer: LPFREEBUFFER,
36021        ulflags: u32,
36022        ulmapiver: u32,
36023        lpulproviderver: *mut u32,
36024        lppmsprovider: windows_core::OutRef<'_, IMSProvider>,
36025    ) -> windows_core::HRESULT,
36026>;
36027pub const MST_BLOB_FLAG: u32 = 4u32;
36028pub const MST_CHILD_ENCRYPT: u32 = 512u32;
36029pub const MST_CHILD_MASK: u32 = 3840u32;
36030pub const MST_CHILD_SIGN: u32 = 256u32;
36031pub const MST_CLASS_MASK: u32 = 4278190080u32;
36032pub const MST_CLASS_PGP: u32 = 16777216u32;
36033pub const MST_CLASS_SMIME_V1: u32 = 0u32;
36034pub const MST_DESCENDENT_MASK: u32 = 65280u32;
36035pub const MST_ENCRYPT_MASK: u32 = 8706u32;
36036pub const MST_NONE: u32 = 0u32;
36037pub const MST_RECEIPT_REQUEST: u32 = 65536u32;
36038pub const MST_SIGN_MASK: u32 = 4353u32;
36039pub const MST_SUBMSG_ENCRYPT: u32 = 8192u32;
36040pub const MST_SUBMSG_MASK: u32 = 61440u32;
36041pub const MST_SUBMSG_SIGN: u32 = 4096u32;
36042pub const MST_THIS_BLOBSIGN: u32 = 5u32;
36043pub const MST_THIS_ENCRYPT: u32 = 2u32;
36044pub const MST_THIS_MASK: u32 = 255u32;
36045pub const MST_THIS_SIGN: u32 = 1u32;
36046pub const MST_TYPE_MASK: u32 = 65535u32;
36047pub const MSV_BADSIGNATURE: u32 = 1u32;
36048pub const MSV_CANTDECRYPT: u32 = 4096u32;
36049pub const MSV_ENCRYPT_MASK: u32 = 1044480u32;
36050pub const MSV_ENC_FOR_EXPIREDCERT: u32 = 8192u32;
36051pub const MSV_EXPIRED_SIGNINGCERT: u32 = 256u32;
36052pub const MSV_INVALID: u32 = 16777216u32;
36053pub const MSV_MALFORMEDSIG: u32 = 128u32;
36054pub const MSV_MSG_MASK: u32 = 251658240u32;
36055pub const MSV_OK: u32 = 0u32;
36056pub const MSV_SIGNATURE_MASK: u32 = 255u32;
36057pub const MSV_SIGNING_MASK: u32 = 3840u32;
36058pub const MSV_UNKHASH: u32 = 4u32;
36059pub const MSV_UNVERIFIABLE: u32 = 2u32;
36060pub const MTA_PAD: u32 = 3u32;
36061pub const MTA_PAD_FOR_ACTIONS: u32 = 2u32;
36062#[repr(C)]
36063#[derive(Clone, Copy, Debug, PartialEq)]
36064pub struct MTSID {
36065    pub cb: u32,
36066    pub ab: [u8; 1],
36067}
36068impl Default for MTSID {
36069    fn default() -> Self {
36070        unsafe { core::mem::zeroed() }
36071    }
36072}
36073pub const MUID_PROFILE_INSTANCE: windows_core::GUID =
36074    windows_core::GUID::from_u128(0x00020385_0000_0000_c000_000000000046);
36075pub const MV_FLAG: u32 = 4096u32;
36076pub const MV_INSTANCE: u32 = 8192u32;
36077#[repr(C)]
36078#[derive(Clone, Copy, Debug, PartialEq)]
36079pub struct MapiFileDesc {
36080    pub ulReserved: u32,
36081    pub flFlags: u32,
36082    pub nPosition: u32,
36083    pub lpszPathName: windows_core::PSTR,
36084    pub lpszFileName: windows_core::PSTR,
36085    pub lpFileType: *mut core::ffi::c_void,
36086}
36087impl Default for MapiFileDesc {
36088    fn default() -> Self {
36089        unsafe { core::mem::zeroed() }
36090    }
36091}
36092#[repr(C)]
36093#[derive(Clone, Copy, Debug, PartialEq)]
36094pub struct MapiFileTagExt {
36095    pub ulReserved: u32,
36096    pub cbTag: u32,
36097    pub lpTag: *mut u8,
36098    pub cbEncoding: u32,
36099    pub lpEncoding: *mut u8,
36100}
36101impl Default for MapiFileTagExt {
36102    fn default() -> Self {
36103        unsafe { core::mem::zeroed() }
36104    }
36105}
36106#[repr(C)]
36107#[derive(Clone, Copy, Debug, PartialEq)]
36108pub struct MapiMessage {
36109    pub ulReserved: u32,
36110    pub lpszSubject: windows_core::PSTR,
36111    pub lpszNoteText: windows_core::PSTR,
36112    pub lpszMessageType: windows_core::PSTR,
36113    pub lpszDateReceived: windows_core::PSTR,
36114    pub lpszConversationID: windows_core::PSTR,
36115    pub flFlags: u32,
36116    pub lpOriginator: *mut MapiRecipDesc,
36117    pub nRecipCount: u32,
36118    pub lpRecips: *mut MapiRecipDesc,
36119    pub nFileCount: u32,
36120    pub lpFiles: *mut MapiFileDesc,
36121}
36122impl Default for MapiMessage {
36123    fn default() -> Self {
36124        unsafe { core::mem::zeroed() }
36125    }
36126}
36127#[repr(C)]
36128#[derive(Clone, Copy, Debug, PartialEq)]
36129pub struct MapiRecipDesc {
36130    pub ulReserved: u32,
36131    pub ulRecipClass: u32,
36132    pub lpszName: windows_core::PSTR,
36133    pub lpszAddress: windows_core::PSTR,
36134    pub ulEIDSize: u32,
36135    pub lpEntryID: *mut core::ffi::c_void,
36136}
36137impl Default for MapiRecipDesc {
36138    fn default() -> Self {
36139        unsafe { core::mem::zeroed() }
36140    }
36141}
36142pub const NEEDS_PREPROCESSING: u32 = 1u32;
36143pub const NEEDS_SPOOLER: u32 = 2u32;
36144#[repr(C)]
36145#[derive(Clone, Copy, Debug, PartialEq)]
36146pub struct NEWMAIL_NOTIFICATION {
36147    pub cbEntryID: u32,
36148    pub lpEntryID: *mut ENTRYID,
36149    pub cbParentID: u32,
36150    pub lpParentID: *mut ENTRYID,
36151    pub ulFlags: u32,
36152    pub lpszMessageClass: *mut i8,
36153    pub ulMessageFlags: u32,
36154}
36155impl Default for NEWMAIL_NOTIFICATION {
36156    fn default() -> Self {
36157        unsafe { core::mem::zeroed() }
36158    }
36159}
36160pub const NOFLAGS: u32 = 0u32;
36161pub const NON_EMS_XP_SAVE: u32 = 4096u32;
36162pub const NON_STANDARD: u32 = 65536u32;
36163pub const NORM_IGNORECASE: u32 = 1u32;
36164pub const NORM_IGNOREKANATYPE: u32 = 65536u32;
36165pub const NORM_IGNORENONSPACE: u32 = 2u32;
36166pub const NORM_IGNORESYMBOLS: u32 = 4u32;
36167pub const NORM_IGNOREWIDTH: u32 = 131072u32;
36168#[repr(C)]
36169#[derive(Clone, Copy)]
36170pub struct NOTIFICATION {
36171    pub ulEventType: u32,
36172    pub ulAlignPad: u32,
36173    pub info: NOTIFICATION_0,
36174}
36175impl Default for NOTIFICATION {
36176    fn default() -> Self {
36177        unsafe { core::mem::zeroed() }
36178    }
36179}
36180#[repr(C)]
36181#[derive(Clone, Copy)]
36182pub union NOTIFICATION_0 {
36183    pub err: ERROR_NOTIFICATION,
36184    pub newmail: NEWMAIL_NOTIFICATION,
36185    pub obj: OBJECT_NOTIFICATION,
36186    pub tab: TABLE_NOTIFICATION,
36187    pub ext: EXTENDED_NOTIFICATION,
36188    pub statobj: STATUS_OBJECT_NOTIFICATION,
36189}
36190impl Default for NOTIFICATION_0 {
36191    fn default() -> Self {
36192        unsafe { core::mem::zeroed() }
36193    }
36194}
36195#[repr(C)]
36196#[derive(Clone, Copy, Debug, PartialEq)]
36197pub struct NOTIFKEY {
36198    pub cb: u32,
36199    pub ab: [u8; 1],
36200}
36201impl Default for NOTIFKEY {
36202    fn default() -> Self {
36203        unsafe { core::mem::zeroed() }
36204    }
36205}
36206pub const NOTIFY_ABORT_DEFERRED: u32 = 1073741824u32;
36207pub const NOTIFY_ACCT_CHANGED: u32 = 1u32;
36208pub const NOTIFY_ACCT_CREATED: u32 = 2u32;
36209pub const NOTIFY_ACCT_DELETED: u32 = 3u32;
36210pub const NOTIFY_ACCT_ORDER_CHANGED: u32 = 4u32;
36211pub const NOTIFY_ACCT_PREDELETED: u32 = 5u32;
36212pub const NOTIFY_BEGIN_INBOUND: u32 = 1u32;
36213pub const NOTIFY_BEGIN_INBOUND_FLUSH: u32 = 4u32;
36214pub const NOTIFY_BEGIN_OUTBOUND: u32 = 2u32;
36215pub const NOTIFY_BEGIN_OUTBOUND_FLUSH: u32 = 8u32;
36216pub const NOTIFY_CANCELED: u32 = 2147483648u32;
36217pub const NOTIFY_CANCEL_MESSAGE: u32 = 2147483648u32;
36218pub const NOTIFY_CONFIG_CHANGE: u32 = 16384u32;
36219pub const NOTIFY_CRITICAL_ERROR: u32 = 268435456u32;
36220pub const NOTIFY_CRITSEC: u32 = 4096u32;
36221pub const NOTIFY_END_INBOUND: u32 = 65536u32;
36222pub const NOTIFY_END_INBOUND_FLUSH: u32 = 262144u32;
36223pub const NOTIFY_END_OUTBOUND: u32 = 131072u32;
36224pub const NOTIFY_END_OUTBOUND_FLUSH: u32 = 524288u32;
36225pub const NOTIFY_NEWMAIL: u32 = 1u32;
36226pub const NOTIFY_NEWMAIL_RECEIVED: u32 = 536870912u32;
36227pub const NOTIFY_NONCRIT: u32 = 8192u32;
36228pub const NOTIFY_READYTOSEND: u32 = 2u32;
36229pub const NOTIFY_SENTDEFERRED: u32 = 4u32;
36230pub const NOTIFY_SYNC: u32 = 1073741824u32;
36231pub const NO_ATTACHMENT: u32 = 0u32;
36232pub const NO_OST_DEFAULT: u32 = 0u32;
36233pub const NO_OST_FLAG_ALLOWED: u32 = 0u32;
36234pub const NO_OST_FLAG_CACHE_ONLY: u32 = 1u32;
36235pub const NO_OST_FLAG_NOT_ALLOWED: u32 = 2u32;
36236pub const NO_OST_FLAG_NO_CACHE: u32 = 3u32;
36237pub const NULL_RESTRICTION: u32 = 255u32;
36238pub const NUM_AG_TYPES: u32 = 3u32;
36239#[repr(C)]
36240#[derive(Clone, Copy, Debug, PartialEq)]
36241pub struct OBJECT_NOTIFICATION {
36242    pub cbEntryID: u32,
36243    pub lpEntryID: *mut ENTRYID,
36244    pub ulObjType: u32,
36245    pub cbParentID: u32,
36246    pub lpParentID: *mut ENTRYID,
36247    pub cbOldID: u32,
36248    pub lpOldID: *mut ENTRYID,
36249    pub cbOldParentID: u32,
36250    pub lpOldParentID: *mut ENTRYID,
36251    pub lpPropTagArray: *mut SPropTagArray,
36252}
36253impl Default for OBJECT_NOTIFICATION {
36254    fn default() -> Self {
36255        unsafe { core::mem::zeroed() }
36256    }
36257}
36258pub const OF_AVAILABLE_OFFLINE: u32 = 1u32;
36259pub const OF_FORCE: u32 = 2147483648u32;
36260pub const OID: CERTNAMETYPE = CERTNAMETYPE(1i32);
36261pub const OID_ENCODING: u32 = 11u32;
36262pub const OID_TAG: u32 = 10u32;
36263pub const OLK_ACCOUNT_NO_FLAGS: u32 = 0u32;
36264pub const OPENSTORE_ALTERNATE_SERVER: u32 = 256u32;
36265pub const OPENSTORE_CACHE_EXCHANGE: u32 = 32768u32;
36266pub const OPENSTORE_CALLBACK_LOGON: u32 = 4096u32;
36267pub const OPENSTORE_CLI_WITH_NAMEDPROP_FIX: u32 = 65536u32;
36268pub const OPENSTORE_CLI_WITH_REPLID_GUID_MAPPING_FIX: u32 = 262144u32;
36269pub const OPENSTORE_ENABLE_LAZY_LOGGING: u32 = 131072u32;
36270pub const OPENSTORE_FAIL_IF_NO_MAILBOX: u32 = 16384u32;
36271pub const OPENSTORE_HOME_LOGON: u32 = 4u32;
36272pub const OPENSTORE_IGNORE_HOME_MDB: u32 = 512u32;
36273pub const OPENSTORE_INTERNET_ANONYMOUS: u32 = 128u32;
36274pub const OPENSTORE_LOCAL: u32 = 8192u32;
36275pub const OPENSTORE_NO_LOCALIZATION: u32 = 524288u32;
36276pub const OPENSTORE_NO_MAIL: u32 = 1024u32;
36277pub const OPENSTORE_OVERRIDE_HOME_MDB: u32 = 16u32;
36278pub const OPENSTORE_OVERRIDE_LAST_MODIFIER: u32 = 2048u32;
36279pub const OPENSTORE_PUBLIC: u32 = 2u32;
36280pub const OPENSTORE_REMOTE_TRANSPORT: u32 = 64u32;
36281pub const OPENSTORE_RESTORE_DATABASE: u32 = 1048576u32;
36282pub const OPENSTORE_TAKE_OWNERSHIP: u32 = 8u32;
36283pub const OPENSTORE_TRANSPORT: u32 = 32u32;
36284pub const OPENSTORE_USE_ADMIN_PRIVILEGE: u32 = 1u32;
36285pub const OPENSTORE_XFOREST_MOVE: u32 = 2097152u32;
36286pub const OPENSTREAMONFILE: windows_core::PCSTR = windows_core::s!("OpenStreamOnFile");
36287pub const OPEN_ALWAYS: u32 = 4u32;
36288pub const OPEN_EXISTING: u32 = 3u32;
36289pub const OPEN_IF_EXISTS: u32 = 1u32;
36290pub type OPTIONCALLBACK = Option<
36291    unsafe extern "system" fn(
36292        hinst: windows::Win32::Foundation::HINSTANCE,
36293        lpmalloc: windows_core::Ref<'_, windows::Win32::System::Com::IMalloc>,
36294        ulflags: u32,
36295        cboptiondata: u32,
36296        lpboptiondata: *mut u8,
36297        lpmapisup: windows_core::Ref<'_, IMAPISupport>,
36298        lpdatasource: windows_core::Ref<'_, IMAPIProp>,
36299        lppwrappedsource: windows_core::OutRef<'_, IMAPIProp>,
36300        lppmapierror: *mut *mut MAPIERROR,
36301    ) -> i32,
36302>;
36303#[repr(C)]
36304#[derive(Clone, Copy, Debug, PartialEq)]
36305pub struct OPTIONDATA {
36306    pub ulFlags: u32,
36307    pub lpRecipGUID: *mut windows_core::GUID,
36308    pub lpszAdrType: *mut i8,
36309    pub lpszDLLName: *mut i8,
36310    pub ulOrdinal: u32,
36311    pub cbOptionsData: u32,
36312    pub lpbOptionsData: *mut u8,
36313    pub cOptionsProps: u32,
36314    pub lpOptionsProps: *mut SPropValue,
36315}
36316impl Default for OPTIONDATA {
36317    fn default() -> Self {
36318        unsafe { core::mem::zeroed() }
36319    }
36320}
36321pub const OPTION_TYPE_MESSAGE: u32 = 2u32;
36322pub const OPTION_TYPE_RECIPIENT: u32 = 1u32;
36323pub const OP_BOUNCE: ACTTYPE = ACTTYPE(6i32);
36324pub const OP_COPY: ACTTYPE = ACTTYPE(2i32);
36325pub const OP_DEFER_ACTION: ACTTYPE = ACTTYPE(5i32);
36326pub const OP_DELEGATE: ACTTYPE = ACTTYPE(8i32);
36327pub const OP_DELETE: ACTTYPE = ACTTYPE(10i32);
36328pub const OP_FORWARD: ACTTYPE = ACTTYPE(7i32);
36329pub const OP_MARK_AS_READ: ACTTYPE = ACTTYPE(11i32);
36330pub const OP_MOVE: ACTTYPE = ACTTYPE(1i32);
36331pub const OP_OOF_REPLY: ACTTYPE = ACTTYPE(4i32);
36332pub const OP_REPLY: ACTTYPE = ACTTYPE(3i32);
36333pub const OP_TAG: ACTTYPE = ACTTYPE(9i32);
36334pub const OSTF_BEST_ENCRYPTION: u32 = 536870912u32;
36335pub const OSTF_COMPRESSABLE_ENCRYPTION: u32 = 1073741824u32;
36336pub const OSTF_NO_ENCRYPTION: u32 = 2147483648u32;
36337pub const PDF_ENCODED: u32 = 1u32;
36338pub const PDF_NAMEINDATA: u32 = 2u32;
36339pub const PDF_NOCOMMENTS: u32 = 8u32;
36340pub const PDF_SAVENOENCODE: u32 = 16u32;
36341pub const PDF_VECTOR: u32 = 32u32;
36342pub const PDK1_SPI_VERSION: i32 = 65536i32;
36343pub const PDK2_SPI_VERSION: i32 = 65544i32;
36344pub const PDK3_SPI_VERSION: i32 = 65552i32;
36345pub type PFNIDLE =
36346    Option<unsafe extern "system" fn(param0: *mut core::ffi::c_void) -> windows_core::BOOL>;
36347pub const PID_ATT_ACCOUNT: MIMEPROPID = MIMEPROPID(63i32);
36348pub const PID_ATT_AUTOINLINED: MIMEPROPID = MIMEPROPID(72i32);
36349pub const PID_ATT_COMBINED: MIMEPROPID = MIMEPROPID(71i32);
36350pub const PID_ATT_FILENAME: MIMEPROPID = MIMEPROPID(45i32);
36351pub const PID_ATT_FORWARDTO: MIMEPROPID = MIMEPROPID(67i32);
36352pub const PID_ATT_GENFNAME: MIMEPROPID = MIMEPROPID(46i32);
36353pub const PID_ATT_GHOSTED: MIMEPROPID = MIMEPROPID(69i32);
36354pub const PID_ATT_ILLEGAL: MIMEPROPID = MIMEPROPID(50i32);
36355pub const PID_ATT_NORMSUBJ: MIMEPROPID = MIMEPROPID(49i32);
36356pub const PID_ATT_PRIORITY: MIMEPROPID = MIMEPROPID(54i32);
36357pub const PID_ATT_PRITYPE: MIMEPROPID = MIMEPROPID(47i32);
36358pub const PID_ATT_RECVTIME: MIMEPROPID = MIMEPROPID(53i32);
36359pub const PID_ATT_RENDERED: MIMEPROPID = MIMEPROPID(51i32);
36360pub const PID_ATT_SENTTIME: MIMEPROPID = MIMEPROPID(52i32);
36361pub const PID_ATT_SERVER: MIMEPROPID = MIMEPROPID(62i32);
36362pub const PID_ATT_STOREFOLDERID: MIMEPROPID = MIMEPROPID(68i32);
36363pub const PID_ATT_STOREMSGID: MIMEPROPID = MIMEPROPID(65i32);
36364pub const PID_ATT_SUBTYPE: MIMEPROPID = MIMEPROPID(48i32);
36365pub const PID_ATT_UIDL: MIMEPROPID = MIMEPROPID(64i32);
36366pub const PID_ATT_UNCACHEDSIZE: MIMEPROPID = MIMEPROPID(70i32);
36367pub const PID_ATT_USERNAME: MIMEPROPID = MIMEPROPID(66i32);
36368pub const PID_BASE: u32 = 2u32;
36369pub const PID_HDR_APPARTO: MIMEPROPID = MIMEPROPID(11i32);
36370pub const PID_HDR_APPROVED: MIMEPROPID = MIMEPROPID(34i32);
36371pub const PID_HDR_ARTICLEID: MIMEPROPID = MIMEPROPID(60i32);
36372pub const PID_HDR_BCC: MIMEPROPID = MIMEPROPID(16i32);
36373pub const PID_HDR_CC: MIMEPROPID = MIMEPROPID(29i32);
36374pub const PID_HDR_CNTBASE: MIMEPROPID = MIMEPROPID(23i32);
36375pub const PID_HDR_CNTDESC: MIMEPROPID = MIMEPROPID(21i32);
36376pub const PID_HDR_CNTDISP: MIMEPROPID = MIMEPROPID(22i32);
36377pub const PID_HDR_CNTID: MIMEPROPID = MIMEPROPID(20i32);
36378pub const PID_HDR_CNTLOC: MIMEPROPID = MIMEPROPID(24i32);
36379pub const PID_HDR_CNTTYPE: MIMEPROPID = MIMEPROPID(18i32);
36380pub const PID_HDR_CNTXFER: MIMEPROPID = MIMEPROPID(19i32);
36381pub const PID_HDR_COMMENT: MIMEPROPID = MIMEPROPID(55i32);
36382pub const PID_HDR_CONTROL: MIMEPROPID = MIMEPROPID(30i32);
36383pub const PID_HDR_DATE: MIMEPROPID = MIMEPROPID(12i32);
36384pub const PID_HDR_DISTRIB: MIMEPROPID = MIMEPROPID(31i32);
36385pub const PID_HDR_ENCODING: MIMEPROPID = MIMEPROPID(56i32);
36386pub const PID_HDR_ENCRYPTED: MIMEPROPID = MIMEPROPID(57i32);
36387pub const PID_HDR_EXPIRES: MIMEPROPID = MIMEPROPID(28i32);
36388pub const PID_HDR_FOLLOWUPTO: MIMEPROPID = MIMEPROPID(27i32);
36389pub const PID_HDR_FROM: MIMEPROPID = MIMEPROPID(6i32);
36390pub const PID_HDR_KEYWORDS: MIMEPROPID = MIMEPROPID(32i32);
36391pub const PID_HDR_LINES: MIMEPROPID = MIMEPROPID(35i32);
36392pub const PID_HDR_MESSAGEID: MIMEPROPID = MIMEPROPID(7i32);
36393pub const PID_HDR_MIMEVER: MIMEPROPID = MIMEPROPID(17i32);
36394pub const PID_HDR_NEWSGROUP: MIMEPROPID = MIMEPROPID(2i32);
36395pub const PID_HDR_NEWSGROUPS: MIMEPROPID = MIMEPROPID(3i32);
36396pub const PID_HDR_OFFSETS: MIMEPROPID = MIMEPROPID(58i32);
36397pub const PID_HDR_ORG: MIMEPROPID = MIMEPROPID(37i32);
36398pub const PID_HDR_PATH: MIMEPROPID = MIMEPROPID(26i32);
36399pub const PID_HDR_RECEIVED: MIMEPROPID = MIMEPROPID(13i32);
36400pub const PID_HDR_REFS: MIMEPROPID = MIMEPROPID(4i32);
36401pub const PID_HDR_REPLYTO: MIMEPROPID = MIMEPROPID(14i32);
36402pub const PID_HDR_RETRCPTTO: MIMEPROPID = MIMEPROPID(10i32);
36403pub const PID_HDR_RETURNPATH: MIMEPROPID = MIMEPROPID(8i32);
36404pub const PID_HDR_RR: MIMEPROPID = MIMEPROPID(9i32);
36405pub const PID_HDR_SENDER: MIMEPROPID = MIMEPROPID(61i32);
36406pub const PID_HDR_SUBJECT: MIMEPROPID = MIMEPROPID(5i32);
36407pub const PID_HDR_SUMMARY: MIMEPROPID = MIMEPROPID(33i32);
36408pub const PID_HDR_TO: MIMEPROPID = MIMEPROPID(25i32);
36409pub const PID_HDR_XMAILER: MIMEPROPID = MIMEPROPID(15i32);
36410pub const PID_HDR_XMSPRI: MIMEPROPID = MIMEPROPID(40i32);
36411pub const PID_HDR_XNEWSRDR: MIMEPROPID = MIMEPROPID(38i32);
36412pub const PID_HDR_XPRI: MIMEPROPID = MIMEPROPID(39i32);
36413pub const PID_HDR_XREF: MIMEPROPID = MIMEPROPID(36i32);
36414pub const PID_HDR_XUNSENT: MIMEPROPID = MIMEPROPID(59i32);
36415pub const PID_LAST: MIMEPROPID = MIMEPROPID(73i32);
36416pub const PID_PAR_BOUNDARY: MIMEPROPID = MIMEPROPID(42i32);
36417pub const PID_PAR_CHARSET: MIMEPROPID = MIMEPROPID(43i32);
36418pub const PID_PAR_FILENAME: MIMEPROPID = MIMEPROPID(41i32);
36419pub const PID_PAR_NAME: MIMEPROPID = MIMEPROPID(44i32);
36420pub const PIM_CHARSET: PROPINFOMASK = PROPINFOMASK(1i32);
36421pub const PIM_ENCODINGTYPE: PROPINFOMASK = PROPINFOMASK(2i32);
36422pub const PIM_FLAGS: PROPINFOMASK = PROPINFOMASK(8i32);
36423pub const PIM_PROPID: PROPINFOMASK = PROPINFOMASK(16i32);
36424pub const PIM_ROWNUMBER: PROPINFOMASK = PROPINFOMASK(4i32);
36425pub const PIM_VALUES: PROPINFOMASK = PROPINFOMASK(32i32);
36426pub const PIM_VTCURRENT: PROPINFOMASK = PROPINFOMASK(128i32);
36427pub const PIM_VTDEFAULT: PROPINFOMASK = PROPINFOMASK(64i32);
36428pub const PMS_HTML: u32 = 1u32;
36429pub const PMS_TEXT: u32 = 2u32;
36430pub type PREPROCESSMESSAGE = Option<
36431    unsafe extern "system" fn(
36432        lpvsession: *mut core::ffi::c_void,
36433        lpmessage: windows_core::Ref<'_, IMessage>,
36434        lpadrbook: windows_core::Ref<'_, IAddrBook>,
36435        lpfolder: windows_core::Ref<'_, IMAPIFolder>,
36436        allocatebuffer: LPALLOCATEBUFFER,
36437        allocatemore: LPALLOCATEMORE,
36438        freebuffer: LPFREEBUFFER,
36439        lpcoutbound: *mut u32,
36440        lpppmessage: *mut *mut Option<IMessage>,
36441        lppreciplist: *mut *mut ADRLIST,
36442    ) -> windows_core::HRESULT,
36443>;
36444pub const PRIHIGHEST: u32 = 32767u32;
36445pub const PRILOWEST: i32 = -32768i32;
36446pub const PRIO_NONURGENT: u32 = 4294967295u32;
36447pub const PRIO_NORMAL: u32 = 0u32;
36448pub const PRIO_URGENT: u32 = 1u32;
36449pub const PRIUSER: u32 = 0u32;
36450pub const PRIV_DL_ALLOW_OOF: u32 = 8u32;
36451pub const PRIV_DL_HIDE_MEMBERS: u32 = 1u32;
36452pub const PRIV_DL_REPORT_TO_ORIG: u32 = 2u32;
36453pub const PRIV_DL_REPORT_TO_OWNER: u32 = 4u32;
36454pub const PRMD_PAD: u32 = 3u32;
36455pub const PRMD_PAD_FOR_ACTIONS: u32 = 2u32;
36456pub const PROCESS_XP_HEADER_CACHE: u32 = 131072u32;
36457pub const PROFILE_DELEGATE: u32 = 2u32;
36458pub const PROFILE_PRIMARY_USER: u32 = 1u32;
36459pub const PROFILE_PUBLIC_STORE: u32 = 3u32;
36460pub const PROFILE_SUBSCRIPTION: u32 = 4u32;
36461pub const PROFILE_VERSION: u32 = 1281u32;
36462pub const PROPATTR_MANDATORY: u32 = 1u32;
36463pub const PROPATTR_NOT_PRESENT: u32 = 8u32;
36464pub const PROPATTR_READABLE: u32 = 2u32;
36465pub const PROPATTR_WRITEABLE: u32 = 4u32;
36466#[repr(transparent)]
36467#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
36468pub struct PROPINFOMASK(pub i32);
36469pub const PROP_ACCT_DELIVERY_FOLDER: u32 = 1638658u32;
36470pub const PROP_ACCT_DELIVERY_STORE: u32 = 1573122u32;
36471pub const PROP_ACCT_ID: u32 = 65539u32;
36472pub const PROP_ACCT_IS_EXCH: u32 = 1310723u32;
36473pub const PROP_ACCT_MINI_UID: u32 = 196611u32;
36474pub const PROP_ACCT_NAME: u32 = 131103u32;
36475pub const PROP_ACCT_PREFERENCES_UID: u32 = 2228482u32;
36476pub const PROP_ACCT_SEND_STAMP: u32 = 917535u32;
36477pub const PROP_ACCT_SENTITEMS_EID: u32 = 2097410u32;
36478pub const PROP_ACCT_STAMP: u32 = 851999u32;
36479pub const PROP_ACCT_USER_DISPLAY_NAME: u32 = 720927u32;
36480pub const PROP_ACCT_USER_EMAIL_ADDR: u32 = 786463u32;
36481pub const PROP_ID_INVALID: u32 = 65535u32;
36482pub const PROP_ID_NULL: u32 = 0u32;
36483pub const PROP_ID_SECURE_MAX: u32 = 26623u32;
36484pub const PROP_ID_SECURE_MIN: u32 = 26608u32;
36485pub const PROP_INET_PASSWORD: u32 = 16908319u32;
36486pub const PROP_INET_PORT: u32 = 17039363u32;
36487pub const PROP_INET_SERVER: u32 = 16777247u32;
36488pub const PROP_INET_SSL: u32 = 17104899u32;
36489pub const PROP_INET_USER: u32 = 16842783u32;
36490pub const PROP_INET_USE_SPA: u32 = 17301507u32;
36491pub const PROP_MAPI_EMSMDB_UID: u32 = 537460994u32;
36492pub const PROP_MAPI_IDENTITY_ENTRYID: u32 = 537002242u32;
36493pub const PROP_MAPI_TRANSPORT_FLAGS: u32 = 537919746u32;
36494pub const PROP_POP_LEAVE_ON_SERVER: u32 = 268435459u32;
36495pub const PROP_SMTP_AUTH_METHOD: u32 = 34078723u32;
36496pub const PROP_SMTP_PASSWORD: u32 = 33882143u32;
36497pub const PROP_SMTP_PORT: u32 = 33619971u32;
36498pub const PROP_SMTP_SECURE_CONNECTION: u32 = 34209795u32;
36499pub const PROP_SMTP_SERVER: u32 = 33554463u32;
36500pub const PROP_SMTP_SSL: u32 = 33685507u32;
36501pub const PROP_SMTP_USER: u32 = 33816607u32;
36502pub const PROP_SMTP_USE_AUTH: u32 = 33751043u32;
36503pub const PROP_SMTP_USE_SPA: u32 = 34013187u32;
36504pub const PROP_TYPE_MASK: u32 = 65535u32;
36505pub const PR_7BIT_DISPLAY_NAME: u32 = 973013022u32;
36506pub const PR_ABSTRACT: u32 = 1071251486u32;
36507pub const PR_ABSTRACT_A: u32 = 1071251486u32;
36508pub const PR_ABSTRACT_W: u32 = 1071251487u32;
36509pub const PR_AB_DEFAULT_DIR: u32 = 1023803650u32;
36510pub const PR_AB_DEFAULT_PAB: u32 = 1023869186u32;
36511pub const PR_AB_PROVIDERS: u32 = 1023475970u32;
36512pub const PR_AB_PROVIDER_ID: u32 = 907346178u32;
36513pub const PR_AB_SEARCH_PATH: u32 = 1023742210u32;
36514pub const PR_AB_SEARCH_PATH_UPDATE: u32 = 1024524546u32;
36515pub const PR_ACCESS: u32 = 267649027u32;
36516pub const PR_ACCESS_LEVEL: u32 = 267845635u32;
36517pub const PR_ACCOUNT: u32 = 973078558u32;
36518pub const PR_ACCOUNT_A: u32 = 973078558u32;
36519pub const PR_ACCOUNT_W: u32 = 973078559u32;
36520pub const PR_ACKNOWLEDGEMENT_MODE: u32 = 65539u32;
36521pub const PR_ACL_DATA: u32 = 1071644930u32;
36522pub const PR_ACL_TABLE: u32 = 1071644685u32;
36523pub const PR_ACTIVE_USER_ENTRYID: u32 = 1716650242u32;
36524pub const PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID: u32 = 1713766658u32;
36525pub const PR_ADDRESS_BOOK_DISPLAY_NAME: u32 = 1072168990u32;
36526pub const PR_ADDRESS_BOOK_ENTRYID: u32 = 1715142914u32;
36527pub const PR_ADDRTYPE: u32 = 805437470u32;
36528pub const PR_ADDRTYPE_A: u32 = 805437470u32;
36529pub const PR_ADDRTYPE_W: u32 = 805437471u32;
36530pub const PR_ADDR_CC: u32 = 244842526u32;
36531pub const PR_ADDR_CC_A: u32 = 244842526u32;
36532pub const PR_ADDR_CC_W: u32 = 244842527u32;
36533pub const PR_ADDR_TO: u32 = 244776990u32;
36534pub const PR_ADMIN_SECURITY_DESCRIPTOR: u32 = 1025573122u32;
36535pub const PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML: u32 = 241893406u32;
36536pub const PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML_A: u32 = 241893406u32;
36537pub const PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML_W: u32 = 241893407u32;
36538pub const PR_ALTERNATE_RECIPIENT: u32 = 973144322u32;
36539pub const PR_ALTERNATE_RECIPIENT_ALLOWED: u32 = 131083u32;
36540pub const PR_ANR: u32 = 906756126u32;
36541pub const PR_ANR_A: u32 = 906756126u32;
36542pub const PR_ANR_W: u32 = 906756127u32;
36543pub const PR_ANTIVIRUS_SCAN_INFO: u32 = 243793950u32;
36544pub const PR_ANTIVIRUS_SCAN_STATUS: u32 = 243728387u32;
36545pub const PR_ANTIVIRUS_VENDOR: u32 = 243597342u32;
36546pub const PR_ANTIVIRUS_VERSION: u32 = 243662851u32;
36547pub const PR_ARCHIVE_DATE: u32 = 807338048u32;
36548pub const PR_ARCHIVE_PERIOD: u32 = 807272451u32;
36549pub const PR_ARCHIVE_TAG: u32 = 806879490u32;
36550pub const PR_ARRIVAL_TIME: u32 = 1717502016u32;
36551pub const PR_ASSISTANT: u32 = 976224286u32;
36552pub const PR_ASSISTANT_A: u32 = 976224286u32;
36553pub const PR_ASSISTANT_TELEPHONE_NUMBER: u32 = 976093214u32;
36554pub const PR_ASSISTANT_TELEPHONE_NUMBER_A: u32 = 976093214u32;
36555pub const PR_ASSISTANT_TELEPHONE_NUMBER_W: u32 = 976093215u32;
36556pub const PR_ASSISTANT_W: u32 = 976224287u32;
36557pub const PR_ASSOC_CONTENT_COUNT: u32 = 907476995u32;
36558pub const PR_ASSOC_MESSAGE_SIZE: u32 = 1723072515u32;
36559pub const PR_ASSOC_MESSAGE_SIZE_EXTENDED: u32 = 1723072532u32;
36560pub const PR_ASSOC_MSG_W_ATTACH_COUNT: u32 = 1722679299u32;
36561pub const PR_ATTACHMENT_X400_PARAMETERS: u32 = 922747138u32;
36562pub const PR_ATTACH_ADDITIONAL_INFO: u32 = 923730178u32;
36563pub const PR_ATTACH_CONTENT_ID: u32 = 923926558u32;
36564pub const PR_ATTACH_CONTENT_ID_A: u32 = 923926558u32;
36565pub const PR_ATTACH_CONTENT_ID_W: u32 = 923926559u32;
36566pub const PR_ATTACH_DATA_BIN: u32 = 922812674u32;
36567pub const PR_ATTACH_DATA_OBJ: u32 = 922812429u32;
36568pub const PR_ATTACH_ENCODING: u32 = 922878210u32;
36569pub const PR_ATTACH_EXTENSION: u32 = 922943518u32;
36570pub const PR_ATTACH_EXTENSION_A: u32 = 922943518u32;
36571pub const PR_ATTACH_EXTENSION_W: u32 = 922943519u32;
36572pub const PR_ATTACH_FILENAME: u32 = 923009054u32;
36573pub const PR_ATTACH_FILENAME_A: u32 = 923009054u32;
36574pub const PR_ATTACH_FILENAME_W: u32 = 923009055u32;
36575pub const PR_ATTACH_LONG_FILENAME: u32 = 923205662u32;
36576pub const PR_ATTACH_LONG_FILENAME_A: u32 = 923205662u32;
36577pub const PR_ATTACH_LONG_FILENAME_W: u32 = 923205663u32;
36578pub const PR_ATTACH_LONG_PATHNAME: u32 = 923598878u32;
36579pub const PR_ATTACH_LONG_PATHNAME_A: u32 = 923598878u32;
36580pub const PR_ATTACH_LONG_PATHNAME_W: u32 = 923598879u32;
36581pub const PR_ATTACH_METHOD: u32 = 923074563u32;
36582pub const PR_ATTACH_MIME_TAG: u32 = 923664414u32;
36583pub const PR_ATTACH_MIME_TAG_A: u32 = 923664414u32;
36584pub const PR_ATTACH_MIME_TAG_W: u32 = 923664415u32;
36585pub const PR_ATTACH_NUM: u32 = 237043715u32;
36586pub const PR_ATTACH_ON_ASSOC_MSG_COUNT: u32 = 1722941443u32;
36587pub const PR_ATTACH_ON_NORMAL_MSG_COUNT: u32 = 1722875907u32;
36588pub const PR_ATTACH_PATHNAME: u32 = 923271198u32;
36589pub const PR_ATTACH_PATHNAME_A: u32 = 923271198u32;
36590pub const PR_ATTACH_PATHNAME_W: u32 = 923271199u32;
36591pub const PR_ATTACH_RENDERING: u32 = 923336962u32;
36592pub const PR_ATTACH_SIZE: u32 = 236978179u32;
36593pub const PR_ATTACH_TAG: u32 = 923402498u32;
36594pub const PR_ATTACH_TRANSPORT_NAME: u32 = 923533342u32;
36595pub const PR_ATTACH_TRANSPORT_NAME_A: u32 = 923533342u32;
36596pub const PR_ATTACH_TRANSPORT_NAME_W: u32 = 923533343u32;
36597pub const PR_ATTR_HIDDEN: u32 = 284426251u32;
36598pub const PR_ATTR_READONLY: u32 = 284557323u32;
36599pub const PR_ATTR_SYSTEM: u32 = 284491787u32;
36600pub const PR_AUTHORIZING_USERS: u32 = 196866u32;
36601pub const PR_AUTO_ADD_NEW_SUBS: u32 = 1709506571u32;
36602pub const PR_AUTO_FORWARDED: u32 = 327691u32;
36603pub const PR_AUTO_FORWARD_COMMENT: u32 = 262174u32;
36604pub const PR_AUTO_FORWARD_COMMENT_A: u32 = 262174u32;
36605pub const PR_AUTO_FORWARD_COMMENT_W: u32 = 262175u32;
36606pub const PR_AUTO_RESET: u32 = 1728843848u32;
36607pub const PR_AUTO_RESPONSE_SUPPRESS: u32 = 1071579139u32;
36608pub const PR_BEEPER_TELEPHONE_NUMBER: u32 = 975241246u32;
36609pub const PR_BEEPER_TELEPHONE_NUMBER_A: u32 = 975241246u32;
36610pub const PR_BEEPER_TELEPHONE_NUMBER_W: u32 = 975241247u32;
36611pub const PR_BILATERAL_INFO: u32 = 1071382786u32;
36612pub const PR_BIRTHDAY: u32 = 977403968u32;
36613pub const PR_BLOCK_STATUS: u32 = 278265859u32;
36614pub const PR_BODY: u32 = 268435486u32;
36615pub const PR_BODY_A: u32 = 268435486u32;
36616pub const PR_BODY_CRC: u32 = 236716035u32;
36617pub const PR_BODY_W: u32 = 268435487u32;
36618pub const PR_BUSINESS2_TELEPHONE_NUMBER: u32 = 974848030u32;
36619pub const PR_BUSINESS2_TELEPHONE_NUMBER_A: u32 = 974848030u32;
36620pub const PR_BUSINESS2_TELEPHONE_NUMBER_W: u32 = 974848031u32;
36621pub const PR_BUSINESS_ADDRESS_CITY: u32 = 975634462u32;
36622pub const PR_BUSINESS_ADDRESS_CITY_A: u32 = 975634462u32;
36623pub const PR_BUSINESS_ADDRESS_CITY_W: u32 = 975634463u32;
36624pub const PR_BUSINESS_ADDRESS_COUNTRY: u32 = 975568926u32;
36625pub const PR_BUSINESS_ADDRESS_COUNTRY_A: u32 = 975568926u32;
36626pub const PR_BUSINESS_ADDRESS_COUNTRY_W: u32 = 975568927u32;
36627pub const PR_BUSINESS_ADDRESS_POSTAL_CODE: u32 = 975831070u32;
36628pub const PR_BUSINESS_ADDRESS_POSTAL_CODE_A: u32 = 975831070u32;
36629pub const PR_BUSINESS_ADDRESS_POSTAL_CODE_W: u32 = 975831071u32;
36630pub const PR_BUSINESS_ADDRESS_POST_OFFICE_BOX: u32 = 975896606u32;
36631pub const PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_A: u32 = 975896606u32;
36632pub const PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_W: u32 = 975896607u32;
36633pub const PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE: u32 = 975699998u32;
36634pub const PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_A: u32 = 975699998u32;
36635pub const PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W: u32 = 975699999u32;
36636pub const PR_BUSINESS_ADDRESS_STREET: u32 = 975765534u32;
36637pub const PR_BUSINESS_ADDRESS_STREET_A: u32 = 975765534u32;
36638pub const PR_BUSINESS_ADDRESS_STREET_W: u32 = 975765535u32;
36639pub const PR_BUSINESS_FAX_NUMBER: u32 = 975437854u32;
36640pub const PR_BUSINESS_FAX_NUMBER_A: u32 = 975437854u32;
36641pub const PR_BUSINESS_FAX_NUMBER_W: u32 = 975437855u32;
36642pub const PR_BUSINESS_HOME_PAGE: u32 = 978386974u32;
36643pub const PR_BUSINESS_HOME_PAGE_A: u32 = 978386974u32;
36644pub const PR_BUSINESS_HOME_PAGE_W: u32 = 978386975u32;
36645pub const PR_BUSINESS_TELEPHONE_NUMBER: u32 = 973602846u32;
36646pub const PR_BUSINESS_TELEPHONE_NUMBER_A: u32 = 973602846u32;
36647pub const PR_BUSINESS_TELEPHONE_NUMBER_W: u32 = 973602847u32;
36648pub const PR_CACHED_COLUMN_COUNT: u32 = 1722548227u32;
36649pub const PR_CALLBACK_TELEPHONE_NUMBER: u32 = 973209630u32;
36650pub const PR_CALLBACK_TELEPHONE_NUMBER_A: u32 = 973209630u32;
36651pub const PR_CALLBACK_TELEPHONE_NUMBER_W: u32 = 973209631u32;
36652pub const PR_CAR_TELEPHONE_NUMBER: u32 = 975044638u32;
36653pub const PR_CAR_TELEPHONE_NUMBER_A: u32 = 975044638u32;
36654pub const PR_CAR_TELEPHONE_NUMBER_W: u32 = 975044639u32;
36655pub const PR_CATALOG: u32 = 240845058u32;
36656pub const PR_CATEG_COUNT: u32 = 1722482691u32;
36657pub const PR_CELLULAR_TELEPHONE_NUMBER: u32 = 974913566u32;
36658pub const PR_CELLULAR_TELEPHONE_NUMBER_A: u32 = 974913566u32;
36659pub const PR_CELLULAR_TELEPHONE_NUMBER_W: u32 = 974913567u32;
36660pub const PR_CHANGE_ADVISOR: u32 = 1714683917u32;
36661pub const PR_CHANGE_KEY: u32 = 1709310210u32;
36662pub const PR_CHANGE_NOTIFICATION_GUID: u32 = 1714880584u32;
36663pub const PR_CHILDRENS_NAMES: u32 = 978849822u32;
36664pub const PR_CHILDRENS_NAMES_A: u32 = 978849822u32;
36665pub const PR_CHILDRENS_NAMES_W: u32 = 978849823u32;
36666pub const PR_CI_NOTIFICATION_ENABLED: u32 = 240975883u32;
36667pub const PR_CI_SEARCH_ENABLED: u32 = 240910347u32;
36668pub const PR_CLIENT_ACTIONS: u32 = 1715798274u32;
36669pub const PR_CLIENT_SUBMIT_TIME: u32 = 3735616u32;
36670pub const PR_CODE_PAGE_ID: u32 = 1724055555u32;
36671pub const PR_COLLECTOR: u32 = 1714290701u32;
36672pub const PR_COMMENT: u32 = 805568542u32;
36673pub const PR_COMMENT_A: u32 = 805568542u32;
36674pub const PR_COMMENT_W: u32 = 805568543u32;
36675pub const PR_COMMON_VIEWS_ENTRYID: u32 = 904265986u32;
36676pub const PR_COMPANY_MAIN_PHONE_NUMBER: u32 = 978780190u32;
36677pub const PR_COMPANY_MAIN_PHONE_NUMBER_A: u32 = 978780190u32;
36678pub const PR_COMPANY_MAIN_PHONE_NUMBER_W: u32 = 978780191u32;
36679pub const PR_COMPANY_NAME: u32 = 974520350u32;
36680pub const PR_COMPANY_NAME_A: u32 = 974520350u32;
36681pub const PR_COMPANY_NAME_W: u32 = 974520351u32;
36682pub const PR_COMPUTER_NETWORK_NAME: u32 = 977862686u32;
36683pub const PR_COMPUTER_NETWORK_NAME_A: u32 = 977862686u32;
36684pub const PR_COMPUTER_NETWORK_NAME_W: u32 = 977862687u32;
36685pub const PR_CONFLICT_ENTRYID: u32 = 1072693506u32;
36686pub const PR_CONTACT_ADDRTYPES: u32 = 978587678u32;
36687pub const PR_CONTACT_ADDRTYPES_A: u32 = 978587678u32;
36688pub const PR_CONTACT_ADDRTYPES_W: u32 = 978587679u32;
36689pub const PR_CONTACT_COUNT: u32 = 1723269123u32;
36690pub const PR_CONTACT_DEFAULT_ADDRESS_INDEX: u32 = 978649091u32;
36691pub const PR_CONTACT_EMAIL_ADDRESSES: u32 = 978718750u32;
36692pub const PR_CONTACT_EMAIL_ADDRESSES_A: u32 = 978718750u32;
36693pub const PR_CONTACT_EMAIL_ADDRESSES_W: u32 = 978718751u32;
36694pub const PR_CONTACT_ENTRYIDS: u32 = 978522370u32;
36695pub const PR_CONTACT_VERSION: u32 = 978452552u32;
36696pub const PR_CONTAINER_CLASS: u32 = 907214878u32;
36697pub const PR_CONTAINER_CLASS_A: u32 = 907214878u32;
36698pub const PR_CONTAINER_CLASS_W: u32 = 907214879u32;
36699pub const PR_CONTAINER_CONTENTS: u32 = 906952717u32;
36700pub const PR_CONTAINER_FLAGS: u32 = 905969667u32;
36701pub const PR_CONTAINER_HIERARCHY: u32 = 906887181u32;
36702pub const PR_CONTAINER_MODIFY_VERSION: u32 = 907280404u32;
36703pub const PR_CONTENTS_SORT_ORDER: u32 = 906825731u32;
36704pub const PR_CONTENTS_SYNCHRONIZER: u32 = 1714225165u32;
36705pub const PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID: u32 = 393474u32;
36706pub const PR_CONTENT_CORRELATOR: u32 = 459010u32;
36707pub const PR_CONTENT_COUNT: u32 = 906100739u32;
36708pub const PR_CONTENT_IDENTIFIER: u32 = 524318u32;
36709pub const PR_CONTENT_IDENTIFIER_A: u32 = 524318u32;
36710pub const PR_CONTENT_IDENTIFIER_W: u32 = 524319u32;
36711pub const PR_CONTENT_INTEGRITY_CHECK: u32 = 201326850u32;
36712pub const PR_CONTENT_LENGTH: u32 = 589827u32;
36713pub const PR_CONTENT_RETURN_REQUESTED: u32 = 655371u32;
36714pub const PR_CONTENT_SEARCH_KEY: u32 = 1717960962u32;
36715pub const PR_CONTENT_UNREAD: u32 = 906166275u32;
36716pub const PR_CONTROL_FLAGS: u32 = 1056964611u32;
36717pub const PR_CONTROL_ID: u32 = 1057423618u32;
36718pub const PR_CONTROL_STRUCTURE: u32 = 1057030402u32;
36719pub const PR_CONTROL_TYPE: u32 = 1057095683u32;
36720pub const PR_CONVERSATION_ID: u32 = 806551810u32;
36721pub const PR_CONVERSATION_INDEX: u32 = 7405826u32;
36722pub const PR_CONVERSATION_KEY: u32 = 721154u32;
36723pub const PR_CONVERSATION_TOPIC: u32 = 7340062u32;
36724pub const PR_CONVERSATION_TOPIC_A: u32 = 7340062u32;
36725pub const PR_CONVERSATION_TOPIC_W: u32 = 7340063u32;
36726pub const PR_CONVERSION_EITS: u32 = 786690u32;
36727pub const PR_CONVERSION_PROHIBITED: u32 = 973275147u32;
36728pub const PR_CONVERSION_WITH_LOSS_PROHIBITED: u32 = 851979u32;
36729pub const PR_CONVERTED_EITS: u32 = 917762u32;
36730pub const PR_CORRELATE: u32 = 235667467u32;
36731pub const PR_CORRELATE_MTSID: u32 = 235733250u32;
36732pub const PR_COUNTRY: u32 = 975568926u32;
36733pub const PR_COUNTRY_A: u32 = 975568926u32;
36734pub const PR_COUNTRY_W: u32 = 975568927u32;
36735pub const PR_CREATE_TEMPLATES: u32 = 906231821u32;
36736pub const PR_CREATION_TIME: u32 = 805765184u32;
36737pub const PR_CREATION_VERSION: u32 = 236519444u32;
36738pub const PR_CREATOR_ENTRYID: u32 = 1073283330u32;
36739pub const PR_CREATOR_NAME: u32 = 1073217566u32;
36740pub const PR_CREATOR_SID: u32 = 240648450u32;
36741pub const PR_CREATOR_SID_AS_XML: u32 = 241958942u32;
36742pub const PR_CURRENT_VERSION: u32 = 234881044u32;
36743pub const PR_CUSTOMER_ID: u32 = 977928222u32;
36744pub const PR_CUSTOMER_ID_A: u32 = 977928222u32;
36745pub const PR_CUSTOMER_ID_W: u32 = 977928223u32;
36746pub const PR_DAM_BACK_PATCHED: u32 = 1715929099u32;
36747pub const PR_DAM_ORIGINAL_ENTRYID: u32 = 1715863810u32;
36748pub const PR_DAV_TRANSFER_SECURITY_DESCRIPTOR: u32 = 243532034u32;
36749pub const PR_DEFAULT_PROFILE: u32 = 1023672331u32;
36750pub const PR_DEFAULT_STORE: u32 = 872415243u32;
36751pub const PR_DEFAULT_VIEW_ENTRYID: u32 = 907411714u32;
36752pub const PR_DEFERRED_DELIVERY_TIME: u32 = 983104u32;
36753pub const PR_DEFERRED_SEND_NUMBER: u32 = 1072365571u32;
36754pub const PR_DEFERRED_SEND_TIME: u32 = 1072627776u32;
36755pub const PR_DEFERRED_SEND_UNITS: u32 = 1072431107u32;
36756pub const PR_DEF_CREATE_DL: u32 = 907084034u32;
36757pub const PR_DEF_CREATE_MAILUSER: u32 = 907149570u32;
36758pub const PR_DELEGATED_BY_RULE: u32 = 1071841291u32;
36759pub const PR_DELEGATION: u32 = 8257794u32;
36760pub const PR_DELETED_ASSOC_MESSAGE_SIZE_EXTENDED: u32 = 1721565204u32;
36761pub const PR_DELETED_ASSOC_MSG_COUNT: u32 = 1715666947u32;
36762pub const PR_DELETED_COUNT_TOTAL: u32 = 1728774147u32;
36763pub const PR_DELETED_FOLDER_COUNT: u32 = 1715535875u32;
36764pub const PR_DELETED_MESSAGE_SIZE_EXTENDED: u32 = 1721434132u32;
36765pub const PR_DELETED_MSG_COUNT: u32 = 1715470339u32;
36766pub const PR_DELETED_NORMAL_MESSAGE_SIZE_EXTENDED: u32 = 1721499668u32;
36767pub const PR_DELETED_ON: u32 = 1720647744u32;
36768pub const PR_DELETE_AFTER_SUBMIT: u32 = 234946571u32;
36769pub const PR_DELIVERY_POINT: u32 = 201785347u32;
36770pub const PR_DELIVER_TIME: u32 = 1048640u32;
36771pub const PR_DELTAX: u32 = 1057161219u32;
36772pub const PR_DELTAY: u32 = 1057226755u32;
36773pub const PR_DEPARTMENT_NAME: u32 = 974651422u32;
36774pub const PR_DEPARTMENT_NAME_A: u32 = 974651422u32;
36775pub const PR_DEPARTMENT_NAME_W: u32 = 974651423u32;
36776pub const PR_DEPTH: u32 = 805634051u32;
36777pub const PR_DESIGN_IN_PROGRESS: u32 = 1071906827u32;
36778pub const PR_DETAILS_TABLE: u32 = 906297357u32;
36779pub const PR_DISABLE_FULL_FIDELITY: u32 = 284295179u32;
36780pub const PR_DISABLE_PERUSER_READ: u32 = 1724186635u32;
36781pub const PR_DISABLE_WINSOCK: u32 = 1712848899u32;
36782pub const PR_DISCARD_REASON: u32 = 1114115u32;
36783pub const PR_DISCLOSE_RECIPIENTS: u32 = 973340683u32;
36784pub const PR_DISCLOSURE_OF_RECIPIENTS: u32 = 1179659u32;
36785pub const PR_DISCRETE_VALUES: u32 = 235798539u32;
36786pub const PR_DISC_VAL: u32 = 4849675u32;
36787pub const PR_DISPLAY_BCC: u32 = 235012126u32;
36788pub const PR_DISPLAY_BCC_A: u32 = 235012126u32;
36789pub const PR_DISPLAY_BCC_W: u32 = 235012127u32;
36790pub const PR_DISPLAY_CC: u32 = 235077662u32;
36791pub const PR_DISPLAY_CC_A: u32 = 235077662u32;
36792pub const PR_DISPLAY_CC_W: u32 = 235077663u32;
36793pub const PR_DISPLAY_NAME: u32 = 805371934u32;
36794pub const PR_DISPLAY_NAME_A: u32 = 805371934u32;
36795pub const PR_DISPLAY_NAME_PREFIX: u32 = 977600542u32;
36796pub const PR_DISPLAY_NAME_PREFIX_A: u32 = 977600542u32;
36797pub const PR_DISPLAY_NAME_PREFIX_W: u32 = 977600543u32;
36798pub const PR_DISPLAY_NAME_W: u32 = 805371935u32;
36799pub const PR_DISPLAY_TO: u32 = 235143198u32;
36800pub const PR_DISPLAY_TO_A: u32 = 235143198u32;
36801pub const PR_DISPLAY_TO_W: u32 = 235143199u32;
36802pub const PR_DISPLAY_TYPE: u32 = 956301315u32;
36803pub const PR_DISPLAY_TYPE_EX: u32 = 956628995u32;
36804pub const PR_DL_EXPANSION_HISTORY: u32 = 1245442u32;
36805pub const PR_DL_EXPANSION_PROHIBITED: u32 = 1310731u32;
36806pub const PR_DL_REPORT_FLAGS: u32 = 1071316995u32;
36807pub const PR_EFORMS_FOR_LOCALE_ENTRYID: u32 = 1713635586u32;
36808pub const PR_EFORMS_LOCALE_ID: u32 = 1072234499u32;
36809pub const PR_EFORMS_REGISTRY_ENTRYID: u32 = 1713438978u32;
36810pub const PR_EMAIL_ADDRESS: u32 = 805503006u32;
36811pub const PR_EMAIL_ADDRESS_A: u32 = 805503006u32;
36812pub const PR_EMAIL_ADDRESS_W: u32 = 805503007u32;
36813pub const PR_EMS_AB_ACCESS_CATEGORY: u32 = 2151940099u32;
36814pub const PR_EMS_AB_ACTIVATION_SCHEDULE: u32 = 2152005890u32;
36815pub const PR_EMS_AB_ACTIVATION_STYLE: u32 = 2152071171u32;
36816pub const PR_EMS_AB_ADC_GLOBAL_NAMES: u32 = 2356154398u32;
36817pub const PR_EMS_AB_ADC_GLOBAL_NAMES_A: u32 = 2356154398u32;
36818pub const PR_EMS_AB_ADC_GLOBAL_NAMES_W: u32 = 2356154399u32;
36819pub const PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE: u32 = 2148991234u32;
36820pub const PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE_MSDOS: u32 = 2152136962u32;
36821pub const PR_EMS_AB_ADDRESS_SYNTAX: u32 = 2149056770u32;
36822pub const PR_EMS_AB_ADDRESS_TYPE: u32 = 2152202270u32;
36823pub const PR_EMS_AB_ADDRESS_TYPE_A: u32 = 2152202270u32;
36824pub const PR_EMS_AB_ADDRESS_TYPE_W: u32 = 2152202271u32;
36825pub const PR_EMS_AB_ADMD: u32 = 2152267806u32;
36826pub const PR_EMS_AB_ADMD_A: u32 = 2152267806u32;
36827pub const PR_EMS_AB_ADMD_W: u32 = 2152267807u32;
36828pub const PR_EMS_AB_ADMIN_DESCRIPTION: u32 = 2152333342u32;
36829pub const PR_EMS_AB_ADMIN_DESCRIPTION_A: u32 = 2152333342u32;
36830pub const PR_EMS_AB_ADMIN_DESCRIPTION_W: u32 = 2152333343u32;
36831pub const PR_EMS_AB_ADMIN_DISPLAY_NAME: u32 = 2152398878u32;
36832pub const PR_EMS_AB_ADMIN_DISPLAY_NAME_A: u32 = 2152398878u32;
36833pub const PR_EMS_AB_ADMIN_DISPLAY_NAME_W: u32 = 2152398879u32;
36834pub const PR_EMS_AB_ADMIN_EXTENSION_DLL: u32 = 2152464414u32;
36835pub const PR_EMS_AB_ADMIN_EXTENSION_DLL_A: u32 = 2152464414u32;
36836pub const PR_EMS_AB_ADMIN_EXTENSION_DLL_W: u32 = 2152464415u32;
36837pub const PR_EMS_AB_ALIASED_OBJECT_NAME: u32 = 2152529950u32;
36838pub const PR_EMS_AB_ALIASED_OBJECT_NAME_A: u32 = 2152529950u32;
36839pub const PR_EMS_AB_ALIASED_OBJECT_NAME_O: u32 = 2152529933u32;
36840pub const PR_EMS_AB_ALIASED_OBJECT_NAME_T: u32 = 2152529950u32;
36841pub const PR_EMS_AB_ALIASED_OBJECT_NAME_W: u32 = 2152529951u32;
36842pub const PR_EMS_AB_ALT_RECIPIENT: u32 = 2152595486u32;
36843pub const PR_EMS_AB_ALT_RECIPIENT_A: u32 = 2152595486u32;
36844pub const PR_EMS_AB_ALT_RECIPIENT_BL: u32 = 2152665118u32;
36845pub const PR_EMS_AB_ALT_RECIPIENT_BL_A: u32 = 2152665118u32;
36846pub const PR_EMS_AB_ALT_RECIPIENT_BL_O: u32 = 2152661005u32;
36847pub const PR_EMS_AB_ALT_RECIPIENT_BL_T: u32 = 2152665118u32;
36848pub const PR_EMS_AB_ALT_RECIPIENT_BL_W: u32 = 2152665119u32;
36849pub const PR_EMS_AB_ALT_RECIPIENT_O: u32 = 2152595469u32;
36850pub const PR_EMS_AB_ALT_RECIPIENT_T: u32 = 2152595486u32;
36851pub const PR_EMS_AB_ALT_RECIPIENT_W: u32 = 2152595487u32;
36852pub const PR_EMS_AB_ANCESTOR_ID: u32 = 2152726786u32;
36853pub const PR_EMS_AB_ANONYMOUS_ACCESS: u32 = 2173108235u32;
36854pub const PR_EMS_AB_ANONYMOUS_ACCOUNT: u32 = 2351300638u32;
36855pub const PR_EMS_AB_ANONYMOUS_ACCOUNT_A: u32 = 2351300638u32;
36856pub const PR_EMS_AB_ANONYMOUS_ACCOUNT_W: u32 = 2351300639u32;
36857pub const PR_EMS_AB_ASSOCIATION_LIFETIME: u32 = 2152857603u32;
36858pub const PR_EMS_AB_ASSOC_NT_ACCOUNT: u32 = 2150039810u32;
36859pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP: u32 = 2175074334u32;
36860pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_A: u32 = 2175074334u32;
36861pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_O: u32 = 2175074317u32;
36862pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_T: u32 = 2175074334u32;
36863pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_W: u32 = 2175074335u32;
36864pub const PR_EMS_AB_ASSOC_REMOTE_DXA: u32 = 2152796190u32;
36865pub const PR_EMS_AB_ASSOC_REMOTE_DXA_A: u32 = 2152796190u32;
36866pub const PR_EMS_AB_ASSOC_REMOTE_DXA_O: u32 = 2152792077u32;
36867pub const PR_EMS_AB_ASSOC_REMOTE_DXA_T: u32 = 2152796190u32;
36868pub const PR_EMS_AB_ASSOC_REMOTE_DXA_W: u32 = 2152796191u32;
36869pub const PR_EMS_AB_ATTRIBUTE_CERTIFICATE: u32 = 2353336578u32;
36870pub const PR_EMS_AB_AUTHENTICATION_TO_USE: u32 = 2174353438u32;
36871pub const PR_EMS_AB_AUTHENTICATION_TO_USE_A: u32 = 2174353438u32;
36872pub const PR_EMS_AB_AUTHENTICATION_TO_USE_W: u32 = 2174353439u32;
36873pub const PR_EMS_AB_AUTHORITY_REVOCATION_LIST: u32 = 2149978370u32;
36874pub const PR_EMS_AB_AUTHORIZED_DOMAIN: u32 = 2152988702u32;
36875pub const PR_EMS_AB_AUTHORIZED_DOMAIN_A: u32 = 2152988702u32;
36876pub const PR_EMS_AB_AUTHORIZED_DOMAIN_W: u32 = 2152988703u32;
36877pub const PR_EMS_AB_AUTHORIZED_PASSWORD: u32 = 2153054466u32;
36878pub const PR_EMS_AB_AUTHORIZED_PASSWORD_CONFIRM: u32 = 2173829378u32;
36879pub const PR_EMS_AB_AUTHORIZED_USER: u32 = 2153119774u32;
36880pub const PR_EMS_AB_AUTHORIZED_USER_A: u32 = 2153119774u32;
36881pub const PR_EMS_AB_AUTHORIZED_USER_W: u32 = 2153119775u32;
36882pub const PR_EMS_AB_AUTH_ORIG_BL: u32 = 2152927262u32;
36883pub const PR_EMS_AB_AUTH_ORIG_BL_A: u32 = 2152927262u32;
36884pub const PR_EMS_AB_AUTH_ORIG_BL_O: u32 = 2152923149u32;
36885pub const PR_EMS_AB_AUTH_ORIG_BL_T: u32 = 2152927262u32;
36886pub const PR_EMS_AB_AUTH_ORIG_BL_W: u32 = 2152927263u32;
36887pub const PR_EMS_AB_AUTOREPLY: u32 = 2148204555u32;
36888pub const PR_EMS_AB_AUTOREPLY_MESSAGE: u32 = 2148139038u32;
36889pub const PR_EMS_AB_AUTOREPLY_MESSAGE_A: u32 = 2148139038u32;
36890pub const PR_EMS_AB_AUTOREPLY_MESSAGE_W: u32 = 2148139039u32;
36891pub const PR_EMS_AB_AUTOREPLY_SUBJECT: u32 = 2151546910u32;
36892pub const PR_EMS_AB_AUTOREPLY_SUBJECT_A: u32 = 2151546910u32;
36893pub const PR_EMS_AB_AUTOREPLY_SUBJECT_W: u32 = 2151546911u32;
36894pub const PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES: u32 = 2172719134u32;
36895pub const PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES_A: u32 = 2172719134u32;
36896pub const PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES_W: u32 = 2172719135u32;
36897pub const PR_EMS_AB_AVAILABLE_DISTRIBUTIONS: u32 = 2173370398u32;
36898pub const PR_EMS_AB_AVAILABLE_DISTRIBUTIONS_A: u32 = 2173370398u32;
36899pub const PR_EMS_AB_AVAILABLE_DISTRIBUTIONS_W: u32 = 2173370399u32;
36900pub const PR_EMS_AB_BRIDGEHEAD_SERVERS: u32 = 2171867166u32;
36901pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_A: u32 = 2171867166u32;
36902pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_O: u32 = 2171863053u32;
36903pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_T: u32 = 2171867166u32;
36904pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_W: u32 = 2171867167u32;
36905pub const PR_EMS_AB_BUSINESS_CATEGORY: u32 = 2153189406u32;
36906pub const PR_EMS_AB_BUSINESS_CATEGORY_A: u32 = 2153189406u32;
36907pub const PR_EMS_AB_BUSINESS_CATEGORY_W: u32 = 2153189407u32;
36908pub const PR_EMS_AB_BUSINESS_ROLES: u32 = 2149777666u32;
36909pub const PR_EMS_AB_CAN_CREATE_PF: u32 = 2153254942u32;
36910pub const PR_EMS_AB_CAN_CREATE_PF_A: u32 = 2153254942u32;
36911pub const PR_EMS_AB_CAN_CREATE_PF_BL: u32 = 2153320478u32;
36912pub const PR_EMS_AB_CAN_CREATE_PF_BL_A: u32 = 2153320478u32;
36913pub const PR_EMS_AB_CAN_CREATE_PF_BL_O: u32 = 2153316365u32;
36914pub const PR_EMS_AB_CAN_CREATE_PF_BL_T: u32 = 2153320478u32;
36915pub const PR_EMS_AB_CAN_CREATE_PF_BL_W: u32 = 2153320479u32;
36916pub const PR_EMS_AB_CAN_CREATE_PF_DL: u32 = 2153386014u32;
36917pub const PR_EMS_AB_CAN_CREATE_PF_DL_A: u32 = 2153386014u32;
36918pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL: u32 = 2153451550u32;
36919pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_A: u32 = 2153451550u32;
36920pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_O: u32 = 2153447437u32;
36921pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_T: u32 = 2153451550u32;
36922pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_W: u32 = 2153451551u32;
36923pub const PR_EMS_AB_CAN_CREATE_PF_DL_O: u32 = 2153381901u32;
36924pub const PR_EMS_AB_CAN_CREATE_PF_DL_T: u32 = 2153386014u32;
36925pub const PR_EMS_AB_CAN_CREATE_PF_DL_W: u32 = 2153386015u32;
36926pub const PR_EMS_AB_CAN_CREATE_PF_O: u32 = 2153250829u32;
36927pub const PR_EMS_AB_CAN_CREATE_PF_T: u32 = 2153254942u32;
36928pub const PR_EMS_AB_CAN_CREATE_PF_W: u32 = 2153254943u32;
36929pub const PR_EMS_AB_CAN_NOT_CREATE_PF: u32 = 2153517086u32;
36930pub const PR_EMS_AB_CAN_NOT_CREATE_PF_A: u32 = 2153517086u32;
36931pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL: u32 = 2153582622u32;
36932pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_A: u32 = 2153582622u32;
36933pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_O: u32 = 2153578509u32;
36934pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_T: u32 = 2153582622u32;
36935pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_W: u32 = 2153582623u32;
36936pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL: u32 = 2153648158u32;
36937pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_A: u32 = 2153648158u32;
36938pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL: u32 = 2153713694u32;
36939pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_A: u32 = 2153713694u32;
36940pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_O: u32 = 2153709581u32;
36941pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_T: u32 = 2153713694u32;
36942pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_W: u32 = 2153713695u32;
36943pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_O: u32 = 2153644045u32;
36944pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_T: u32 = 2153648158u32;
36945pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_W: u32 = 2153648159u32;
36946pub const PR_EMS_AB_CAN_NOT_CREATE_PF_O: u32 = 2153512973u32;
36947pub const PR_EMS_AB_CAN_NOT_CREATE_PF_T: u32 = 2153517086u32;
36948pub const PR_EMS_AB_CAN_NOT_CREATE_PF_W: u32 = 2153517087u32;
36949pub const PR_EMS_AB_CAN_PRESERVE_DNS: u32 = 2153775115u32;
36950pub const PR_EMS_AB_CA_CERTIFICATE: u32 = 2147684610u32;
36951pub const PR_EMS_AB_CERTIFICATE_CHAIN_V3: u32 = 2351366402u32;
36952pub const PR_EMS_AB_CERTIFICATE_REVOCATION_LIST: u32 = 2148925698u32;
36953pub const PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V1: u32 = 2351497474u32;
36954pub const PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V3: u32 = 2351431938u32;
36955pub const PR_EMS_AB_CHARACTER_SET: u32 = 2172977182u32;
36956pub const PR_EMS_AB_CHARACTER_SET_A: u32 = 2172977182u32;
36957pub const PR_EMS_AB_CHARACTER_SET_LIST: u32 = 2172784670u32;
36958pub const PR_EMS_AB_CHARACTER_SET_LIST_A: u32 = 2172784670u32;
36959pub const PR_EMS_AB_CHARACTER_SET_LIST_W: u32 = 2172784671u32;
36960pub const PR_EMS_AB_CHARACTER_SET_W: u32 = 2172977183u32;
36961pub const PR_EMS_AB_CHILD_RDNS: u32 = 4294447134u32;
36962pub const PR_EMS_AB_CLIENT_ACCESS_ENABLED: u32 = 2351169547u32;
36963pub const PR_EMS_AB_CLOCK_ALERT_OFFSET: u32 = 2153840643u32;
36964pub const PR_EMS_AB_CLOCK_ALERT_REPAIR: u32 = 2153906187u32;
36965pub const PR_EMS_AB_CLOCK_WARNING_OFFSET: u32 = 2153971715u32;
36966pub const PR_EMS_AB_CLOCK_WARNING_REPAIR: u32 = 2154037259u32;
36967pub const PR_EMS_AB_COMPROMISED_KEY_LIST: u32 = 2177106178u32;
36968pub const PR_EMS_AB_COMPUTER_NAME: u32 = 2154102814u32;
36969pub const PR_EMS_AB_COMPUTER_NAME_A: u32 = 2154102814u32;
36970pub const PR_EMS_AB_COMPUTER_NAME_W: u32 = 2154102815u32;
36971pub const PR_EMS_AB_CONNECTED_DOMAINS: u32 = 2154172446u32;
36972pub const PR_EMS_AB_CONNECTED_DOMAINS_A: u32 = 2154172446u32;
36973pub const PR_EMS_AB_CONNECTED_DOMAINS_W: u32 = 2154172447u32;
36974pub const PR_EMS_AB_CONNECTION_LIST_FILTER: u32 = 2172649730u32;
36975pub const PR_EMS_AB_CONNECTION_LIST_FILTER_TYPE: u32 = 2176057347u32;
36976pub const PR_EMS_AB_CONNECTION_TYPE: u32 = 2175991819u32;
36977pub const PR_EMS_AB_CONTAINERID: u32 = 4294770691u32;
36978pub const PR_EMS_AB_CONTAINER_INFO: u32 = 2154233859u32;
36979pub const PR_EMS_AB_CONTENT_TYPE: u32 = 2173042691u32;
36980pub const PR_EMS_AB_CONTROL_MSG_FOLDER_ID: u32 = 2173174018u32;
36981pub const PR_EMS_AB_CONTROL_MSG_RULES: u32 = 2173305090u32;
36982pub const PR_EMS_AB_COST: u32 = 2154299395u32;
36983pub const PR_EMS_AB_COUNTRY_NAME: u32 = 2154364958u32;
36984pub const PR_EMS_AB_COUNTRY_NAME_A: u32 = 2154364958u32;
36985pub const PR_EMS_AB_COUNTRY_NAME_W: u32 = 2154364959u32;
36986pub const PR_EMS_AB_CROSS_CERTIFICATE_CRL: u32 = 2351960322u32;
36987pub const PR_EMS_AB_CROSS_CERTIFICATE_PAIR: u32 = 2149912834u32;
36988pub const PR_EMS_AB_DEFAULT_MESSAGE_FORMAT: u32 = 2352414731u32;
36989pub const PR_EMS_AB_DELEGATE_USER: u32 = 2353594379u32;
36990pub const PR_EMS_AB_DELIVERY_MECHANISM: u32 = 2154692611u32;
36991pub const PR_EMS_AB_DELIVER_AND_REDIRECT: u32 = 2154627083u32;
36992pub const PR_EMS_AB_DELIV_CONT_LENGTH: u32 = 2154430467u32;
36993pub const PR_EMS_AB_DELIV_EITS: u32 = 2154500354u32;
36994pub const PR_EMS_AB_DELIV_EXT_CONT_TYPES: u32 = 2154565890u32;
36995pub const PR_EMS_AB_DELTA_REVOCATION_LIST: u32 = 2353402114u32;
36996pub const PR_EMS_AB_DESCRIPTION: u32 = 2154762270u32;
36997pub const PR_EMS_AB_DESCRIPTION_A: u32 = 2154762270u32;
36998pub const PR_EMS_AB_DESCRIPTION_W: u32 = 2154762271u32;
36999pub const PR_EMS_AB_DESTINATION_INDICATOR: u32 = 2154827806u32;
37000pub const PR_EMS_AB_DESTINATION_INDICATOR_A: u32 = 2154827806u32;
37001pub const PR_EMS_AB_DESTINATION_INDICATOR_W: u32 = 2154827807u32;
37002pub const PR_EMS_AB_DIAGNOSTIC_REG_KEY: u32 = 2154889246u32;
37003pub const PR_EMS_AB_DIAGNOSTIC_REG_KEY_A: u32 = 2154889246u32;
37004pub const PR_EMS_AB_DIAGNOSTIC_REG_KEY_W: u32 = 2154889247u32;
37005pub const PR_EMS_AB_DISABLED_GATEWAY_PROXY: u32 = 2177044510u32;
37006pub const PR_EMS_AB_DISABLED_GATEWAY_PROXY_A: u32 = 2177044510u32;
37007pub const PR_EMS_AB_DISABLED_GATEWAY_PROXY_W: u32 = 2177044511u32;
37008pub const PR_EMS_AB_DISABLE_DEFERRED_COMMIT: u32 = 2351104011u32;
37009pub const PR_EMS_AB_DISPLAY_NAME_OVERRIDE: u32 = 2147549195u32;
37010pub const PR_EMS_AB_DISPLAY_NAME_PRINTABLE: u32 = 973013022u32;
37011pub const PR_EMS_AB_DISPLAY_NAME_PRINTABLE_A: u32 = 973013022u32;
37012pub const PR_EMS_AB_DISPLAY_NAME_PRINTABLE_W: u32 = 973013023u32;
37013pub const PR_EMS_AB_DISPLAY_NAME_SUFFIX: u32 = 2353266718u32;
37014pub const PR_EMS_AB_DISPLAY_NAME_SUFFIX_A: u32 = 2353266718u32;
37015pub const PR_EMS_AB_DISPLAY_NAME_SUFFIX_W: u32 = 2353266719u32;
37016pub const PR_EMS_AB_DL_EXTERNAL_MEMBER_COUNT: u32 = 2363686915u32;
37017pub const PR_EMS_AB_DL_MEMBER_RULE: u32 = 2155090178u32;
37018pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL: u32 = 2154958878u32;
37019pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_A: u32 = 2154958878u32;
37020pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_O: u32 = 2154954765u32;
37021pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_T: u32 = 2154958878u32;
37022pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_W: u32 = 2154958879u32;
37023pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL: u32 = 2155024414u32;
37024pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_A: u32 = 2155024414u32;
37025pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_O: u32 = 2155020301u32;
37026pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_T: u32 = 2155024414u32;
37027pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_W: u32 = 2155024415u32;
37028pub const PR_EMS_AB_DMD_NAME: u32 = 2354446366u32;
37029pub const PR_EMS_AB_DMD_NAME_A: u32 = 2354446366u32;
37030pub const PR_EMS_AB_DMD_NAME_W: u32 = 2354446367u32;
37031pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP: u32 = 2155151390u32;
37032pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_A: u32 = 2155151390u32;
37033pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_O: u32 = 2155151373u32;
37034pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_T: u32 = 2155151390u32;
37035pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_W: u32 = 2155151391u32;
37036pub const PR_EMS_AB_DOMAIN_NAME: u32 = 2155216926u32;
37037pub const PR_EMS_AB_DOMAIN_NAME_A: u32 = 2155216926u32;
37038pub const PR_EMS_AB_DOMAIN_NAME_W: u32 = 2155216927u32;
37039pub const PR_EMS_AB_DO_OAB_VERSION: u32 = 2352611331u32;
37040pub const PR_EMS_AB_DSA_SIGNATURE: u32 = 2155282690u32;
37041pub const PR_EMS_AB_DXA_ADMIN_COPY: u32 = 2155347979u32;
37042pub const PR_EMS_AB_DXA_ADMIN_FORWARD: u32 = 2155413515u32;
37043pub const PR_EMS_AB_DXA_ADMIN_UPDATE: u32 = 2155479043u32;
37044pub const PR_EMS_AB_DXA_APPEND_REQCN: u32 = 2155544587u32;
37045pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST: u32 = 2155614238u32;
37046pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_A: u32 = 2155614238u32;
37047pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL: u32 = 2356547614u32;
37048pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_A: u32 = 2356547614u32;
37049pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_O: u32 = 2356543501u32;
37050pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_T: u32 = 2356547614u32;
37051pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_W: u32 = 2356547615u32;
37052pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED: u32 = 2356219934u32;
37053pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_A: u32 = 2356219934u32;
37054pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_O: u32 = 2356215821u32;
37055pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_T: u32 = 2356219934u32;
37056pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_W: u32 = 2356219935u32;
37057pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_O: u32 = 2155610125u32;
37058pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_T: u32 = 2155614238u32;
37059pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_W: u32 = 2155614239u32;
37060pub const PR_EMS_AB_DXA_CONF_REQ_TIME: u32 = 2155675712u32;
37061pub const PR_EMS_AB_DXA_CONF_SEQ: u32 = 2155741214u32;
37062pub const PR_EMS_AB_DXA_CONF_SEQ_A: u32 = 2155741214u32;
37063pub const PR_EMS_AB_DXA_CONF_SEQ_USN: u32 = 2155806723u32;
37064pub const PR_EMS_AB_DXA_CONF_SEQ_W: u32 = 2155741215u32;
37065pub const PR_EMS_AB_DXA_EXCHANGE_OPTIONS: u32 = 2155872259u32;
37066pub const PR_EMS_AB_DXA_EXPORT_NOW: u32 = 2155937803u32;
37067pub const PR_EMS_AB_DXA_FLAGS: u32 = 2156003331u32;
37068pub const PR_EMS_AB_DXA_IMPORT_NOW: u32 = 2156265483u32;
37069pub const PR_EMS_AB_DXA_IMP_SEQ: u32 = 2156068894u32;
37070pub const PR_EMS_AB_DXA_IMP_SEQ_A: u32 = 2156068894u32;
37071pub const PR_EMS_AB_DXA_IMP_SEQ_TIME: u32 = 2156134464u32;
37072pub const PR_EMS_AB_DXA_IMP_SEQ_USN: u32 = 2156199939u32;
37073pub const PR_EMS_AB_DXA_IMP_SEQ_W: u32 = 2156068895u32;
37074pub const PR_EMS_AB_DXA_IN_TEMPLATE_MAP: u32 = 2156335134u32;
37075pub const PR_EMS_AB_DXA_IN_TEMPLATE_MAP_A: u32 = 2156335134u32;
37076pub const PR_EMS_AB_DXA_IN_TEMPLATE_MAP_W: u32 = 2156335135u32;
37077pub const PR_EMS_AB_DXA_LOCAL_ADMIN: u32 = 2156396574u32;
37078pub const PR_EMS_AB_DXA_LOCAL_ADMIN_A: u32 = 2156396574u32;
37079pub const PR_EMS_AB_DXA_LOCAL_ADMIN_O: u32 = 2156396557u32;
37080pub const PR_EMS_AB_DXA_LOCAL_ADMIN_T: u32 = 2156396574u32;
37081pub const PR_EMS_AB_DXA_LOCAL_ADMIN_W: u32 = 2156396575u32;
37082pub const PR_EMS_AB_DXA_LOGGING_LEVEL: u32 = 2156462083u32;
37083pub const PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE: u32 = 2156527646u32;
37084pub const PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE_A: u32 = 2156527646u32;
37085pub const PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE_W: u32 = 2156527647u32;
37086pub const PR_EMS_AB_DXA_OUT_TEMPLATE_MAP: u32 = 2156597278u32;
37087pub const PR_EMS_AB_DXA_OUT_TEMPLATE_MAP_A: u32 = 2156597278u32;
37088pub const PR_EMS_AB_DXA_OUT_TEMPLATE_MAP_W: u32 = 2156597279u32;
37089pub const PR_EMS_AB_DXA_PASSWORD: u32 = 2156658718u32;
37090pub const PR_EMS_AB_DXA_PASSWORD_A: u32 = 2156658718u32;
37091pub const PR_EMS_AB_DXA_PASSWORD_W: u32 = 2156658719u32;
37092pub const PR_EMS_AB_DXA_PREV_EXCHANGE_OPTIONS: u32 = 2156724227u32;
37093pub const PR_EMS_AB_DXA_PREV_EXPORT_NATIVE_ONLY: u32 = 2156789771u32;
37094pub const PR_EMS_AB_DXA_PREV_IN_EXCHANGE_SENSITIVITY: u32 = 2156855299u32;
37095pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES: u32 = 2156920862u32;
37096pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_A: u32 = 2156920862u32;
37097pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_O: u32 = 2156920845u32;
37098pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_T: u32 = 2156920862u32;
37099pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_W: u32 = 2156920863u32;
37100pub const PR_EMS_AB_DXA_PREV_REPLICATION_SENSITIVITY: u32 = 2156986371u32;
37101pub const PR_EMS_AB_DXA_PREV_TEMPLATE_OPTIONS: u32 = 2157051907u32;
37102pub const PR_EMS_AB_DXA_PREV_TYPES: u32 = 2157117443u32;
37103pub const PR_EMS_AB_DXA_RECIPIENT_CP: u32 = 2157183006u32;
37104pub const PR_EMS_AB_DXA_RECIPIENT_CP_A: u32 = 2157183006u32;
37105pub const PR_EMS_AB_DXA_RECIPIENT_CP_W: u32 = 2157183007u32;
37106pub const PR_EMS_AB_DXA_REMOTE_CLIENT: u32 = 2157248542u32;
37107pub const PR_EMS_AB_DXA_REMOTE_CLIENT_A: u32 = 2157248542u32;
37108pub const PR_EMS_AB_DXA_REMOTE_CLIENT_O: u32 = 2157248525u32;
37109pub const PR_EMS_AB_DXA_REMOTE_CLIENT_T: u32 = 2157248542u32;
37110pub const PR_EMS_AB_DXA_REMOTE_CLIENT_W: u32 = 2157248543u32;
37111pub const PR_EMS_AB_DXA_REQNAME: u32 = 2157510686u32;
37112pub const PR_EMS_AB_DXA_REQNAME_A: u32 = 2157510686u32;
37113pub const PR_EMS_AB_DXA_REQNAME_W: u32 = 2157510687u32;
37114pub const PR_EMS_AB_DXA_REQ_SEQ: u32 = 2157314078u32;
37115pub const PR_EMS_AB_DXA_REQ_SEQ_A: u32 = 2157314078u32;
37116pub const PR_EMS_AB_DXA_REQ_SEQ_TIME: u32 = 2157379648u32;
37117pub const PR_EMS_AB_DXA_REQ_SEQ_USN: u32 = 2157445123u32;
37118pub const PR_EMS_AB_DXA_REQ_SEQ_W: u32 = 2157314079u32;
37119pub const PR_EMS_AB_DXA_SVR_SEQ: u32 = 2157576222u32;
37120pub const PR_EMS_AB_DXA_SVR_SEQ_A: u32 = 2157576222u32;
37121pub const PR_EMS_AB_DXA_SVR_SEQ_TIME: u32 = 2157641792u32;
37122pub const PR_EMS_AB_DXA_SVR_SEQ_USN: u32 = 2157707267u32;
37123pub const PR_EMS_AB_DXA_SVR_SEQ_W: u32 = 2157576223u32;
37124pub const PR_EMS_AB_DXA_TASK: u32 = 2157772803u32;
37125pub const PR_EMS_AB_DXA_TEMPLATE_OPTIONS: u32 = 2157838339u32;
37126pub const PR_EMS_AB_DXA_TEMPLATE_TIMESTAMP: u32 = 2157903936u32;
37127pub const PR_EMS_AB_DXA_TYPES: u32 = 2157969411u32;
37128pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST: u32 = 2158039070u32;
37129pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_A: u32 = 2158039070u32;
37130pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL: u32 = 2356613150u32;
37131pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_A: u32 = 2356613150u32;
37132pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_O: u32 = 2356609037u32;
37133pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_T: u32 = 2356613150u32;
37134pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_W: u32 = 2356613151u32;
37135pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED: u32 = 2356285470u32;
37136pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_A: u32 = 2356285470u32;
37137pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_O: u32 = 2356281357u32;
37138pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_T: u32 = 2356285470u32;
37139pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_W: u32 = 2356285471u32;
37140pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_O: u32 = 2158034957u32;
37141pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_T: u32 = 2158039070u32;
37142pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_W: u32 = 2158039071u32;
37143pub const PR_EMS_AB_EMPLOYEE_NUMBER: u32 = 2355560478u32;
37144pub const PR_EMS_AB_EMPLOYEE_NUMBER_A: u32 = 2355560478u32;
37145pub const PR_EMS_AB_EMPLOYEE_NUMBER_W: u32 = 2355560479u32;
37146pub const PR_EMS_AB_EMPLOYEE_TYPE: u32 = 2355691550u32;
37147pub const PR_EMS_AB_EMPLOYEE_TYPE_A: u32 = 2355691550u32;
37148pub const PR_EMS_AB_EMPLOYEE_TYPE_W: u32 = 2355691551u32;
37149pub const PR_EMS_AB_ENABLED: u32 = 2350972939u32;
37150pub const PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES: u32 = 2172915742u32;
37151pub const PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES_A: u32 = 2172915742u32;
37152pub const PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES_W: u32 = 2172915743u32;
37153pub const PR_EMS_AB_ENABLED_PROTOCOLS: u32 = 2172583939u32;
37154pub const PR_EMS_AB_ENABLED_PROTOCOL_CFG: u32 = 2175270923u32;
37155pub const PR_EMS_AB_ENABLE_COMPATIBILITY: u32 = 2352087051u32;
37156pub const PR_EMS_AB_ENCAPSULATION_METHOD: u32 = 2158100483u32;
37157pub const PR_EMS_AB_ENCRYPT: u32 = 2158166027u32;
37158pub const PR_EMS_AB_ENCRYPT_ALG_LIST_NA: u32 = 2151682078u32;
37159pub const PR_EMS_AB_ENCRYPT_ALG_LIST_NA_A: u32 = 2151682078u32;
37160pub const PR_EMS_AB_ENCRYPT_ALG_LIST_NA_W: u32 = 2151682079u32;
37161pub const PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER: u32 = 2151747614u32;
37162pub const PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER_A: u32 = 2151747614u32;
37163pub const PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER_W: u32 = 2151747615u32;
37164pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA: u32 = 2151874590u32;
37165pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA_A: u32 = 2151874590u32;
37166pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA_W: u32 = 2151874591u32;
37167pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER: u32 = 2151481374u32;
37168pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER_A: u32 = 2151481374u32;
37169pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER_W: u32 = 2151481375u32;
37170pub const PR_EMS_AB_EXPAND_DLS_LOCALLY: u32 = 2158231563u32;
37171pub const PR_EMS_AB_EXPIRATION_TIME: u32 = 2150105152u32;
37172pub const PR_EMS_AB_EXPORT_CONTAINERS: u32 = 2158301214u32;
37173pub const PR_EMS_AB_EXPORT_CONTAINERS_A: u32 = 2158301214u32;
37174pub const PR_EMS_AB_EXPORT_CONTAINERS_O: u32 = 2158297101u32;
37175pub const PR_EMS_AB_EXPORT_CONTAINERS_T: u32 = 2158301214u32;
37176pub const PR_EMS_AB_EXPORT_CONTAINERS_W: u32 = 2158301215u32;
37177pub const PR_EMS_AB_EXPORT_CUSTOM_RECIPIENTS: u32 = 2158362635u32;
37178pub const PR_EMS_AB_EXTENDED_CHARS_ALLOWED: u32 = 2158428171u32;
37179pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_1: u32 = 2150432798u32;
37180pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_10: u32 = 2151022622u32;
37181pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_10_A: u32 = 2151022622u32;
37182pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_10_W: u32 = 2151022623u32;
37183pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_11: u32 = 2354511902u32;
37184pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_11_A: u32 = 2354511902u32;
37185pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_11_W: u32 = 2354511903u32;
37186pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_12: u32 = 2354577438u32;
37187pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_12_A: u32 = 2354577438u32;
37188pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_12_W: u32 = 2354577439u32;
37189pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_13: u32 = 2354642974u32;
37190pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_13_A: u32 = 2354642974u32;
37191pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_13_W: u32 = 2354642975u32;
37192pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_14: u32 = 2355101726u32;
37193pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_14_A: u32 = 2355101726u32;
37194pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_14_W: u32 = 2355101727u32;
37195pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_15: u32 = 2355167262u32;
37196pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_15_A: u32 = 2355167262u32;
37197pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_15_W: u32 = 2355167263u32;
37198pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_1_A: u32 = 2150432798u32;
37199pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_1_W: u32 = 2150432799u32;
37200pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_2: u32 = 2150498334u32;
37201pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_2_A: u32 = 2150498334u32;
37202pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_2_W: u32 = 2150498335u32;
37203pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_3: u32 = 2150563870u32;
37204pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_3_A: u32 = 2150563870u32;
37205pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_3_W: u32 = 2150563871u32;
37206pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_4: u32 = 2150629406u32;
37207pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_4_A: u32 = 2150629406u32;
37208pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_4_W: u32 = 2150629407u32;
37209pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_5: u32 = 2150694942u32;
37210pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_5_A: u32 = 2150694942u32;
37211pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_5_W: u32 = 2150694943u32;
37212pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_6: u32 = 2150760478u32;
37213pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_6_A: u32 = 2150760478u32;
37214pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_6_W: u32 = 2150760479u32;
37215pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_7: u32 = 2150826014u32;
37216pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_7_A: u32 = 2150826014u32;
37217pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_7_W: u32 = 2150826015u32;
37218pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_8: u32 = 2150891550u32;
37219pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_8_A: u32 = 2150891550u32;
37220pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_8_W: u32 = 2150891551u32;
37221pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_9: u32 = 2150957086u32;
37222pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_9_A: u32 = 2150957086u32;
37223pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_9_W: u32 = 2150957087u32;
37224pub const PR_EMS_AB_EXTENSION_DATA: u32 = 2158498050u32;
37225pub const PR_EMS_AB_EXTENSION_NAME: u32 = 2158563358u32;
37226pub const PR_EMS_AB_EXTENSION_NAME_A: u32 = 2158563358u32;
37227pub const PR_EMS_AB_EXTENSION_NAME_INHERITED: u32 = 2158628894u32;
37228pub const PR_EMS_AB_EXTENSION_NAME_INHERITED_A: u32 = 2158628894u32;
37229pub const PR_EMS_AB_EXTENSION_NAME_INHERITED_W: u32 = 2158628895u32;
37230pub const PR_EMS_AB_EXTENSION_NAME_W: u32 = 2158563359u32;
37231pub const PR_EMS_AB_FACSIMILE_TELEPHONE_NUMBER: u32 = 2158694658u32;
37232pub const PR_EMS_AB_FILE_VERSION: u32 = 2158756098u32;
37233pub const PR_EMS_AB_FILTER_LOCAL_ADDRESSES: u32 = 2158821387u32;
37234pub const PR_EMS_AB_FOLDERS_CONTAINER: u32 = 2158886942u32;
37235pub const PR_EMS_AB_FOLDERS_CONTAINER_A: u32 = 2158886942u32;
37236pub const PR_EMS_AB_FOLDERS_CONTAINER_O: u32 = 2158886925u32;
37237pub const PR_EMS_AB_FOLDERS_CONTAINER_T: u32 = 2158886942u32;
37238pub const PR_EMS_AB_FOLDERS_CONTAINER_W: u32 = 2158886943u32;
37239pub const PR_EMS_AB_FOLDER_PATHNAME: u32 = 2147745822u32;
37240pub const PR_EMS_AB_FOLDER_PATHNAME_A: u32 = 2147745822u32;
37241pub const PR_EMS_AB_FOLDER_PATHNAME_W: u32 = 2147745823u32;
37242pub const PR_EMS_AB_FORM_DATA: u32 = 2355429634u32;
37243pub const PR_EMS_AB_FORWARDING_ADDRESS: u32 = 2355363870u32;
37244pub const PR_EMS_AB_FORWARDING_ADDRESS_A: u32 = 2355363870u32;
37245pub const PR_EMS_AB_FORWARDING_ADDRESS_W: u32 = 2355363871u32;
37246pub const PR_EMS_AB_GARBAGE_COLL_PERIOD: u32 = 2158952451u32;
37247pub const PR_EMS_AB_GATEWAY_LOCAL_CRED: u32 = 2159018014u32;
37248pub const PR_EMS_AB_GATEWAY_LOCAL_CRED_A: u32 = 2159018014u32;
37249pub const PR_EMS_AB_GATEWAY_LOCAL_CRED_W: u32 = 2159018015u32;
37250pub const PR_EMS_AB_GATEWAY_LOCAL_DESIG: u32 = 2159083550u32;
37251pub const PR_EMS_AB_GATEWAY_LOCAL_DESIG_A: u32 = 2159083550u32;
37252pub const PR_EMS_AB_GATEWAY_LOCAL_DESIG_W: u32 = 2159083551u32;
37253pub const PR_EMS_AB_GATEWAY_PROXY: u32 = 2159153182u32;
37254pub const PR_EMS_AB_GATEWAY_PROXY_A: u32 = 2159153182u32;
37255pub const PR_EMS_AB_GATEWAY_PROXY_W: u32 = 2159153183u32;
37256pub const PR_EMS_AB_GATEWAY_ROUTING_TREE: u32 = 2159214850u32;
37257pub const PR_EMS_AB_GENERATION_QUALIFIER: u32 = 2354249758u32;
37258pub const PR_EMS_AB_GENERATION_QUALIFIER_A: u32 = 2354249758u32;
37259pub const PR_EMS_AB_GENERATION_QUALIFIER_W: u32 = 2354249759u32;
37260pub const PR_EMS_AB_GROUP_BY_ATTR_1: u32 = 2176253982u32;
37261pub const PR_EMS_AB_GROUP_BY_ATTR_1_A: u32 = 2176253982u32;
37262pub const PR_EMS_AB_GROUP_BY_ATTR_1_W: u32 = 2176253983u32;
37263pub const PR_EMS_AB_GROUP_BY_ATTR_2: u32 = 2176319518u32;
37264pub const PR_EMS_AB_GROUP_BY_ATTR_2_A: u32 = 2176319518u32;
37265pub const PR_EMS_AB_GROUP_BY_ATTR_2_W: u32 = 2176319519u32;
37266pub const PR_EMS_AB_GROUP_BY_ATTR_3: u32 = 2176385054u32;
37267pub const PR_EMS_AB_GROUP_BY_ATTR_3_A: u32 = 2176385054u32;
37268pub const PR_EMS_AB_GROUP_BY_ATTR_3_W: u32 = 2176385055u32;
37269pub const PR_EMS_AB_GROUP_BY_ATTR_4: u32 = 2176450590u32;
37270pub const PR_EMS_AB_GROUP_BY_ATTR_4_A: u32 = 2176450590u32;
37271pub const PR_EMS_AB_GROUP_BY_ATTR_4_W: u32 = 2176450591u32;
37272pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN: u32 = 2350514206u32;
37273pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_A: u32 = 2350514206u32;
37274pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_O: u32 = 2350514189u32;
37275pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_T: u32 = 2350514206u32;
37276pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_W: u32 = 2350514207u32;
37277pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR: u32 = 2350448670u32;
37278pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR_A: u32 = 2350448670u32;
37279pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR_W: u32 = 2350448671u32;
37280pub const PR_EMS_AB_GWART_LAST_MODIFIED: u32 = 2159280192u32;
37281pub const PR_EMS_AB_HAB_CHILD_DEPARTMENTS: u32 = 2358902797u32;
37282pub const PR_EMS_AB_HAB_DEPARTMENT_MEMBERS: u32 = 2358706189u32;
37283pub const PR_EMS_AB_HAB_IS_HIERARCHICAL_GROUP: u32 = 2363293707u32;
37284pub const PR_EMS_AB_HAB_PARENT_DEPARTMENT: u32 = 2358837261u32;
37285pub const PR_EMS_AB_HAB_ROOT_DEPARTMENT: u32 = 2358771725u32;
37286pub const PR_EMS_AB_HAB_SHOW_IN_DEPARTMENTS: u32 = 2358509581u32;
37287pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS: u32 = 2159349790u32;
37288pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_A: u32 = 2159349790u32;
37289pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_O: u32 = 2159345677u32;
37290pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_T: u32 = 2159349790u32;
37291pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_W: u32 = 2159349791u32;
37292pub const PR_EMS_AB_HAS_MASTER_NCS: u32 = 2159415326u32;
37293pub const PR_EMS_AB_HAS_MASTER_NCS_A: u32 = 2159415326u32;
37294pub const PR_EMS_AB_HAS_MASTER_NCS_O: u32 = 2159411213u32;
37295pub const PR_EMS_AB_HAS_MASTER_NCS_T: u32 = 2159415326u32;
37296pub const PR_EMS_AB_HAS_MASTER_NCS_W: u32 = 2159415327u32;
37297pub const PR_EMS_AB_HELP_DATA16: u32 = 2151284994u32;
37298pub const PR_EMS_AB_HELP_DATA32: u32 = 2148532482u32;
37299pub const PR_EMS_AB_HELP_FILE_NAME: u32 = 2151350302u32;
37300pub const PR_EMS_AB_HELP_FILE_NAME_A: u32 = 2151350302u32;
37301pub const PR_EMS_AB_HELP_FILE_NAME_W: u32 = 2151350303u32;
37302pub const PR_EMS_AB_HEURISTICS: u32 = 2159476739u32;
37303pub const PR_EMS_AB_HIDE_DL_MEMBERSHIP: u32 = 2159542283u32;
37304pub const PR_EMS_AB_HIDE_FROM_ADDRESS_BOOK: u32 = 2159607819u32;
37305pub const PR_EMS_AB_HIERARCHY_PATH: u32 = 4294508574u32;
37306pub const PR_EMS_AB_HIERARCHY_PATH_A: u32 = 4294508574u32;
37307pub const PR_EMS_AB_HIERARCHY_PATH_W: u32 = 4294508575u32;
37308pub const PR_EMS_AB_HOME_MDB: u32 = 2147876894u32;
37309pub const PR_EMS_AB_HOME_MDB_A: u32 = 2147876894u32;
37310pub const PR_EMS_AB_HOME_MDB_BL: u32 = 2148798494u32;
37311pub const PR_EMS_AB_HOME_MDB_BL_A: u32 = 2148798494u32;
37312pub const PR_EMS_AB_HOME_MDB_BL_O: u32 = 2148794381u32;
37313pub const PR_EMS_AB_HOME_MDB_BL_T: u32 = 2148798494u32;
37314pub const PR_EMS_AB_HOME_MDB_BL_W: u32 = 2148798495u32;
37315pub const PR_EMS_AB_HOME_MDB_O: u32 = 2147876877u32;
37316pub const PR_EMS_AB_HOME_MDB_T: u32 = 2147876894u32;
37317pub const PR_EMS_AB_HOME_MDB_W: u32 = 2147876895u32;
37318pub const PR_EMS_AB_HOME_MTA: u32 = 2147942430u32;
37319pub const PR_EMS_AB_HOME_MTA_A: u32 = 2147942430u32;
37320pub const PR_EMS_AB_HOME_MTA_O: u32 = 2147942413u32;
37321pub const PR_EMS_AB_HOME_MTA_T: u32 = 2147942430u32;
37322pub const PR_EMS_AB_HOME_MTA_W: u32 = 2147942431u32;
37323pub const PR_EMS_AB_HOME_PUBLIC_SERVER: u32 = 2151612446u32;
37324pub const PR_EMS_AB_HOME_PUBLIC_SERVER_A: u32 = 2151612446u32;
37325pub const PR_EMS_AB_HOME_PUBLIC_SERVER_O: u32 = 2151612429u32;
37326pub const PR_EMS_AB_HOME_PUBLIC_SERVER_T: u32 = 2151612446u32;
37327pub const PR_EMS_AB_HOME_PUBLIC_SERVER_W: u32 = 2151612447u32;
37328pub const PR_EMS_AB_HOUSE_IDENTIFIER: u32 = 2354315294u32;
37329pub const PR_EMS_AB_HOUSE_IDENTIFIER_A: u32 = 2354315294u32;
37330pub const PR_EMS_AB_HOUSE_IDENTIFIER_W: u32 = 2354315295u32;
37331pub const PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES: u32 = 2175340574u32;
37332pub const PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES_A: u32 = 2175340574u32;
37333pub const PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES_W: u32 = 2175340575u32;
37334pub const PR_EMS_AB_HTTP_PUB_GAL: u32 = 2174418955u32;
37335pub const PR_EMS_AB_HTTP_PUB_GAL_LIMIT: u32 = 2174484483u32;
37336pub const PR_EMS_AB_HTTP_PUB_PF: u32 = 2174619906u32;
37337pub const PR_EMS_AB_HTTP_SERVERS: u32 = 2175471646u32;
37338pub const PR_EMS_AB_HTTP_SERVERS_A: u32 = 2175471646u32;
37339pub const PR_EMS_AB_HTTP_SERVERS_W: u32 = 2175471647u32;
37340pub const PR_EMS_AB_IMPORTED_FROM: u32 = 2151809054u32;
37341pub const PR_EMS_AB_IMPORTED_FROM_A: u32 = 2151809054u32;
37342pub const PR_EMS_AB_IMPORTED_FROM_W: u32 = 2151809055u32;
37343pub const PR_EMS_AB_IMPORT_CONTAINER: u32 = 2159673374u32;
37344pub const PR_EMS_AB_IMPORT_CONTAINER_A: u32 = 2159673374u32;
37345pub const PR_EMS_AB_IMPORT_CONTAINER_O: u32 = 2159673357u32;
37346pub const PR_EMS_AB_IMPORT_CONTAINER_T: u32 = 2159673374u32;
37347pub const PR_EMS_AB_IMPORT_CONTAINER_W: u32 = 2159673375u32;
37348pub const PR_EMS_AB_IMPORT_SENSITIVITY: u32 = 2159738883u32;
37349pub const PR_EMS_AB_INBOUND_ACCEPT_ALL: u32 = 2350907403u32;
37350pub const PR_EMS_AB_INBOUND_DN: u32 = 2350776350u32;
37351pub const PR_EMS_AB_INBOUND_DN_A: u32 = 2350776350u32;
37352pub const PR_EMS_AB_INBOUND_DN_O: u32 = 2350776333u32;
37353pub const PR_EMS_AB_INBOUND_DN_T: u32 = 2350776350u32;
37354pub const PR_EMS_AB_INBOUND_DN_W: u32 = 2350776351u32;
37355pub const PR_EMS_AB_INBOUND_HOST: u32 = 2173571102u32;
37356pub const PR_EMS_AB_INBOUND_HOST_A: u32 = 2173571102u32;
37357pub const PR_EMS_AB_INBOUND_HOST_W: u32 = 2173571103u32;
37358pub const PR_EMS_AB_INBOUND_NEWSFEED: u32 = 2173894686u32;
37359pub const PR_EMS_AB_INBOUND_NEWSFEED_A: u32 = 2173894686u32;
37360pub const PR_EMS_AB_INBOUND_NEWSFEED_TYPE: u32 = 2350841867u32;
37361pub const PR_EMS_AB_INBOUND_NEWSFEED_W: u32 = 2173894687u32;
37362pub const PR_EMS_AB_INBOUND_SITES: u32 = 2159808542u32;
37363pub const PR_EMS_AB_INBOUND_SITES_A: u32 = 2159808542u32;
37364pub const PR_EMS_AB_INBOUND_SITES_O: u32 = 2159804429u32;
37365pub const PR_EMS_AB_INBOUND_SITES_T: u32 = 2159808542u32;
37366pub const PR_EMS_AB_INBOUND_SITES_W: u32 = 2159808543u32;
37367pub const PR_EMS_AB_INCOMING_MSG_SIZE_LIMIT: u32 = 2173698051u32;
37368pub const PR_EMS_AB_INCOMING_PASSWORD: u32 = 2175729922u32;
37369pub const PR_EMS_AB_INSADMIN: u32 = 2177171486u32;
37370pub const PR_EMS_AB_INSADMIN_A: u32 = 2177171486u32;
37371pub const PR_EMS_AB_INSADMIN_O: u32 = 2177171469u32;
37372pub const PR_EMS_AB_INSADMIN_T: u32 = 2177171486u32;
37373pub const PR_EMS_AB_INSADMIN_W: u32 = 2177171487u32;
37374pub const PR_EMS_AB_INSTANCE_TYPE: u32 = 2159869955u32;
37375pub const PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER: u32 = 2159939614u32;
37376pub const PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER_A: u32 = 2159939614u32;
37377pub const PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER_W: u32 = 2159939615u32;
37378pub const PR_EMS_AB_INVOCATION_ID: u32 = 2160001282u32;
37379pub const PR_EMS_AB_IS_DELETED: u32 = 2160066571u32;
37380pub const PR_EMS_AB_IS_MASTER: u32 = 4294639627u32;
37381pub const PR_EMS_AB_IS_MEMBER_OF_DL: u32 = 2148007949u32;
37382pub const PR_EMS_AB_IS_MEMBER_OF_DL_A: u32 = 2148012062u32;
37383pub const PR_EMS_AB_IS_MEMBER_OF_DL_O: u32 = 2148007949u32;
37384pub const PR_EMS_AB_IS_MEMBER_OF_DL_T: u32 = 2148012062u32;
37385pub const PR_EMS_AB_IS_MEMBER_OF_DL_W: u32 = 2148012063u32;
37386pub const PR_EMS_AB_IS_SINGLE_VALUED: u32 = 2160132107u32;
37387pub const PR_EMS_AB_KCC_STATUS: u32 = 2160201986u32;
37388pub const PR_EMS_AB_KM_SERVER: u32 = 2148335646u32;
37389pub const PR_EMS_AB_KM_SERVER_A: u32 = 2148335646u32;
37390pub const PR_EMS_AB_KM_SERVER_O: u32 = 2148335629u32;
37391pub const PR_EMS_AB_KM_SERVER_T: u32 = 2148335646u32;
37392pub const PR_EMS_AB_KM_SERVER_W: u32 = 2148335647u32;
37393pub const PR_EMS_AB_KNOWLEDGE_INFORMATION: u32 = 2160267294u32;
37394pub const PR_EMS_AB_KNOWLEDGE_INFORMATION_A: u32 = 2160267294u32;
37395pub const PR_EMS_AB_KNOWLEDGE_INFORMATION_W: u32 = 2160267295u32;
37396pub const PR_EMS_AB_LABELEDURI: u32 = 2354118686u32;
37397pub const PR_EMS_AB_LABELEDURI_A: u32 = 2354118686u32;
37398pub const PR_EMS_AB_LABELEDURI_W: u32 = 2354118687u32;
37399pub const PR_EMS_AB_LANGUAGE: u32 = 2172125187u32;
37400pub const PR_EMS_AB_LANGUAGE_ISO639: u32 = 2355888158u32;
37401pub const PR_EMS_AB_LANGUAGE_ISO639_A: u32 = 2355888158u32;
37402pub const PR_EMS_AB_LANGUAGE_ISO639_W: u32 = 2355888159u32;
37403pub const PR_EMS_AB_LDAP_DISPLAY_NAME: u32 = 2171670558u32;
37404pub const PR_EMS_AB_LDAP_DISPLAY_NAME_A: u32 = 2171670558u32;
37405pub const PR_EMS_AB_LDAP_DISPLAY_NAME_W: u32 = 2171670559u32;
37406pub const PR_EMS_AB_LDAP_SEARCH_CFG: u32 = 2350710787u32;
37407pub const PR_EMS_AB_LINE_WRAP: u32 = 2160328707u32;
37408pub const PR_EMS_AB_LINK_ID: u32 = 2160394243u32;
37409pub const PR_EMS_AB_LIST_PUBLIC_FOLDERS: u32 = 2354053131u32;
37410pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD: u32 = 2160459806u32;
37411pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_A: u32 = 2160459806u32;
37412pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS: u32 = 2160525342u32;
37413pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS_A: u32 = 2160525342u32;
37414pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS_W: u32 = 2160525343u32;
37415pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_W: u32 = 2160459807u32;
37416pub const PR_EMS_AB_LOCAL_INITIAL_TURN: u32 = 2160590859u32;
37417pub const PR_EMS_AB_LOCAL_SCOPE: u32 = 2160660510u32;
37418pub const PR_EMS_AB_LOCAL_SCOPE_A: u32 = 2160660510u32;
37419pub const PR_EMS_AB_LOCAL_SCOPE_O: u32 = 2160656397u32;
37420pub const PR_EMS_AB_LOCAL_SCOPE_T: u32 = 2160660510u32;
37421pub const PR_EMS_AB_LOCAL_SCOPE_W: u32 = 2160660511u32;
37422pub const PR_EMS_AB_LOG_FILENAME: u32 = 2160721950u32;
37423pub const PR_EMS_AB_LOG_FILENAME_A: u32 = 2160721950u32;
37424pub const PR_EMS_AB_LOG_FILENAME_W: u32 = 2160721951u32;
37425pub const PR_EMS_AB_LOG_ROLLOVER_INTERVAL: u32 = 2160787459u32;
37426pub const PR_EMS_AB_MAIL_DROP: u32 = 2355298334u32;
37427pub const PR_EMS_AB_MAIL_DROP_A: u32 = 2355298334u32;
37428pub const PR_EMS_AB_MAIL_DROP_W: u32 = 2355298335u32;
37429pub const PR_EMS_AB_MAINTAIN_AUTOREPLY_HISTORY: u32 = 2160853003u32;
37430pub const PR_EMS_AB_MANAGER: u32 = 2147811341u32;
37431pub const PR_EMS_AB_MANAGER_A: u32 = 2147811358u32;
37432pub const PR_EMS_AB_MANAGER_O: u32 = 2147811341u32;
37433pub const PR_EMS_AB_MANAGER_T: u32 = 2147811358u32;
37434pub const PR_EMS_AB_MANAGER_W: u32 = 2147811359u32;
37435pub const PR_EMS_AB_MAPI_DISPLAY_TYPE: u32 = 2160918531u32;
37436pub const PR_EMS_AB_MAPI_ID: u32 = 2160984067u32;
37437pub const PR_EMS_AB_MAXIMUM_OBJECT_ID: u32 = 2171142402u32;
37438pub const PR_EMS_AB_MDB_BACKOFF_INTERVAL: u32 = 2161049603u32;
37439pub const PR_EMS_AB_MDB_MSG_TIME_OUT_PERIOD: u32 = 2161115139u32;
37440pub const PR_EMS_AB_MDB_OVER_QUOTA_LIMIT: u32 = 2161180675u32;
37441pub const PR_EMS_AB_MDB_STORAGE_QUOTA: u32 = 2161246211u32;
37442pub const PR_EMS_AB_MDB_UNREAD_LIMIT: u32 = 2161311747u32;
37443pub const PR_EMS_AB_MDB_USE_DEFAULTS: u32 = 2161377291u32;
37444pub const PR_EMS_AB_MEMBER: u32 = 2148073485u32;
37445pub const PR_EMS_AB_MEMBER_A: u32 = 2148077598u32;
37446pub const PR_EMS_AB_MEMBER_O: u32 = 2148073485u32;
37447pub const PR_EMS_AB_MEMBER_T: u32 = 2148077598u32;
37448pub const PR_EMS_AB_MEMBER_W: u32 = 2148077599u32;
37449pub const PR_EMS_AB_MESSAGE_TRACKING_ENABLED: u32 = 2161442827u32;
37450pub const PR_EMS_AB_MIME_TYPES: u32 = 2350645506u32;
37451pub const PR_EMS_AB_MODERATED: u32 = 2175533067u32;
37452pub const PR_EMS_AB_MODERATOR: u32 = 2174287902u32;
37453pub const PR_EMS_AB_MODERATOR_A: u32 = 2174287902u32;
37454pub const PR_EMS_AB_MODERATOR_W: u32 = 2174287903u32;
37455pub const PR_EMS_AB_MONITORED_CONFIGURATIONS: u32 = 2161709086u32;
37456pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_A: u32 = 2161709086u32;
37457pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_O: u32 = 2161704973u32;
37458pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_T: u32 = 2161709086u32;
37459pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_W: u32 = 2161709087u32;
37460pub const PR_EMS_AB_MONITORED_SERVERS: u32 = 2161774622u32;
37461pub const PR_EMS_AB_MONITORED_SERVERS_A: u32 = 2161774622u32;
37462pub const PR_EMS_AB_MONITORED_SERVERS_O: u32 = 2161770509u32;
37463pub const PR_EMS_AB_MONITORED_SERVERS_T: u32 = 2161774622u32;
37464pub const PR_EMS_AB_MONITORED_SERVERS_W: u32 = 2161774623u32;
37465pub const PR_EMS_AB_MONITORED_SERVICES: u32 = 2161840158u32;
37466pub const PR_EMS_AB_MONITORED_SERVICES_A: u32 = 2161840158u32;
37467pub const PR_EMS_AB_MONITORED_SERVICES_W: u32 = 2161840159u32;
37468pub const PR_EMS_AB_MONITORING_ALERT_DELAY: u32 = 2161901571u32;
37469pub const PR_EMS_AB_MONITORING_ALERT_UNITS: u32 = 2161967107u32;
37470pub const PR_EMS_AB_MONITORING_AVAILABILITY_STYLE: u32 = 2162032643u32;
37471pub const PR_EMS_AB_MONITORING_AVAILABILITY_WINDOW: u32 = 2162098434u32;
37472pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL: u32 = 2162167838u32;
37473pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_A: u32 = 2162167838u32;
37474pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_O: u32 = 2162163725u32;
37475pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_T: u32 = 2162167838u32;
37476pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_W: u32 = 2162167839u32;
37477pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC: u32 = 2162233374u32;
37478pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_A: u32 = 2162233374u32;
37479pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_O: u32 = 2162229261u32;
37480pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_T: u32 = 2162233374u32;
37481pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_W: u32 = 2162233375u32;
37482pub const PR_EMS_AB_MONITORING_ESCALATION_PROCEDURE: u32 = 2162299138u32;
37483pub const PR_EMS_AB_MONITORING_HOTSITE_POLL_INTERVAL: u32 = 2162360323u32;
37484pub const PR_EMS_AB_MONITORING_HOTSITE_POLL_UNITS: u32 = 2162425859u32;
37485pub const PR_EMS_AB_MONITORING_MAIL_UPDATE_INTERVAL: u32 = 2162491395u32;
37486pub const PR_EMS_AB_MONITORING_MAIL_UPDATE_UNITS: u32 = 2162556931u32;
37487pub const PR_EMS_AB_MONITORING_NORMAL_POLL_INTERVAL: u32 = 2162622467u32;
37488pub const PR_EMS_AB_MONITORING_NORMAL_POLL_UNITS: u32 = 2162688003u32;
37489pub const PR_EMS_AB_MONITORING_RECIPIENTS: u32 = 2162757662u32;
37490pub const PR_EMS_AB_MONITORING_RECIPIENTS_A: u32 = 2162757662u32;
37491pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR: u32 = 2162823198u32;
37492pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_A: u32 = 2162823198u32;
37493pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_O: u32 = 2162819085u32;
37494pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_T: u32 = 2162823198u32;
37495pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_W: u32 = 2162823199u32;
37496pub const PR_EMS_AB_MONITORING_RECIPIENTS_O: u32 = 2162753549u32;
37497pub const PR_EMS_AB_MONITORING_RECIPIENTS_T: u32 = 2162757662u32;
37498pub const PR_EMS_AB_MONITORING_RECIPIENTS_W: u32 = 2162757663u32;
37499pub const PR_EMS_AB_MONITORING_RPC_UPDATE_INTERVAL: u32 = 2162884611u32;
37500pub const PR_EMS_AB_MONITORING_RPC_UPDATE_UNITS: u32 = 2162950147u32;
37501pub const PR_EMS_AB_MONITORING_WARNING_DELAY: u32 = 2163015683u32;
37502pub const PR_EMS_AB_MONITORING_WARNING_UNITS: u32 = 2163081219u32;
37503pub const PR_EMS_AB_MONITOR_CLOCK: u32 = 2161508363u32;
37504pub const PR_EMS_AB_MONITOR_SERVERS: u32 = 2161573899u32;
37505pub const PR_EMS_AB_MONITOR_SERVICES: u32 = 2161639435u32;
37506pub const PR_EMS_AB_MTA_LOCAL_CRED: u32 = 2163146782u32;
37507pub const PR_EMS_AB_MTA_LOCAL_CRED_A: u32 = 2163146782u32;
37508pub const PR_EMS_AB_MTA_LOCAL_CRED_W: u32 = 2163146783u32;
37509pub const PR_EMS_AB_MTA_LOCAL_DESIG: u32 = 2163212318u32;
37510pub const PR_EMS_AB_MTA_LOCAL_DESIG_A: u32 = 2163212318u32;
37511pub const PR_EMS_AB_MTA_LOCAL_DESIG_W: u32 = 2163212319u32;
37512pub const PR_EMS_AB_NETWORK_ADDRESS: u32 = 2171605022u32;
37513pub const PR_EMS_AB_NETWORK_ADDRESS_A: u32 = 2171605022u32;
37514pub const PR_EMS_AB_NETWORK_ADDRESS_W: u32 = 2171605023u32;
37515pub const PR_EMS_AB_NEWSFEED_TYPE: u32 = 2173960195u32;
37516pub const PR_EMS_AB_NEWSGROUP: u32 = 2174222366u32;
37517pub const PR_EMS_AB_NEWSGROUP_A: u32 = 2174222366u32;
37518pub const PR_EMS_AB_NEWSGROUP_LIST: u32 = 2174091522u32;
37519pub const PR_EMS_AB_NEWSGROUP_W: u32 = 2174222367u32;
37520pub const PR_EMS_AB_NNTP_CHARACTER_SET: u32 = 2172452894u32;
37521pub const PR_EMS_AB_NNTP_CHARACTER_SET_A: u32 = 2172452894u32;
37522pub const PR_EMS_AB_NNTP_CHARACTER_SET_W: u32 = 2172452895u32;
37523pub const PR_EMS_AB_NNTP_CONTENT_FORMAT: u32 = 2171994142u32;
37524pub const PR_EMS_AB_NNTP_CONTENT_FORMAT_A: u32 = 2171994142u32;
37525pub const PR_EMS_AB_NNTP_CONTENT_FORMAT_W: u32 = 2171994143u32;
37526pub const PR_EMS_AB_NNTP_DISTRIBUTIONS: u32 = 2174160926u32;
37527pub const PR_EMS_AB_NNTP_DISTRIBUTIONS_A: u32 = 2174160926u32;
37528pub const PR_EMS_AB_NNTP_DISTRIBUTIONS_FLAG: u32 = 2175008779u32;
37529pub const PR_EMS_AB_NNTP_DISTRIBUTIONS_W: u32 = 2174160927u32;
37530pub const PR_EMS_AB_NNTP_NEWSFEEDS: u32 = 2175143966u32;
37531pub const PR_EMS_AB_NNTP_NEWSFEEDS_A: u32 = 2175143966u32;
37532pub const PR_EMS_AB_NNTP_NEWSFEEDS_O: u32 = 2175139853u32;
37533pub const PR_EMS_AB_NNTP_NEWSFEEDS_T: u32 = 2175143966u32;
37534pub const PR_EMS_AB_NNTP_NEWSFEEDS_W: u32 = 2175143967u32;
37535pub const PR_EMS_AB_NT_MACHINE_NAME: u32 = 2163408926u32;
37536pub const PR_EMS_AB_NT_MACHINE_NAME_A: u32 = 2163408926u32;
37537pub const PR_EMS_AB_NT_MACHINE_NAME_W: u32 = 2163408927u32;
37538pub const PR_EMS_AB_NT_SECURITY_DESCRIPTOR: u32 = 2148729090u32;
37539pub const PR_EMS_AB_NUM_OF_OPEN_RETRIES: u32 = 2163474435u32;
37540pub const PR_EMS_AB_NUM_OF_TRANSFER_RETRIES: u32 = 2163539971u32;
37541pub const PR_EMS_AB_N_ADDRESS: u32 = 2163278082u32;
37542pub const PR_EMS_AB_N_ADDRESS_TYPE: u32 = 2163343363u32;
37543pub const PR_EMS_AB_OBJECT_CLASS_CATEGORY: u32 = 2163605507u32;
37544pub const PR_EMS_AB_OBJECT_GUID: u32 = 2355953922u32;
37545pub const PR_EMS_AB_OBJECT_OID: u32 = 4294574338u32;
37546pub const PR_EMS_AB_OBJECT_VERSION: u32 = 2163671043u32;
37547pub const PR_EMS_AB_OBJ_DIST_NAME: u32 = 2151415838u32;
37548pub const PR_EMS_AB_OBJ_DIST_NAME_A: u32 = 2151415838u32;
37549pub const PR_EMS_AB_OBJ_DIST_NAME_O: u32 = 2151415821u32;
37550pub const PR_EMS_AB_OBJ_DIST_NAME_T: u32 = 2151415838u32;
37551pub const PR_EMS_AB_OBJ_DIST_NAME_W: u32 = 2151415839u32;
37552pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS: u32 = 2177306654u32;
37553pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_A: u32 = 2177306654u32;
37554pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_O: u32 = 2177302541u32;
37555pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_T: u32 = 2177306654u32;
37556pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_W: u32 = 2177306655u32;
37557pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS: u32 = 2163740702u32;
37558pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_A: u32 = 2163740702u32;
37559pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_O: u32 = 2163736589u32;
37560pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_T: u32 = 2163740702u32;
37561pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_W: u32 = 2163740703u32;
37562pub const PR_EMS_AB_OFF_LINE_AB_SCHEDULE: u32 = 2163802370u32;
37563pub const PR_EMS_AB_OFF_LINE_AB_SERVER: u32 = 2163867678u32;
37564pub const PR_EMS_AB_OFF_LINE_AB_SERVER_A: u32 = 2163867678u32;
37565pub const PR_EMS_AB_OFF_LINE_AB_SERVER_O: u32 = 2163867661u32;
37566pub const PR_EMS_AB_OFF_LINE_AB_SERVER_T: u32 = 2163867678u32;
37567pub const PR_EMS_AB_OFF_LINE_AB_SERVER_W: u32 = 2163867679u32;
37568pub const PR_EMS_AB_OFF_LINE_AB_STYLE: u32 = 2163933187u32;
37569pub const PR_EMS_AB_OID_TYPE: u32 = 2163998723u32;
37570pub const PR_EMS_AB_OM_OBJECT_CLASS: u32 = 2164064514u32;
37571pub const PR_EMS_AB_OM_SYNTAX: u32 = 2164129795u32;
37572pub const PR_EMS_AB_OOF_REPLY_TO_ORIGINATOR: u32 = 2164195339u32;
37573pub const PR_EMS_AB_OPEN_RETRY_INTERVAL: u32 = 2164260867u32;
37574pub const PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME: u32 = 2164396062u32;
37575pub const PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME_A: u32 = 2164396062u32;
37576pub const PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME_W: u32 = 2164396063u32;
37577pub const PR_EMS_AB_ORGANIZATION_NAME: u32 = 2164330526u32;
37578pub const PR_EMS_AB_ORGANIZATION_NAME_A: u32 = 2164330526u32;
37579pub const PR_EMS_AB_ORGANIZATION_NAME_W: u32 = 2164330527u32;
37580pub const PR_EMS_AB_ORG_UNIT_ROOT_DN: u32 = 2359820318u32;
37581pub const PR_EMS_AB_ORIGINAL_DISPLAY_TABLE: u32 = 2164457730u32;
37582pub const PR_EMS_AB_ORIGINAL_DISPLAY_TABLE_MSDOS: u32 = 2164523266u32;
37583pub const PR_EMS_AB_OTHER_RECIPS: u32 = 4026531853u32;
37584pub const PR_EMS_AB_OUTBOUND_HOST: u32 = 2173501698u32;
37585pub const PR_EMS_AB_OUTBOUND_HOST_TYPE: u32 = 2175795211u32;
37586pub const PR_EMS_AB_OUTBOUND_NEWSFEED: u32 = 2174025758u32;
37587pub const PR_EMS_AB_OUTBOUND_NEWSFEED_A: u32 = 2174025758u32;
37588pub const PR_EMS_AB_OUTBOUND_NEWSFEED_W: u32 = 2174025759u32;
37589pub const PR_EMS_AB_OUTBOUND_SITES: u32 = 2164592670u32;
37590pub const PR_EMS_AB_OUTBOUND_SITES_A: u32 = 2164592670u32;
37591pub const PR_EMS_AB_OUTBOUND_SITES_O: u32 = 2164588557u32;
37592pub const PR_EMS_AB_OUTBOUND_SITES_T: u32 = 2164592670u32;
37593pub const PR_EMS_AB_OUTBOUND_SITES_W: u32 = 2164592671u32;
37594pub const PR_EMS_AB_OUTGOING_MSG_SIZE_LIMIT: u32 = 2173632515u32;
37595pub const PR_EMS_AB_OVERRIDE_NNTP_CONTENT_FORMAT: u32 = 2177237003u32;
37596pub const PR_EMS_AB_OWA_SERVER: u32 = 2355494942u32;
37597pub const PR_EMS_AB_OWA_SERVER_A: u32 = 2355494942u32;
37598pub const PR_EMS_AB_OWA_SERVER_W: u32 = 2355494943u32;
37599pub const PR_EMS_AB_OWNER: u32 = 2148270110u32;
37600pub const PR_EMS_AB_OWNER_A: u32 = 2148270110u32;
37601pub const PR_EMS_AB_OWNER_BL: u32 = 2149847070u32;
37602pub const PR_EMS_AB_OWNER_BL_A: u32 = 2149847070u32;
37603pub const PR_EMS_AB_OWNER_BL_O: u32 = 2149842957u32;
37604pub const PR_EMS_AB_OWNER_BL_T: u32 = 2149847070u32;
37605pub const PR_EMS_AB_OWNER_BL_W: u32 = 2149847071u32;
37606pub const PR_EMS_AB_OWNER_O: u32 = 2148270093u32;
37607pub const PR_EMS_AB_OWNER_T: u32 = 2148270110u32;
37608pub const PR_EMS_AB_OWNER_W: u32 = 2148270111u32;
37609pub const PR_EMS_AB_PARENT_ENTRYID: u32 = 4294705410u32;
37610pub const PR_EMS_AB_PERIOD_REPL_STAGGER: u32 = 2164981763u32;
37611pub const PR_EMS_AB_PERIOD_REP_SYNC_TIMES: u32 = 2164916482u32;
37612pub const PR_EMS_AB_PERSONAL_TITLE: u32 = 2355822622u32;
37613pub const PR_EMS_AB_PERSONAL_TITLE_A: u32 = 2355822622u32;
37614pub const PR_EMS_AB_PERSONAL_TITLE_W: u32 = 2355822623u32;
37615pub const PR_EMS_AB_PER_MSG_DIALOG_DISPLAY_TABLE: u32 = 2164785410u32;
37616pub const PR_EMS_AB_PER_RECIP_DIALOG_DISPLAY_TABLE: u32 = 2164850946u32;
37617pub const PR_EMS_AB_PF_CONTACTS: u32 = 2151157790u32;
37618pub const PR_EMS_AB_PF_CONTACTS_A: u32 = 2151157790u32;
37619pub const PR_EMS_AB_PF_CONTACTS_O: u32 = 2151153677u32;
37620pub const PR_EMS_AB_PF_CONTACTS_T: u32 = 2151157790u32;
37621pub const PR_EMS_AB_PF_CONTACTS_W: u32 = 2151157791u32;
37622pub const PR_EMS_AB_PHONETIC_COMPANY_NAME: u32 = 2358312990u32;
37623pub const PR_EMS_AB_PHONETIC_COMPANY_NAME_A: u32 = 2358312990u32;
37624pub const PR_EMS_AB_PHONETIC_COMPANY_NAME_W: u32 = 2358312991u32;
37625pub const PR_EMS_AB_PHONETIC_DEPARTMENT_NAME: u32 = 2358247454u32;
37626pub const PR_EMS_AB_PHONETIC_DEPARTMENT_NAME_A: u32 = 2358247454u32;
37627pub const PR_EMS_AB_PHONETIC_DEPARTMENT_NAME_W: u32 = 2358247455u32;
37628pub const PR_EMS_AB_PHONETIC_DISPLAY_NAME: u32 = 2358378526u32;
37629pub const PR_EMS_AB_PHONETIC_DISPLAY_NAME_A: u32 = 2358378526u32;
37630pub const PR_EMS_AB_PHONETIC_DISPLAY_NAME_W: u32 = 2358378527u32;
37631pub const PR_EMS_AB_PHONETIC_GIVEN_NAME: u32 = 2358116382u32;
37632pub const PR_EMS_AB_PHONETIC_GIVEN_NAME_A: u32 = 2358116382u32;
37633pub const PR_EMS_AB_PHONETIC_GIVEN_NAME_W: u32 = 2358116383u32;
37634pub const PR_EMS_AB_PHONETIC_SURNAME: u32 = 2358181918u32;
37635pub const PR_EMS_AB_PHONETIC_SURNAME_A: u32 = 2358181918u32;
37636pub const PR_EMS_AB_PHONETIC_SURNAME_W: u32 = 2358181919u32;
37637pub const PR_EMS_AB_POP_CHARACTER_SET: u32 = 2172190750u32;
37638pub const PR_EMS_AB_POP_CHARACTER_SET_A: u32 = 2172190750u32;
37639pub const PR_EMS_AB_POP_CHARACTER_SET_W: u32 = 2172190751u32;
37640pub const PR_EMS_AB_POP_CONTENT_FORMAT: u32 = 2172059678u32;
37641pub const PR_EMS_AB_POP_CONTENT_FORMAT_A: u32 = 2172059678u32;
37642pub const PR_EMS_AB_POP_CONTENT_FORMAT_W: u32 = 2172059679u32;
37643pub const PR_EMS_AB_PORT_NUMBER: u32 = 2176122883u32;
37644pub const PR_EMS_AB_POSTAL_ADDRESS: u32 = 2165051650u32;
37645pub const PR_EMS_AB_PREFERRED_DELIVERY_METHOD: u32 = 2165116931u32;
37646pub const PR_EMS_AB_PRESERVE_INTERNET_CONTENT: u32 = 2351038475u32;
37647pub const PR_EMS_AB_PRMD: u32 = 2165178398u32;
37648pub const PR_EMS_AB_PRMD_A: u32 = 2165178398u32;
37649pub const PR_EMS_AB_PRMD_W: u32 = 2165178399u32;
37650pub const PR_EMS_AB_PROMO_EXPIRATION: u32 = 2176974912u32;
37651pub const PR_EMS_AB_PROTOCOL_SETTINGS: u32 = 2176192542u32;
37652pub const PR_EMS_AB_PROTOCOL_SETTINGS_A: u32 = 2176192542u32;
37653pub const PR_EMS_AB_PROTOCOL_SETTINGS_W: u32 = 2176192543u32;
37654pub const PR_EMS_AB_PROXY_ADDRESSES: u32 = 2148470814u32;
37655pub const PR_EMS_AB_PROXY_ADDRESSES_A: u32 = 2148470814u32;
37656pub const PR_EMS_AB_PROXY_ADDRESSES_W: u32 = 2148470815u32;
37657pub const PR_EMS_AB_PROXY_GENERATION_ENABLED: u32 = 2175860747u32;
37658pub const PR_EMS_AB_PROXY_GENERATOR_DLL: u32 = 2165243934u32;
37659pub const PR_EMS_AB_PROXY_GENERATOR_DLL_A: u32 = 2165243934u32;
37660pub const PR_EMS_AB_PROXY_GENERATOR_DLL_W: u32 = 2165243935u32;
37661pub const PR_EMS_AB_PUBLIC_DELEGATES: u32 = 2148859917u32;
37662pub const PR_EMS_AB_PUBLIC_DELEGATES_A: u32 = 2148864030u32;
37663pub const PR_EMS_AB_PUBLIC_DELEGATES_BL: u32 = 2165313566u32;
37664pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_A: u32 = 2165313566u32;
37665pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_O: u32 = 2165309453u32;
37666pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_T: u32 = 2165313566u32;
37667pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_W: u32 = 2165313567u32;
37668pub const PR_EMS_AB_PUBLIC_DELEGATES_O: u32 = 2148859917u32;
37669pub const PR_EMS_AB_PUBLIC_DELEGATES_T: u32 = 2148864030u32;
37670pub const PR_EMS_AB_PUBLIC_DELEGATES_W: u32 = 2148864031u32;
37671pub const PR_EMS_AB_P_SELECTOR: u32 = 2164654338u32;
37672pub const PR_EMS_AB_P_SELECTOR_INBOUND: u32 = 2164719874u32;
37673pub const PR_EMS_AB_QUOTA_NOTIFICATION_SCHEDULE: u32 = 2165375234u32;
37674pub const PR_EMS_AB_QUOTA_NOTIFICATION_STYLE: u32 = 2165440515u32;
37675pub const PR_EMS_AB_RANGE_LOWER: u32 = 2165506051u32;
37676pub const PR_EMS_AB_RANGE_UPPER: u32 = 2165571587u32;
37677pub const PR_EMS_AB_RAS_ACCOUNT: u32 = 2175598622u32;
37678pub const PR_EMS_AB_RAS_ACCOUNT_A: u32 = 2175598622u32;
37679pub const PR_EMS_AB_RAS_ACCOUNT_W: u32 = 2175598623u32;
37680pub const PR_EMS_AB_RAS_CALLBACK_NUMBER: u32 = 2165637150u32;
37681pub const PR_EMS_AB_RAS_CALLBACK_NUMBER_A: u32 = 2165637150u32;
37682pub const PR_EMS_AB_RAS_CALLBACK_NUMBER_W: u32 = 2165637151u32;
37683pub const PR_EMS_AB_RAS_PASSWORD: u32 = 2175664386u32;
37684pub const PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME: u32 = 2165768222u32;
37685pub const PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME_A: u32 = 2165768222u32;
37686pub const PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME_W: u32 = 2165768223u32;
37687pub const PR_EMS_AB_RAS_PHONE_NUMBER: u32 = 2165702686u32;
37688pub const PR_EMS_AB_RAS_PHONE_NUMBER_A: u32 = 2165702686u32;
37689pub const PR_EMS_AB_RAS_PHONE_NUMBER_W: u32 = 2165702687u32;
37690pub const PR_EMS_AB_RAS_REMOTE_SRVR_NAME: u32 = 2165833758u32;
37691pub const PR_EMS_AB_RAS_REMOTE_SRVR_NAME_A: u32 = 2165833758u32;
37692pub const PR_EMS_AB_RAS_REMOTE_SRVR_NAME_W: u32 = 2165833759u32;
37693pub const PR_EMS_AB_REFERRAL_LIST: u32 = 2174947358u32;
37694pub const PR_EMS_AB_REFERRAL_LIST_A: u32 = 2174947358u32;
37695pub const PR_EMS_AB_REFERRAL_LIST_W: u32 = 2174947359u32;
37696pub const PR_EMS_AB_REGISTERED_ADDRESS: u32 = 2165903618u32;
37697pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD: u32 = 2165964830u32;
37698pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_A: u32 = 2165964830u32;
37699pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS: u32 = 2166030366u32;
37700pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS_A: u32 = 2166030366u32;
37701pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS_W: u32 = 2166030367u32;
37702pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_W: u32 = 2165964831u32;
37703pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER: u32 = 2166095902u32;
37704pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_A: u32 = 2166095902u32;
37705pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_O: u32 = 2166095885u32;
37706pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_T: u32 = 2166095902u32;
37707pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_W: u32 = 2166095903u32;
37708pub const PR_EMS_AB_REMOTE_SITE: u32 = 2166161438u32;
37709pub const PR_EMS_AB_REMOTE_SITE_A: u32 = 2166161438u32;
37710pub const PR_EMS_AB_REMOTE_SITE_O: u32 = 2166161421u32;
37711pub const PR_EMS_AB_REMOTE_SITE_T: u32 = 2166161438u32;
37712pub const PR_EMS_AB_REMOTE_SITE_W: u32 = 2166161439u32;
37713pub const PR_EMS_AB_REPLICATED_OBJECT_VERSION: u32 = 2355232771u32;
37714pub const PR_EMS_AB_REPLICATION_MAIL_MSG_SIZE: u32 = 2171076611u32;
37715pub const PR_EMS_AB_REPLICATION_SENSITIVITY: u32 = 2166226947u32;
37716pub const PR_EMS_AB_REPLICATION_SIGNATURE: u32 = 2356019458u32;
37717pub const PR_EMS_AB_REPLICATION_STAGGER: u32 = 2166292483u32;
37718pub const PR_EMS_AB_REPORTS: u32 = 2148401165u32;
37719pub const PR_EMS_AB_REPORTS_A: u32 = 2148405278u32;
37720pub const PR_EMS_AB_REPORTS_O: u32 = 2148401165u32;
37721pub const PR_EMS_AB_REPORTS_T: u32 = 2148405278u32;
37722pub const PR_EMS_AB_REPORTS_W: u32 = 2148405279u32;
37723pub const PR_EMS_AB_REPORT_TO_ORIGINATOR: u32 = 2166358027u32;
37724pub const PR_EMS_AB_REPORT_TO_OWNER: u32 = 2166423563u32;
37725pub const PR_EMS_AB_REQUIRE_SSL: u32 = 2351235083u32;
37726pub const PR_EMS_AB_REQ_SEQ: u32 = 2166489091u32;
37727pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA: u32 = 2166554654u32;
37728pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_A: u32 = 2166554654u32;
37729pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_O: u32 = 2166554637u32;
37730pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_T: u32 = 2166554654u32;
37731pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_W: u32 = 2166554655u32;
37732pub const PR_EMS_AB_RETURN_EXACT_MSG_SIZE: u32 = 2354184203u32;
37733pub const PR_EMS_AB_RID_SERVER: u32 = 2166620190u32;
37734pub const PR_EMS_AB_RID_SERVER_A: u32 = 2166620190u32;
37735pub const PR_EMS_AB_RID_SERVER_O: u32 = 2166620173u32;
37736pub const PR_EMS_AB_RID_SERVER_T: u32 = 2166620190u32;
37737pub const PR_EMS_AB_RID_SERVER_W: u32 = 2166620191u32;
37738pub const PR_EMS_AB_ROLE_OCCUPANT: u32 = 2166689822u32;
37739pub const PR_EMS_AB_ROLE_OCCUPANT_A: u32 = 2166689822u32;
37740pub const PR_EMS_AB_ROLE_OCCUPANT_O: u32 = 2166685709u32;
37741pub const PR_EMS_AB_ROLE_OCCUPANT_T: u32 = 2166689822u32;
37742pub const PR_EMS_AB_ROLE_OCCUPANT_W: u32 = 2166689823u32;
37743pub const PR_EMS_AB_ROOM_CAPACITY: u32 = 134676483u32;
37744pub const PR_EMS_AB_ROOM_CONTAINERS: u32 = 2358644766u32;
37745pub const PR_EMS_AB_ROOM_CONTAINERS_A: u32 = 2358644766u32;
37746pub const PR_EMS_AB_ROOM_CONTAINERS_W: u32 = 2358644767u32;
37747pub const PR_EMS_AB_ROOM_DESCRIPTION: u32 = 134807582u32;
37748pub const PR_EMS_AB_ROOM_DESCRIPTION_A: u32 = 134807582u32;
37749pub const PR_EMS_AB_ROOM_DESCRIPTION_W: u32 = 134807583u32;
37750pub const PR_EMS_AB_ROOT_NEWSGROUPS_FOLDER_ID: u32 = 2175926530u32;
37751pub const PR_EMS_AB_ROUTING_LIST: u32 = 2166755358u32;
37752pub const PR_EMS_AB_ROUTING_LIST_A: u32 = 2166755358u32;
37753pub const PR_EMS_AB_ROUTING_LIST_W: u32 = 2166755359u32;
37754pub const PR_EMS_AB_RTS_CHECKPOINT_SIZE: u32 = 2166816771u32;
37755pub const PR_EMS_AB_RTS_RECOVERY_TIMEOUT: u32 = 2166882307u32;
37756pub const PR_EMS_AB_RTS_WINDOW_SIZE: u32 = 2166947843u32;
37757pub const PR_EMS_AB_RUNS_ON: u32 = 2167017502u32;
37758pub const PR_EMS_AB_RUNS_ON_A: u32 = 2167017502u32;
37759pub const PR_EMS_AB_RUNS_ON_O: u32 = 2167013389u32;
37760pub const PR_EMS_AB_RUNS_ON_T: u32 = 2167017502u32;
37761pub const PR_EMS_AB_RUNS_ON_W: u32 = 2167017503u32;
37762pub const PR_EMS_AB_SCHEMA_FLAGS: u32 = 2171797507u32;
37763pub const PR_EMS_AB_SCHEMA_VERSION: u32 = 2172391427u32;
37764pub const PR_EMS_AB_SEARCH_FLAGS: u32 = 2167209987u32;
37765pub const PR_EMS_AB_SEARCH_GUIDE: u32 = 2167279874u32;
37766pub const PR_EMS_AB_SECURITY_POLICY: u32 = 2353467650u32;
37767pub const PR_EMS_AB_SECURITY_PROTOCOL: u32 = 2151092482u32;
37768pub const PR_EMS_AB_SEE_ALSO: u32 = 2167345182u32;
37769pub const PR_EMS_AB_SEE_ALSO_A: u32 = 2167345182u32;
37770pub const PR_EMS_AB_SEE_ALSO_O: u32 = 2167341069u32;
37771pub const PR_EMS_AB_SEE_ALSO_T: u32 = 2167345182u32;
37772pub const PR_EMS_AB_SEE_ALSO_W: u32 = 2167345183u32;
37773pub const PR_EMS_AB_SEND_EMAIL_MESSAGE: u32 = 2352021515u32;
37774pub const PR_EMS_AB_SEND_TNEF: u32 = 2173763595u32;
37775pub const PR_EMS_AB_SENIORITY_INDEX: u32 = 2359296003u32;
37776pub const PR_EMS_AB_SERIAL_NUMBER: u32 = 2167410718u32;
37777pub const PR_EMS_AB_SERIAL_NUMBER_A: u32 = 2167410718u32;
37778pub const PR_EMS_AB_SERIAL_NUMBER_W: u32 = 2167410719u32;
37779pub const PR_EMS_AB_SERVER: u32 = 4294836254u32;
37780pub const PR_EMS_AB_SERVER_A: u32 = 4294836254u32;
37781pub const PR_EMS_AB_SERVER_W: u32 = 4294836255u32;
37782pub const PR_EMS_AB_SERVICE_ACTION_FIRST: u32 = 2167472131u32;
37783pub const PR_EMS_AB_SERVICE_ACTION_OTHER: u32 = 2167537667u32;
37784pub const PR_EMS_AB_SERVICE_ACTION_SECOND: u32 = 2167603203u32;
37785pub const PR_EMS_AB_SERVICE_RESTART_DELAY: u32 = 2167668739u32;
37786pub const PR_EMS_AB_SERVICE_RESTART_MESSAGE: u32 = 2167734302u32;
37787pub const PR_EMS_AB_SERVICE_RESTART_MESSAGE_A: u32 = 2167734302u32;
37788pub const PR_EMS_AB_SERVICE_RESTART_MESSAGE_W: u32 = 2167734303u32;
37789pub const PR_EMS_AB_SESSION_DISCONNECT_TIMER: u32 = 2167799811u32;
37790pub const PR_EMS_AB_SITE_AFFINITY: u32 = 2167869470u32;
37791pub const PR_EMS_AB_SITE_AFFINITY_A: u32 = 2167869470u32;
37792pub const PR_EMS_AB_SITE_AFFINITY_W: u32 = 2167869471u32;
37793pub const PR_EMS_AB_SITE_FOLDER_GUID: u32 = 2170945794u32;
37794pub const PR_EMS_AB_SITE_FOLDER_SERVER: u32 = 2171011102u32;
37795pub const PR_EMS_AB_SITE_FOLDER_SERVER_A: u32 = 2171011102u32;
37796pub const PR_EMS_AB_SITE_FOLDER_SERVER_O: u32 = 2171011085u32;
37797pub const PR_EMS_AB_SITE_FOLDER_SERVER_T: u32 = 2171011102u32;
37798pub const PR_EMS_AB_SITE_FOLDER_SERVER_W: u32 = 2171011103u32;
37799pub const PR_EMS_AB_SITE_PROXY_SPACE: u32 = 2167935006u32;
37800pub const PR_EMS_AB_SITE_PROXY_SPACE_A: u32 = 2167935006u32;
37801pub const PR_EMS_AB_SITE_PROXY_SPACE_W: u32 = 2167935007u32;
37802pub const PR_EMS_AB_SMIME_ALG_LIST_NA: u32 = 2352156702u32;
37803pub const PR_EMS_AB_SMIME_ALG_LIST_NA_A: u32 = 2352156702u32;
37804pub const PR_EMS_AB_SMIME_ALG_LIST_NA_W: u32 = 2352156703u32;
37805pub const PR_EMS_AB_SMIME_ALG_LIST_OTHER: u32 = 2352222238u32;
37806pub const PR_EMS_AB_SMIME_ALG_LIST_OTHER_A: u32 = 2352222238u32;
37807pub const PR_EMS_AB_SMIME_ALG_LIST_OTHER_W: u32 = 2352222239u32;
37808pub const PR_EMS_AB_SMIME_ALG_SELECTED_NA: u32 = 2352283678u32;
37809pub const PR_EMS_AB_SMIME_ALG_SELECTED_NA_A: u32 = 2352283678u32;
37810pub const PR_EMS_AB_SMIME_ALG_SELECTED_NA_W: u32 = 2352283679u32;
37811pub const PR_EMS_AB_SMIME_ALG_SELECTED_OTHER: u32 = 2352349214u32;
37812pub const PR_EMS_AB_SMIME_ALG_SELECTED_OTHER_A: u32 = 2352349214u32;
37813pub const PR_EMS_AB_SMIME_ALG_SELECTED_OTHER_W: u32 = 2352349215u32;
37814pub const PR_EMS_AB_SPACE_LAST_COMPUTED: u32 = 2167996480u32;
37815pub const PR_EMS_AB_STREET_ADDRESS: u32 = 2168061982u32;
37816pub const PR_EMS_AB_STREET_ADDRESS_A: u32 = 2168061982u32;
37817pub const PR_EMS_AB_STREET_ADDRESS_W: u32 = 2168061983u32;
37818pub const PR_EMS_AB_SUBMISSION_CONT_LENGTH: u32 = 2168193027u32;
37819pub const PR_EMS_AB_SUB_REFS: u32 = 2168131614u32;
37820pub const PR_EMS_AB_SUB_REFS_A: u32 = 2168131614u32;
37821pub const PR_EMS_AB_SUB_REFS_O: u32 = 2168127501u32;
37822pub const PR_EMS_AB_SUB_REFS_T: u32 = 2168131614u32;
37823pub const PR_EMS_AB_SUB_REFS_W: u32 = 2168131615u32;
37824pub const PR_EMS_AB_SUB_SITE: u32 = 2172321822u32;
37825pub const PR_EMS_AB_SUB_SITE_A: u32 = 2172321822u32;
37826pub const PR_EMS_AB_SUB_SITE_W: u32 = 2172321823u32;
37827pub const PR_EMS_AB_SUPPORTED_ALGORITHMS: u32 = 2354381058u32;
37828pub const PR_EMS_AB_SUPPORTED_APPLICATION_CONTEXT: u32 = 2168262914u32;
37829pub const PR_EMS_AB_SUPPORTING_STACK: u32 = 2168328222u32;
37830pub const PR_EMS_AB_SUPPORTING_STACK_A: u32 = 2168328222u32;
37831pub const PR_EMS_AB_SUPPORTING_STACK_BL: u32 = 2168393758u32;
37832pub const PR_EMS_AB_SUPPORTING_STACK_BL_A: u32 = 2168393758u32;
37833pub const PR_EMS_AB_SUPPORTING_STACK_BL_O: u32 = 2168389645u32;
37834pub const PR_EMS_AB_SUPPORTING_STACK_BL_T: u32 = 2168393758u32;
37835pub const PR_EMS_AB_SUPPORTING_STACK_BL_W: u32 = 2168393759u32;
37836pub const PR_EMS_AB_SUPPORTING_STACK_O: u32 = 2168324109u32;
37837pub const PR_EMS_AB_SUPPORTING_STACK_T: u32 = 2168328222u32;
37838pub const PR_EMS_AB_SUPPORTING_STACK_W: u32 = 2168328223u32;
37839pub const PR_EMS_AB_SUPPORT_SMIME_SIGNATURES: u32 = 2353528843u32;
37840pub const PR_EMS_AB_S_SELECTOR: u32 = 2167079170u32;
37841pub const PR_EMS_AB_S_SELECTOR_INBOUND: u32 = 2167144706u32;
37842pub const PR_EMS_AB_TARGET_ADDRESS: u32 = 2148597790u32;
37843pub const PR_EMS_AB_TARGET_ADDRESS_A: u32 = 2148597790u32;
37844pub const PR_EMS_AB_TARGET_ADDRESS_W: u32 = 2148597791u32;
37845pub const PR_EMS_AB_TARGET_MTAS: u32 = 2168590366u32;
37846pub const PR_EMS_AB_TARGET_MTAS_A: u32 = 2168590366u32;
37847pub const PR_EMS_AB_TARGET_MTAS_W: u32 = 2168590367u32;
37848pub const PR_EMS_AB_TELEPHONE_NUMBER: u32 = 2148667422u32;
37849pub const PR_EMS_AB_TELEPHONE_NUMBER_A: u32 = 2148667422u32;
37850pub const PR_EMS_AB_TELEPHONE_NUMBER_W: u32 = 2148667423u32;
37851pub const PR_EMS_AB_TELEPHONE_PERSONAL_PAGER: u32 = 2355626014u32;
37852pub const PR_EMS_AB_TELEPHONE_PERSONAL_PAGER_A: u32 = 2355626014u32;
37853pub const PR_EMS_AB_TELEPHONE_PERSONAL_PAGER_W: u32 = 2355626015u32;
37854pub const PR_EMS_AB_TELETEX_TERMINAL_IDENTIFIER: u32 = 2168656130u32;
37855pub const PR_EMS_AB_TEMP_ASSOC_THRESHOLD: u32 = 2168717315u32;
37856pub const PR_EMS_AB_TOMBSTONE_LIFETIME: u32 = 2168782851u32;
37857pub const PR_EMS_AB_TRACKING_LOG_PATH_NAME: u32 = 2168848414u32;
37858pub const PR_EMS_AB_TRACKING_LOG_PATH_NAME_A: u32 = 2168848414u32;
37859pub const PR_EMS_AB_TRACKING_LOG_PATH_NAME_W: u32 = 2168848415u32;
37860pub const PR_EMS_AB_TRANSFER_RETRY_INTERVAL: u32 = 2169044995u32;
37861pub const PR_EMS_AB_TRANSFER_TIMEOUT_NON_URGENT: u32 = 2169110531u32;
37862pub const PR_EMS_AB_TRANSFER_TIMEOUT_NORMAL: u32 = 2169176067u32;
37863pub const PR_EMS_AB_TRANSFER_TIMEOUT_URGENT: u32 = 2169241603u32;
37864pub const PR_EMS_AB_TRANSLATION_TABLE_USED: u32 = 2169307139u32;
37865pub const PR_EMS_AB_TRANSPORT_EXPEDITED_DATA: u32 = 2169372683u32;
37866pub const PR_EMS_AB_TRANS_RETRY_MINS: u32 = 2168913923u32;
37867pub const PR_EMS_AB_TRANS_TIMEOUT_MINS: u32 = 2168979459u32;
37868pub const PR_EMS_AB_TRUST_LEVEL: u32 = 2169438211u32;
37869pub const PR_EMS_AB_TURN_REQUEST_THRESHOLD: u32 = 2169503747u32;
37870pub const PR_EMS_AB_TWO_WAY_ALTERNATE_FACILITY: u32 = 2169569291u32;
37871pub const PR_EMS_AB_TYPE: u32 = 2352480286u32;
37872pub const PR_EMS_AB_TYPE_A: u32 = 2352480286u32;
37873pub const PR_EMS_AB_TYPE_W: u32 = 2352480287u32;
37874pub const PR_EMS_AB_T_SELECTOR: u32 = 2168455426u32;
37875pub const PR_EMS_AB_T_SELECTOR_INBOUND: u32 = 2168520962u32;
37876pub const PR_EMS_AB_UNAUTH_ORIG_BL: u32 = 2169638942u32;
37877pub const PR_EMS_AB_UNAUTH_ORIG_BL_A: u32 = 2169638942u32;
37878pub const PR_EMS_AB_UNAUTH_ORIG_BL_O: u32 = 2169634829u32;
37879pub const PR_EMS_AB_UNAUTH_ORIG_BL_T: u32 = 2169638942u32;
37880pub const PR_EMS_AB_UNAUTH_ORIG_BL_W: u32 = 2169638943u32;
37881pub const PR_EMS_AB_UNMERGED_ATTRIBUTES: u32 = 2356089090u32;
37882pub const PR_EMS_AB_USENET_SITE_NAME: u32 = 2173239326u32;
37883pub const PR_EMS_AB_USENET_SITE_NAME_A: u32 = 2173239326u32;
37884pub const PR_EMS_AB_USENET_SITE_NAME_W: u32 = 2173239327u32;
37885pub const PR_EMS_AB_USER_PASSWORD: u32 = 2169704706u32;
37886pub const PR_EMS_AB_USE_SERVER_VALUES: u32 = 2172518411u32;
37887pub const PR_EMS_AB_USE_SITE_VALUES: u32 = 2172846091u32;
37888pub const PR_EMS_AB_USN_CHANGED: u32 = 2150170627u32;
37889pub const PR_EMS_AB_USN_CREATED: u32 = 2169765891u32;
37890pub const PR_EMS_AB_USN_DSA_LAST_OBJ_REMOVED: u32 = 2169831427u32;
37891pub const PR_EMS_AB_USN_INTERSITE: u32 = 2172256259u32;
37892pub const PR_EMS_AB_USN_LAST_OBJ_REM: u32 = 2169896963u32;
37893pub const PR_EMS_AB_USN_SOURCE: u32 = 2169962499u32;
37894pub const PR_EMS_AB_VIEW_CONTAINER_1: u32 = 2176778270u32;
37895pub const PR_EMS_AB_VIEW_CONTAINER_1_A: u32 = 2176778270u32;
37896pub const PR_EMS_AB_VIEW_CONTAINER_1_W: u32 = 2176778271u32;
37897pub const PR_EMS_AB_VIEW_CONTAINER_2: u32 = 2176843806u32;
37898pub const PR_EMS_AB_VIEW_CONTAINER_2_A: u32 = 2176843806u32;
37899pub const PR_EMS_AB_VIEW_CONTAINER_2_W: u32 = 2176843807u32;
37900pub const PR_EMS_AB_VIEW_CONTAINER_3: u32 = 2176909342u32;
37901pub const PR_EMS_AB_VIEW_CONTAINER_3_A: u32 = 2176909342u32;
37902pub const PR_EMS_AB_VIEW_CONTAINER_3_W: u32 = 2176909343u32;
37903pub const PR_EMS_AB_VIEW_DEFINITION: u32 = 2350584066u32;
37904pub const PR_EMS_AB_VIEW_FLAGS: u32 = 2350383107u32;
37905pub const PR_EMS_AB_VIEW_SITE: u32 = 2176712734u32;
37906pub const PR_EMS_AB_VIEW_SITE_A: u32 = 2176712734u32;
37907pub const PR_EMS_AB_VIEW_SITE_W: u32 = 2176712735u32;
37908pub const PR_EMS_AB_VOICE_MAIL_FLAGS: u32 = 2353008898u32;
37909pub const PR_EMS_AB_VOICE_MAIL_GREETINGS: u32 = 2352943134u32;
37910pub const PR_EMS_AB_VOICE_MAIL_GREETINGS_A: u32 = 2352943134u32;
37911pub const PR_EMS_AB_VOICE_MAIL_GREETINGS_W: u32 = 2352943135u32;
37912pub const PR_EMS_AB_VOICE_MAIL_PASSWORD: u32 = 2352807966u32;
37913pub const PR_EMS_AB_VOICE_MAIL_PASSWORD_A: u32 = 2352807966u32;
37914pub const PR_EMS_AB_VOICE_MAIL_PASSWORD_W: u32 = 2352807967u32;
37915pub const PR_EMS_AB_VOICE_MAIL_RECORDED_NAME: u32 = 2352873730u32;
37916pub const PR_EMS_AB_VOICE_MAIL_RECORDING_LENGTH: u32 = 2353205251u32;
37917pub const PR_EMS_AB_VOICE_MAIL_SPEED: u32 = 2353135619u32;
37918pub const PR_EMS_AB_VOICE_MAIL_SYSTEM_GUID: u32 = 2352677122u32;
37919pub const PR_EMS_AB_VOICE_MAIL_USER_ID: u32 = 2352742430u32;
37920pub const PR_EMS_AB_VOICE_MAIL_USER_ID_A: u32 = 2352742430u32;
37921pub const PR_EMS_AB_VOICE_MAIL_USER_ID_W: u32 = 2352742431u32;
37922pub const PR_EMS_AB_VOICE_MAIL_VOLUME: u32 = 2353070083u32;
37923pub const PR_EMS_AB_WWW_HOME_PAGE: u32 = 2171928606u32;
37924pub const PR_EMS_AB_WWW_HOME_PAGE_A: u32 = 2171928606u32;
37925pub const PR_EMS_AB_WWW_HOME_PAGE_W: u32 = 2171928607u32;
37926pub const PR_EMS_AB_X121_ADDRESS: u32 = 2170032158u32;
37927pub const PR_EMS_AB_X121_ADDRESS_A: u32 = 2170032158u32;
37928pub const PR_EMS_AB_X121_ADDRESS_W: u32 = 2170032159u32;
37929pub const PR_EMS_AB_X25_CALL_USER_DATA_INCOMING: u32 = 2170093826u32;
37930pub const PR_EMS_AB_X25_CALL_USER_DATA_OUTGOING: u32 = 2170159362u32;
37931pub const PR_EMS_AB_X25_FACILITIES_DATA_INCOMING: u32 = 2170224898u32;
37932pub const PR_EMS_AB_X25_FACILITIES_DATA_OUTGOING: u32 = 2170290434u32;
37933pub const PR_EMS_AB_X25_LEASED_LINE_PORT: u32 = 2170355970u32;
37934pub const PR_EMS_AB_X25_LEASED_OR_SWITCHED: u32 = 2170421259u32;
37935pub const PR_EMS_AB_X25_REMOTE_MTA_PHONE: u32 = 2170486814u32;
37936pub const PR_EMS_AB_X25_REMOTE_MTA_PHONE_A: u32 = 2170486814u32;
37937pub const PR_EMS_AB_X25_REMOTE_MTA_PHONE_W: u32 = 2170486815u32;
37938pub const PR_EMS_AB_X400_ATTACHMENT_TYPE: u32 = 2170552578u32;
37939pub const PR_EMS_AB_X400_SELECTOR_SYNTAX: u32 = 2170617859u32;
37940pub const PR_EMS_AB_X500_ACCESS_CONTROL_LIST: u32 = 2170683650u32;
37941pub const PR_EMS_AB_X500_NC: u32 = 2174877726u32;
37942pub const PR_EMS_AB_X500_NC_A: u32 = 2174877726u32;
37943pub const PR_EMS_AB_X500_NC_W: u32 = 2174877727u32;
37944pub const PR_EMS_AB_X500_RDN: u32 = 2174812190u32;
37945pub const PR_EMS_AB_X500_RDN_A: u32 = 2174812190u32;
37946pub const PR_EMS_AB_X500_RDN_W: u32 = 2174812191u32;
37947pub const PR_EMS_AB_X509_CERT: u32 = 2355761410u32;
37948pub const PR_EMS_AB_XMIT_TIMEOUT_NON_URGENT: u32 = 2170748931u32;
37949pub const PR_EMS_AB_XMIT_TIMEOUT_NORMAL: u32 = 2170814467u32;
37950pub const PR_EMS_AB_XMIT_TIMEOUT_URGENT: u32 = 2170880003u32;
37951pub const PR_END_DATE: u32 = 6357056u32;
37952pub const PR_ENTRYID: u32 = 268370178u32;
37953pub const PR_EVENTS_ROOT_FOLDER_ENTRYID: u32 = 1719271682u32;
37954pub const PR_EXCESS_STORAGE_USED: u32 = 1073086467u32;
37955pub const PR_EXPIRY_NUMBER: u32 = 1072496643u32;
37956pub const PR_EXPIRY_TIME: u32 = 1376320u32;
37957pub const PR_EXPIRY_UNITS: u32 = 1072562179u32;
37958pub const PR_EXPLICIT_CONVERSION: u32 = 201392131u32;
37959pub const PR_EXTENDED_ACL_DATA: u32 = 1073611010u32;
37960pub const PR_EXTENDED_RULE_ACTIONS: u32 = 244908290u32;
37961pub const PR_EXTENDED_RULE_CONDITION: u32 = 244973826u32;
37962pub const PR_EXTENDED_RULE_MSG_ACTIONS: u32 = 244908290u32;
37963pub const PR_EXTENDED_RULE_MSG_CONDITION: u32 = 244973826u32;
37964pub const PR_EXTENDED_RULE_SIZE_LIMIT: u32 = 245039107u32;
37965pub const PR_FAST_TRANSFER: u32 = 1714356237u32;
37966pub const PR_FAVORITES_DEFAULT_NAME: u32 = 1714749470u32;
37967pub const PR_FAVORITES_DEFAULT_NAME_W: u32 = 1714749471u32;
37968pub const PR_FID_VID: u32 = 1716257026u32;
37969pub const PR_FILE_SIZE: u32 = 1732706307u32;
37970pub const PR_FILE_SIZE_EXTENDED: u32 = 1732706324u32;
37971pub const PR_FILTERING_HOOKS: u32 = 1023934722u32;
37972pub const PR_FINDER_ENTRYID: u32 = 904331522u32;
37973pub const PR_FLAG_STATUS: u32 = 277872643u32;
37974pub const PR_FLAT_URL_NAME: u32 = 1728970782u32;
37975pub const PR_FLAT_URL_NAME_A: u32 = 1728970782u32;
37976pub const PR_FLAT_URL_NAME_W: u32 = 1728970783u32;
37977pub const PR_FOLDER_ASSOCIATED_CONTENTS: u32 = 907018253u32;
37978pub const PR_FOLDER_CHILD_COUNT: u32 = 1714946051u32;
37979pub const PR_FOLDER_DESIGN_FLAGS: u32 = 1071775747u32;
37980pub const PR_FOLDER_FLAGS: u32 = 1722286083u32;
37981pub const PR_FOLDER_PATHNAME: u32 = 1723138078u32;
37982pub const PR_FOLDER_PATHNAME_A: u32 = 1723138078u32;
37983pub const PR_FOLDER_PATHNAME_W: u32 = 1723138079u32;
37984pub const PR_FOLDER_TYPE: u32 = 906035203u32;
37985pub const PR_FORCE_CLIENT_REFRESH: u32 = 1705050123u32;
37986pub const PR_FOREIGN_ID: u32 = 1718026498u32;
37987pub const PR_FOREIGN_REPORT_ID: u32 = 1718092034u32;
37988pub const PR_FOREIGN_SUBJECT_ID: u32 = 1718157570u32;
37989pub const PR_FORM_CATEGORY: u32 = 855900190u32;
37990pub const PR_FORM_CATEGORY_A: u32 = 855900190u32;
37991pub const PR_FORM_CATEGORY_SUB: u32 = 855965726u32;
37992pub const PR_FORM_CATEGORY_SUB_A: u32 = 855965726u32;
37993pub const PR_FORM_CATEGORY_SUB_W: u32 = 855965727u32;
37994pub const PR_FORM_CATEGORY_W: u32 = 855900191u32;
37995pub const PR_FORM_CLSID: u32 = 855769160u32;
37996pub const PR_FORM_CONTACT_NAME: u32 = 855834654u32;
37997pub const PR_FORM_CONTACT_NAME_A: u32 = 855834654u32;
37998pub const PR_FORM_CONTACT_NAME_W: u32 = 855834655u32;
37999pub const PR_FORM_DESIGNER_GUID: u32 = 856227912u32;
38000pub const PR_FORM_DESIGNER_NAME: u32 = 856162334u32;
38001pub const PR_FORM_DESIGNER_NAME_A: u32 = 856162334u32;
38002pub const PR_FORM_DESIGNER_NAME_W: u32 = 856162335u32;
38003pub const PR_FORM_HIDDEN: u32 = 856096779u32;
38004pub const PR_FORM_HOST_MAP: u32 = 856035331u32;
38005pub const PR_FORM_MESSAGE_BEHAVIOR: u32 = 856293379u32;
38006pub const PR_FORM_VERSION: u32 = 855703582u32;
38007pub const PR_FORM_VERSION_A: u32 = 855703582u32;
38008pub const PR_FORM_VERSION_W: u32 = 855703583u32;
38009pub const PR_FREE_BUSY_FOR_LOCAL_SITE_ENTRYID: u32 = 1713701122u32;
38010pub const PR_FTP_SITE: u32 = 978059294u32;
38011pub const PR_FTP_SITE_A: u32 = 978059294u32;
38012pub const PR_FTP_SITE_W: u32 = 978059295u32;
38013pub const PR_GENDER: u32 = 978124802u32;
38014pub const PR_GENERATION: u32 = 973406238u32;
38015pub const PR_GENERATION_A: u32 = 973406238u32;
38016pub const PR_GENERATION_W: u32 = 973406239u32;
38017pub const PR_GET_PROPS_EXCLUDE_PROP_ID_LIST: u32 = 1719533826u32;
38018pub const PR_GIVEN_NAME: u32 = 973471774u32;
38019pub const PR_GIVEN_NAME_A: u32 = 973471774u32;
38020pub const PR_GIVEN_NAME_W: u32 = 973471775u32;
38021pub const PR_GOVERNMENT_ID_NUMBER: u32 = 973537310u32;
38022pub const PR_GOVERNMENT_ID_NUMBER_A: u32 = 973537310u32;
38023pub const PR_GOVERNMENT_ID_NUMBER_W: u32 = 973537311u32;
38024pub const PR_GW_ADMIN_OPERATIONS: u32 = 1717043203u32;
38025pub const PR_GW_MTSIN_ENTRYID: u32 = 1713897730u32;
38026pub const PR_GW_MTSOUT_ENTRYID: u32 = 1713963266u32;
38027pub const PR_HASATTACH: u32 = 236650507u32;
38028pub const PR_HAS_DAMS: u32 = 1072300043u32;
38029pub const PR_HAS_MODERATOR_RULES: u32 = 1715404811u32;
38030pub const PR_HAS_NAMED_PROPERTIES: u32 = 1716125707u32;
38031pub const PR_HAS_RULES: u32 = 1715077131u32;
38032pub const PR_HEADER_FOLDER_ENTRYID: u32 = 1040843010u32;
38033pub const PR_HIERARCHY_CHANGE_NUM: u32 = 1715339267u32;
38034pub const PR_HIERARCHY_SERVER: u32 = 1714618398u32;
38035pub const PR_HIERARCHY_SYNCHRONIZER: u32 = 1714159629u32;
38036pub const PR_HOBBIES: u32 = 977469470u32;
38037pub const PR_HOBBIES_A: u32 = 977469470u32;
38038pub const PR_HOBBIES_W: u32 = 977469471u32;
38039pub const PR_HOME2_TELEPHONE_NUMBER: u32 = 976158750u32;
38040pub const PR_HOME2_TELEPHONE_NUMBER_A: u32 = 976158750u32;
38041pub const PR_HOME2_TELEPHONE_NUMBER_W: u32 = 976158751u32;
38042pub const PR_HOME_ADDRESS_CITY: u32 = 978911262u32;
38043pub const PR_HOME_ADDRESS_CITY_A: u32 = 978911262u32;
38044pub const PR_HOME_ADDRESS_CITY_W: u32 = 978911263u32;
38045pub const PR_HOME_ADDRESS_COUNTRY: u32 = 978976798u32;
38046pub const PR_HOME_ADDRESS_COUNTRY_A: u32 = 978976798u32;
38047pub const PR_HOME_ADDRESS_COUNTRY_W: u32 = 978976799u32;
38048pub const PR_HOME_ADDRESS_POSTAL_CODE: u32 = 979042334u32;
38049pub const PR_HOME_ADDRESS_POSTAL_CODE_A: u32 = 979042334u32;
38050pub const PR_HOME_ADDRESS_POSTAL_CODE_W: u32 = 979042335u32;
38051pub const PR_HOME_ADDRESS_POST_OFFICE_BOX: u32 = 979238942u32;
38052pub const PR_HOME_ADDRESS_POST_OFFICE_BOX_A: u32 = 979238942u32;
38053pub const PR_HOME_ADDRESS_POST_OFFICE_BOX_W: u32 = 979238943u32;
38054pub const PR_HOME_ADDRESS_STATE_OR_PROVINCE: u32 = 979107870u32;
38055pub const PR_HOME_ADDRESS_STATE_OR_PROVINCE_A: u32 = 979107870u32;
38056pub const PR_HOME_ADDRESS_STATE_OR_PROVINCE_W: u32 = 979107871u32;
38057pub const PR_HOME_ADDRESS_STREET: u32 = 979173406u32;
38058pub const PR_HOME_ADDRESS_STREET_A: u32 = 979173406u32;
38059pub const PR_HOME_ADDRESS_STREET_W: u32 = 979173407u32;
38060pub const PR_HOME_FAX_NUMBER: u32 = 975503390u32;
38061pub const PR_HOME_FAX_NUMBER_A: u32 = 975503390u32;
38062pub const PR_HOME_FAX_NUMBER_W: u32 = 975503391u32;
38063pub const PR_HOME_TELEPHONE_NUMBER: u32 = 973668382u32;
38064pub const PR_HOME_TELEPHONE_NUMBER_A: u32 = 973668382u32;
38065pub const PR_HOME_TELEPHONE_NUMBER_W: u32 = 973668383u32;
38066pub const PR_HTML: u32 = 269680898u32;
38067pub const PR_ICON: u32 = 268239106u32;
38068pub const PR_ICON_INDEX: u32 = 276824067u32;
38069pub const PR_ICS_CHANGE_KEY: u32 = 1716846850u32;
38070pub const PR_IDENTITY_DISPLAY: u32 = 1040187422u32;
38071pub const PR_IDENTITY_DISPLAY_A: u32 = 1040187422u32;
38072pub const PR_IDENTITY_DISPLAY_W: u32 = 1040187423u32;
38073pub const PR_IDENTITY_ENTRYID: u32 = 1040253186u32;
38074pub const PR_IDENTITY_SEARCH_KEY: u32 = 1040515330u32;
38075pub const PR_IMAP_INTERNAL_DATE: u32 = 1710555200u32;
38076pub const PR_IMPLICIT_CONVERSION_PROHIBITED: u32 = 1441803u32;
38077pub const PR_IMPLIED_RESTRICTIONS: u32 = 1719603458u32;
38078pub const PR_IMPORTANCE: u32 = 1507331u32;
38079pub const PR_INBOUND_NEWSFEED_DN: u32 = 1720516638u32;
38080pub const PR_INCOMPLETE_COPY: u32 = 3473419u32;
38081pub const PR_INITIALS: u32 = 973733918u32;
38082pub const PR_INITIALS_A: u32 = 973733918u32;
38083pub const PR_INITIALS_W: u32 = 973733919u32;
38084pub const PR_INITIAL_DETAILS_PANE: u32 = 1057488899u32;
38085pub const PR_INSTANCE_KEY: u32 = 267780354u32;
38086pub const PR_INTERNAL_TRACE_INFO: u32 = 1718223106u32;
38087pub const PR_INTERNET_CHARSET: u32 = 1721368606u32;
38088pub const PR_INTERNET_CONTENT: u32 = 1717108994u32;
38089pub const PR_INTERNET_CONTENT_EA: u32 = 1717108996u32;
38090pub const PR_INTERNET_CONTENT_HANDLE: u32 = 1717108995u32;
38091pub const PR_INTERNET_CPID: u32 = 1071513603u32;
38092pub const PR_INTERNET_MDNS: u32 = 1722089483u32;
38093pub const PR_INTERNET_MESSAGE_ID: u32 = 271908894u32;
38094pub const PR_INTERNET_MESSAGE_ID_A: u32 = 271908894u32;
38095pub const PR_INTERNET_MESSAGE_ID_W: u32 = 271908895u32;
38096pub const PR_INTERNET_NEWSGROUP_NAME: u32 = 1722220574u32;
38097pub const PR_INTERNET_NEWSGROUP_NAME_A: u32 = 1722220574u32;
38098pub const PR_INTERNET_NEWSGROUP_NAME_W: u32 = 1722220575u32;
38099pub const PR_INTERNET_REFERENCES: u32 = 272171038u32;
38100pub const PR_INTERNET_REFERENCES_A: u32 = 272171038u32;
38101pub const PR_INTERNET_REFERENCES_W: u32 = 272171039u32;
38102pub const PR_IN_CONFLICT: u32 = 1718353931u32;
38103pub const PR_IN_REPLY_TO: u32 = 272760862u32;
38104pub const PR_IN_REPLY_TO_A: u32 = 272760862u32;
38105pub const PR_IN_REPLY_TO_W: u32 = 272760863u32;
38106pub const PR_IN_TRANSIT: u32 = 1712848907u32;
38107pub const PR_IPM_APPOINTMENT_ENTRYID: u32 = 919601410u32;
38108pub const PR_IPM_ARCHIVE_ENTRYID: u32 = 905904386u32;
38109pub const PR_IPM_CONTACT_ENTRYID: u32 = 919666946u32;
38110pub const PR_IPM_DAF_ENTRYID: u32 = 1713307906u32;
38111pub const PR_IPM_DRAFTS_ENTRYID: u32 = 920060162u32;
38112pub const PR_IPM_FAVORITES_ENTRYID: u32 = 1714422018u32;
38113pub const PR_IPM_ID: u32 = 1573122u32;
38114pub const PR_IPM_OUTBOX_ENTRYID: u32 = 904003842u32;
38115pub const PR_IPM_OUTBOX_SEARCH_KEY: u32 = 873529602u32;
38116pub const PR_IPM_PUBLIC_FOLDERS_ENTRYID: u32 = 1714487554u32;
38117pub const PR_IPM_RETURN_REQUESTED: u32 = 201457675u32;
38118pub const PR_IPM_SENTMAIL_ENTRYID: u32 = 904134914u32;
38119pub const PR_IPM_SENTMAIL_SEARCH_KEY: u32 = 873660674u32;
38120pub const PR_IPM_SUBTREE_ENTRYID: u32 = 903872770u32;
38121pub const PR_IPM_SUBTREE_SEARCH_KEY: u32 = 873464066u32;
38122pub const PR_IPM_TASK_ENTRYID: u32 = 919863554u32;
38123pub const PR_IPM_WASTEBASKET_ENTRYID: u32 = 904069378u32;
38124pub const PR_IPM_WASTEBASKET_SEARCH_KEY: u32 = 873595138u32;
38125pub const PR_ISDN_NUMBER: u32 = 976027678u32;
38126pub const PR_ISDN_NUMBER_A: u32 = 976027678u32;
38127pub const PR_ISDN_NUMBER_W: u32 = 976027679u32;
38128pub const PR_IS_NEWSGROUP: u32 = 1721171979u32;
38129pub const PR_IS_NEWSGROUP_ANCHOR: u32 = 1721106443u32;
38130pub const PR_ITEM_LEVEL_ACL: u32 = 1025769483u32;
38131pub const PR_KEYWORD: u32 = 973799454u32;
38132pub const PR_KEYWORD_A: u32 = 973799454u32;
38133pub const PR_KEYWORD_W: u32 = 973799455u32;
38134pub const PR_LANGUAGE: u32 = 973864990u32;
38135pub const PR_LANGUAGES: u32 = 3080222u32;
38136pub const PR_LANGUAGES_A: u32 = 3080222u32;
38137pub const PR_LANGUAGES_W: u32 = 3080223u32;
38138pub const PR_LANGUAGE_A: u32 = 973864990u32;
38139pub const PR_LANGUAGE_W: u32 = 973864991u32;
38140pub const PR_LAST_ACCESS_TIME: u32 = 1722351680u32;
38141pub const PR_LAST_FULL_BACKUP: u32 = 1719992384u32;
38142pub const PR_LAST_LOGOFF_TIME: u32 = 1721958464u32;
38143pub const PR_LAST_LOGON_TIME: u32 = 1721892928u32;
38144pub const PR_LAST_MODIFICATION_TIME: u32 = 805830720u32;
38145pub const PR_LAST_MODIFIER_ENTRYID: u32 = 1073414402u32;
38146pub const PR_LAST_MODIFIER_NAME: u32 = 1073348638u32;
38147pub const PR_LAST_MODIFIER_NAME_A: u32 = 1073348638u32;
38148pub const PR_LAST_MODIFIER_NAME_W: u32 = 1073348639u32;
38149pub const PR_LAST_MODIFIER_SID: u32 = 240713986u32;
38150pub const PR_LAST_MODIFIER_SID_AS_XML: u32 = 242024478u32;
38151pub const PR_LATEST_DELIVERY_TIME: u32 = 1638464u32;
38152pub const PR_LOCALE_ID: u32 = 1721827331u32;
38153pub const PR_LOCALITY: u32 = 975634462u32;
38154pub const PR_LOCALITY_A: u32 = 975634462u32;
38155pub const PR_LOCALITY_W: u32 = 975634463u32;
38156pub const PR_LOCAL_COMMIT_TIME: u32 = 1728643136u32;
38157pub const PR_LOCAL_COMMIT_TIME_MAX: u32 = 1728708672u32;
38158pub const PR_LOCATION: u32 = 973930526u32;
38159pub const PR_LOCATION_A: u32 = 973930526u32;
38160pub const PR_LOCATION_W: u32 = 973930527u32;
38161pub const PR_LOCK_BRANCH_ID: u32 = 939524116u32;
38162pub const PR_LOCK_DEPTH: u32 = 940048387u32;
38163pub const PR_LOCK_ENLISTMENT_CONTEXT: u32 = 939786498u32;
38164pub const PR_LOCK_EXPIRY_TIME: u32 = 940179520u32;
38165pub const PR_LOCK_GLID: u32 = 940245250u32;
38166pub const PR_LOCK_NULL_URL_W: u32 = 940310559u32;
38167pub const PR_LOCK_RESOURCE_DID: u32 = 939655188u32;
38168pub const PR_LOCK_RESOURCE_FID: u32 = 939589652u32;
38169pub const PR_LOCK_RESOURCE_VID: u32 = 939720724u32;
38170pub const PR_LOCK_SCOPE: u32 = 939917314u32;
38171pub const PR_LOCK_TIMEOUT: u32 = 940113923u32;
38172pub const PR_LOCK_TRANSIENT_ID: u32 = 939983106u32;
38173pub const PR_LOCK_TYPE: u32 = 939851778u32;
38174pub const PR_LONGTERM_ENTRYID_FROM_TABLE: u32 = 1718616322u32;
38175pub const PR_MAILBOX_OWNER_ENTRYID: u32 = 1713045762u32;
38176pub const PR_MAILBOX_OWNER_NAME: u32 = 1713111070u32;
38177pub const PR_MAILBOX_OWNER_NAME_A: u32 = 1713111070u32;
38178pub const PR_MAILBOX_OWNER_NAME_W: u32 = 1713111071u32;
38179pub const PR_MAIL_PERMISSION: u32 = 973996043u32;
38180pub const PR_MANAGER_NAME: u32 = 978190366u32;
38181pub const PR_MANAGER_NAME_A: u32 = 978190366u32;
38182pub const PR_MANAGER_NAME_W: u32 = 978190367u32;
38183pub const PR_MAPPING_SIGNATURE: u32 = 267911426u32;
38184pub const PR_MAX_CACHED_VIEWS: u32 = 241696771u32;
38185pub const PR_MAX_INDICES: u32 = 241041411u32;
38186pub const PR_MAX_SUBMIT_MESSAGE_SIZE: u32 = 1718419459u32;
38187pub const PR_MDB_PROVIDER: u32 = 873726210u32;
38188pub const PR_MEMBER_ID: u32 = 1718681620u32;
38189pub const PR_MEMBER_NAME: u32 = 1718747166u32;
38190pub const PR_MEMBER_NAME_A: u32 = 1718747166u32;
38191pub const PR_MEMBER_NAME_W: u32 = 1718747167u32;
38192pub const PR_MEMBER_RIGHTS: u32 = 1718812675u32;
38193pub const PR_MERGE_MIDSET_DELETED: u32 = 242876674u32;
38194pub const PR_MESSAGE_ATTACHMENTS: u32 = 236126221u32;
38195pub const PR_MESSAGE_CC_ME: u32 = 5767179u32;
38196pub const PR_MESSAGE_CLASS: u32 = 1703966u32;
38197pub const PR_MESSAGE_CLASS_A: u32 = 1703966u32;
38198pub const PR_MESSAGE_CLASS_W: u32 = 1703967u32;
38199pub const PR_MESSAGE_CODEPAGE: u32 = 1073545219u32;
38200pub const PR_MESSAGE_DELIVERY_ID: u32 = 1769730u32;
38201pub const PR_MESSAGE_DELIVERY_TIME: u32 = 235274304u32;
38202pub const PR_MESSAGE_DOWNLOAD_TIME: u32 = 236453891u32;
38203pub const PR_MESSAGE_FLAGS: u32 = 235339779u32;
38204pub const PR_MESSAGE_LOCALE_ID: u32 = 1072758787u32;
38205pub const PR_MESSAGE_PROCESSED: u32 = 1709703179u32;
38206pub const PR_MESSAGE_RECIPIENTS: u32 = 236060685u32;
38207pub const PR_MESSAGE_RECIP_ME: u32 = 5832715u32;
38208pub const PR_MESSAGE_SECURITY_LABEL: u32 = 1966338u32;
38209pub const PR_MESSAGE_SITE_NAME: u32 = 1709637662u32;
38210pub const PR_MESSAGE_SITE_NAME_A: u32 = 1709637662u32;
38211pub const PR_MESSAGE_SITE_NAME_W: u32 = 1709637663u32;
38212pub const PR_MESSAGE_SIZE: u32 = 235405315u32;
38213pub const PR_MESSAGE_SIZE_EXTENDED: u32 = 235405332u32;
38214pub const PR_MESSAGE_SUBMISSION_ID: u32 = 4653314u32;
38215pub const PR_MESSAGE_TOKEN: u32 = 201523458u32;
38216pub const PR_MESSAGE_TO_ME: u32 = 5701643u32;
38217pub const PR_MHS_COMMON_NAME: u32 = 974061598u32;
38218pub const PR_MHS_COMMON_NAME_A: u32 = 974061598u32;
38219pub const PR_MHS_COMMON_NAME_W: u32 = 974061599u32;
38220pub const PR_MIDDLE_NAME: u32 = 977535006u32;
38221pub const PR_MIDDLE_NAME_A: u32 = 977535006u32;
38222pub const PR_MIDDLE_NAME_W: u32 = 977535007u32;
38223pub const PR_MIME_SIZE: u32 = 1732640771u32;
38224pub const PR_MIME_SIZE_EXTENDED: u32 = 1732640788u32;
38225pub const PR_MINI_ICON: u32 = 268173570u32;
38226pub const PR_MOBILE_TELEPHONE_NUMBER: u32 = 974913566u32;
38227pub const PR_MOBILE_TELEPHONE_NUMBER_A: u32 = 974913566u32;
38228pub const PR_MOBILE_TELEPHONE_NUMBER_W: u32 = 974913567u32;
38229pub const PR_MODIFY_VERSION: u32 = 236584980u32;
38230pub const PR_MOVE_TO_FOLDER_ENTRYID: u32 = 1072955650u32;
38231pub const PR_MOVE_TO_STORE_ENTRYID: u32 = 1072890114u32;
38232pub const PR_MSG_BODY_ID: u32 = 1071448067u32;
38233pub const PR_MSG_EDITOR_FORMAT: u32 = 1493762051u32;
38234pub const PR_MSG_FOLD_TIME: u32 = 1716781120u32;
38235pub const PR_MSG_STATUS: u32 = 236388355u32;
38236pub const PR_MTS_SUBJECT_ID: u32 = 1717764354u32;
38237pub const PR_NATIVE_BODY_INFO: u32 = 269877251u32;
38238pub const PR_NDR_DIAG_CODE: u32 = 201654275u32;
38239pub const PR_NDR_REASON_CODE: u32 = 201588739u32;
38240pub const PR_NEWSFEED_INFO: u32 = 1722155266u32;
38241pub const PR_NEWSGROUP_COMPONENT: u32 = 1722089502u32;
38242pub const PR_NEWSGROUP_ROOT_FOLDER_ENTRYID: u32 = 1720451330u32;
38243pub const PR_NEW_SUBS_GET_AUTO_ADD: u32 = 1709572107u32;
38244pub const PR_NEXT_SEND_ACCT: u32 = 237568031u32;
38245pub const PR_NICKNAME: u32 = 978255902u32;
38246pub const PR_NICKNAME_A: u32 = 978255902u32;
38247pub const PR_NICKNAME_W: u32 = 978255903u32;
38248pub const PR_NNTP_ARTICLE_FOLDER_ENTRYID: u32 = 1720320258u32;
38249pub const PR_NNTP_CONTROL_FOLDER_ENTRYID: u32 = 1720385794u32;
38250pub const PR_NON_IPM_SUBTREE_ENTRYID: u32 = 1713373442u32;
38251pub const PR_NON_RECEIPT_NOTIFICATION_REQUESTED: u32 = 201719819u32;
38252pub const PR_NON_RECEIPT_REASON: u32 = 4063235u32;
38253pub const PR_NON_WIN32_ACL: u32 = 1025703947u32;
38254pub const PR_NON_XMT_SECURITY_ROLE_1: u32 = 243007746u32;
38255pub const PR_NON_XMT_SECURITY_ROLE_1_AS_XML: u32 = 243007518u32;
38256pub const PR_NON_XMT_SECURITY_ROLE_2: u32 = 243073282u32;
38257pub const PR_NON_XMT_SECURITY_ROLE_2_AS_XML: u32 = 243073054u32;
38258pub const PR_NON_XMT_SECURITY_ROLE_3: u32 = 243138818u32;
38259pub const PR_NON_XMT_SECURITY_ROLE_3_AS_XML: u32 = 243138590u32;
38260pub const PR_NON_XMT_SECURITY_ROLE_4: u32 = 243204354u32;
38261pub const PR_NON_XMT_SECURITY_ROLE_4_AS_XML: u32 = 243204126u32;
38262pub const PR_NON_XMT_SECURITY_ROLE_5: u32 = 243269890u32;
38263pub const PR_NON_XMT_SECURITY_ROLE_5_AS_XML: u32 = 243269662u32;
38264pub const PR_NON_XMT_SECURITY_ROLE_6: u32 = 243335426u32;
38265pub const PR_NON_XMT_SECURITY_ROLE_6_AS_XML: u32 = 243335198u32;
38266pub const PR_NON_XMT_SECURITY_ROLE_7: u32 = 243400962u32;
38267pub const PR_NON_XMT_SECURITY_ROLE_7_AS_XML: u32 = 243400734u32;
38268pub const PR_NON_XMT_SECURITY_ROLE_8: u32 = 243466498u32;
38269pub const PR_NON_XMT_SECURITY_ROLE_8_AS_XML: u32 = 243466270u32;
38270pub const PR_NORMALIZED_SUBJECT: u32 = 236781598u32;
38271pub const PR_NORMALIZED_SUBJECT_A: u32 = 236781598u32;
38272pub const PR_NORMALIZED_SUBJECT_W: u32 = 236781599u32;
38273pub const PR_NORMAL_MESSAGE_SIZE: u32 = 1723006979u32;
38274pub const PR_NORMAL_MESSAGE_SIZE_EXTENDED: u32 = 1723006996u32;
38275pub const PR_NORMAL_MSG_W_ATTACH_COUNT: u32 = 1722613763u32;
38276pub const PR_NT_SECURITY_DESCRIPTOR_AS_XML: u32 = 241827870u32;
38277pub const PR_NT_SECURITY_DESCRIPTOR_AS_XML_A: u32 = 241827870u32;
38278pub const PR_NT_SECURITY_DESCRIPTOR_AS_XML_W: u32 = 241827871u32;
38279pub const PR_NT_USER_NAME: u32 = 1721761822u32;
38280pub const PR_NULL: u32 = 1u32;
38281pub const PR_OBJECT_TYPE: u32 = 268304387u32;
38282pub const PR_OBSOLETED_IPMS: u32 = 2031874u32;
38283pub const PR_OFFICE2_TELEPHONE_NUMBER: u32 = 974848030u32;
38284pub const PR_OFFICE2_TELEPHONE_NUMBER_A: u32 = 974848030u32;
38285pub const PR_OFFICE2_TELEPHONE_NUMBER_W: u32 = 974848031u32;
38286pub const PR_OFFICE_LOCATION: u32 = 974716958u32;
38287pub const PR_OFFICE_LOCATION_A: u32 = 974716958u32;
38288pub const PR_OFFICE_LOCATION_W: u32 = 974716959u32;
38289pub const PR_OFFICE_TELEPHONE_NUMBER: u32 = 973602846u32;
38290pub const PR_OFFICE_TELEPHONE_NUMBER_A: u32 = 973602846u32;
38291pub const PR_OFFICE_TELEPHONE_NUMBER_W: u32 = 973602847u32;
38292pub const PR_OFFLINE_ADDRBOOK_ENTRYID: u32 = 1713570050u32;
38293pub const PR_OFFLINE_FLAGS: u32 = 1715273731u32;
38294pub const PR_OFFLINE_MESSAGE_ENTRYID: u32 = 1713832194u32;
38295pub const PR_OLDEST_DELETED_ON: u32 = 1715601472u32;
38296pub const PR_OOF_STATE: u32 = 1713176587u32;
38297pub const PR_ORGANIZATIONAL_ID_NUMBER: u32 = 974127134u32;
38298pub const PR_ORGANIZATIONAL_ID_NUMBER_A: u32 = 974127134u32;
38299pub const PR_ORGANIZATIONAL_ID_NUMBER_W: u32 = 974127135u32;
38300pub const PR_ORIGINALLY_INTENDED_RECIPIENT_NAME: u32 = 2097410u32;
38301pub const PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE: u32 = 8060958u32;
38302pub const PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_A: u32 = 8060958u32;
38303pub const PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_W: u32 = 8060959u32;
38304pub const PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS: u32 = 8126494u32;
38305pub const PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_A: u32 = 8126494u32;
38306pub const PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_W: u32 = 8126495u32;
38307pub const PR_ORIGINALLY_INTENDED_RECIP_ENTRYID: u32 = 269615362u32;
38308pub const PR_ORIGINAL_AUTHOR_ADDRTYPE: u32 = 7929886u32;
38309pub const PR_ORIGINAL_AUTHOR_ADDRTYPE_A: u32 = 7929886u32;
38310pub const PR_ORIGINAL_AUTHOR_ADDRTYPE_W: u32 = 7929887u32;
38311pub const PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS: u32 = 7995422u32;
38312pub const PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_A: u32 = 7995422u32;
38313pub const PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_W: u32 = 7995423u32;
38314pub const PR_ORIGINAL_AUTHOR_ENTRYID: u32 = 4980994u32;
38315pub const PR_ORIGINAL_AUTHOR_NAME: u32 = 5046302u32;
38316pub const PR_ORIGINAL_AUTHOR_NAME_A: u32 = 5046302u32;
38317pub const PR_ORIGINAL_AUTHOR_NAME_W: u32 = 5046303u32;
38318pub const PR_ORIGINAL_AUTHOR_SEARCH_KEY: u32 = 5636354u32;
38319pub const PR_ORIGINAL_AUTHOR_SID: u32 = 240451842u32;
38320pub const PR_ORIGINAL_AUTHOR_SID_AS_XML: u32 = 242614302u32;
38321pub const PR_ORIGINAL_DELIVERY_TIME: u32 = 5570624u32;
38322pub const PR_ORIGINAL_DISPLAY_BCC: u32 = 7471134u32;
38323pub const PR_ORIGINAL_DISPLAY_BCC_A: u32 = 7471134u32;
38324pub const PR_ORIGINAL_DISPLAY_BCC_W: u32 = 7471135u32;
38325pub const PR_ORIGINAL_DISPLAY_CC: u32 = 7536670u32;
38326pub const PR_ORIGINAL_DISPLAY_CC_A: u32 = 7536670u32;
38327pub const PR_ORIGINAL_DISPLAY_CC_W: u32 = 7536671u32;
38328pub const PR_ORIGINAL_DISPLAY_NAME: u32 = 974323742u32;
38329pub const PR_ORIGINAL_DISPLAY_NAME_A: u32 = 974323742u32;
38330pub const PR_ORIGINAL_DISPLAY_NAME_W: u32 = 974323743u32;
38331pub const PR_ORIGINAL_DISPLAY_TO: u32 = 7602206u32;
38332pub const PR_ORIGINAL_DISPLAY_TO_A: u32 = 7602206u32;
38333pub const PR_ORIGINAL_DISPLAY_TO_W: u32 = 7602207u32;
38334pub const PR_ORIGINAL_EITS: u32 = 2162946u32;
38335pub const PR_ORIGINAL_ENTRYID: u32 = 974258434u32;
38336pub const PR_ORIGINAL_SEARCH_KEY: u32 = 974389506u32;
38337pub const PR_ORIGINAL_SENDER_ADDRTYPE: u32 = 6684702u32;
38338pub const PR_ORIGINAL_SENDER_ADDRTYPE_A: u32 = 6684702u32;
38339pub const PR_ORIGINAL_SENDER_ADDRTYPE_W: u32 = 6684703u32;
38340pub const PR_ORIGINAL_SENDER_EMAIL_ADDRESS: u32 = 6750238u32;
38341pub const PR_ORIGINAL_SENDER_EMAIL_ADDRESS_A: u32 = 6750238u32;
38342pub const PR_ORIGINAL_SENDER_EMAIL_ADDRESS_W: u32 = 6750239u32;
38343pub const PR_ORIGINAL_SENDER_ENTRYID: u32 = 5964034u32;
38344pub const PR_ORIGINAL_SENDER_NAME: u32 = 5898270u32;
38345pub const PR_ORIGINAL_SENDER_NAME_A: u32 = 5898270u32;
38346pub const PR_ORIGINAL_SENDER_NAME_W: u32 = 5898271u32;
38347pub const PR_ORIGINAL_SENDER_SEARCH_KEY: u32 = 6029570u32;
38348pub const PR_ORIGINAL_SENDER_SID: u32 = 240058626u32;
38349pub const PR_ORIGINAL_SENDER_SID_AS_XML: u32 = 242221086u32;
38350pub const PR_ORIGINAL_SENSITIVITY: u32 = 3014659u32;
38351pub const PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE: u32 = 6815774u32;
38352pub const PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_A: u32 = 6815774u32;
38353pub const PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_W: u32 = 6815775u32;
38354pub const PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS: u32 = 6881310u32;
38355pub const PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_A: u32 = 6881310u32;
38356pub const PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_W: u32 = 6881311u32;
38357pub const PR_ORIGINAL_SENT_REPRESENTING_ENTRYID: u32 = 6160642u32;
38358pub const PR_ORIGINAL_SENT_REPRESENTING_NAME: u32 = 6094878u32;
38359pub const PR_ORIGINAL_SENT_REPRESENTING_NAME_A: u32 = 6094878u32;
38360pub const PR_ORIGINAL_SENT_REPRESENTING_NAME_W: u32 = 6094879u32;
38361pub const PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY: u32 = 6226178u32;
38362pub const PR_ORIGINAL_SENT_REPRESENTING_SID: u32 = 240124162u32;
38363pub const PR_ORIGINAL_SENT_REPRESENTING_SID_AS_XML: u32 = 242286622u32;
38364pub const PR_ORIGINAL_SUBJECT: u32 = 4784158u32;
38365pub const PR_ORIGINAL_SUBJECT_A: u32 = 4784158u32;
38366pub const PR_ORIGINAL_SUBJECT_W: u32 = 4784159u32;
38367pub const PR_ORIGINAL_SUBMIT_TIME: u32 = 5111872u32;
38368pub const PR_ORIGINATING_MTA_CERTIFICATE: u32 = 237306114u32;
38369pub const PR_ORIGINATOR_ADDR: u32 = 1717305374u32;
38370pub const PR_ORIGINATOR_ADDRTYPE: u32 = 1717370910u32;
38371pub const PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY: u32 = 268566786u32;
38372pub const PR_ORIGINATOR_CERTIFICATE: u32 = 2228482u32;
38373pub const PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED: u32 = 2293771u32;
38374pub const PR_ORIGINATOR_ENTRYID: u32 = 1717436674u32;
38375pub const PR_ORIGINATOR_NAME: u32 = 1717239838u32;
38376pub const PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED: u32 = 201850891u32;
38377pub const PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT: u32 = 201916674u32;
38378pub const PR_ORIGINATOR_RETURN_ADDRESS: u32 = 2359554u32;
38379pub const PR_ORIGINATOR_SID: u32 = 240320770u32;
38380pub const PR_ORIGINATOR_SID_AS_XML: u32 = 242483230u32;
38381pub const PR_ORIGIN_CHECK: u32 = 2556162u32;
38382pub const PR_ORIGIN_ID: u32 = 1716322562u32;
38383pub const PR_ORIG_MESSAGE_CLASS: u32 = 4915230u32;
38384pub const PR_ORIG_MESSAGE_CLASS_A: u32 = 4915230u32;
38385pub const PR_ORIG_MESSAGE_CLASS_W: u32 = 4915231u32;
38386pub const PR_OST_ENCRYPTION: u32 = 1728184323u32;
38387pub const PR_OTHER_ADDRESS_CITY: u32 = 979304478u32;
38388pub const PR_OTHER_ADDRESS_CITY_A: u32 = 979304478u32;
38389pub const PR_OTHER_ADDRESS_CITY_W: u32 = 979304479u32;
38390pub const PR_OTHER_ADDRESS_COUNTRY: u32 = 979370014u32;
38391pub const PR_OTHER_ADDRESS_COUNTRY_A: u32 = 979370014u32;
38392pub const PR_OTHER_ADDRESS_COUNTRY_W: u32 = 979370015u32;
38393pub const PR_OTHER_ADDRESS_POSTAL_CODE: u32 = 979435550u32;
38394pub const PR_OTHER_ADDRESS_POSTAL_CODE_A: u32 = 979435550u32;
38395pub const PR_OTHER_ADDRESS_POSTAL_CODE_W: u32 = 979435551u32;
38396pub const PR_OTHER_ADDRESS_POST_OFFICE_BOX: u32 = 979632158u32;
38397pub const PR_OTHER_ADDRESS_POST_OFFICE_BOX_A: u32 = 979632158u32;
38398pub const PR_OTHER_ADDRESS_POST_OFFICE_BOX_W: u32 = 979632159u32;
38399pub const PR_OTHER_ADDRESS_STATE_OR_PROVINCE: u32 = 979501086u32;
38400pub const PR_OTHER_ADDRESS_STATE_OR_PROVINCE_A: u32 = 979501086u32;
38401pub const PR_OTHER_ADDRESS_STATE_OR_PROVINCE_W: u32 = 979501087u32;
38402pub const PR_OTHER_ADDRESS_STREET: u32 = 979566622u32;
38403pub const PR_OTHER_ADDRESS_STREET_A: u32 = 979566622u32;
38404pub const PR_OTHER_ADDRESS_STREET_W: u32 = 979566623u32;
38405pub const PR_OTHER_TELEPHONE_NUMBER: u32 = 975110174u32;
38406pub const PR_OTHER_TELEPHONE_NUMBER_A: u32 = 975110174u32;
38407pub const PR_OTHER_TELEPHONE_NUMBER_W: u32 = 975110175u32;
38408pub const PR_OUTBOUND_NEWSFEED_DN: u32 = 1720582174u32;
38409pub const PR_OVERALL_AGE_LIMIT: u32 = 1721303043u32;
38410pub const PR_OVERALL_MSG_AGE_LIMIT: u32 = 1720909827u32;
38411pub const PR_OWNER_APPT_ID: u32 = 6422531u32;
38412pub const PR_OWNER_COUNT: u32 = 1723203587u32;
38413pub const PR_OWN_STORE_ENTRYID: u32 = 1040580866u32;
38414pub const PR_P1_CONTENT: u32 = 285212930u32;
38415pub const PR_P1_CONTENT_TYPE: u32 = 285278466u32;
38416pub const PR_PAGER_TELEPHONE_NUMBER: u32 = 975241246u32;
38417pub const PR_PAGER_TELEPHONE_NUMBER_A: u32 = 975241246u32;
38418pub const PR_PAGER_TELEPHONE_NUMBER_W: u32 = 975241247u32;
38419pub const PR_PARENT_DISPLAY: u32 = 235208734u32;
38420pub const PR_PARENT_DISPLAY_A: u32 = 235208734u32;
38421pub const PR_PARENT_DISPLAY_W: u32 = 235208735u32;
38422pub const PR_PARENT_ENTRYID: u32 = 235471106u32;
38423pub const PR_PARENT_KEY: u32 = 2425090u32;
38424pub const PR_PARENT_SOURCE_KEY: u32 = 1709244674u32;
38425pub const PR_PARENT_URL_NAME: u32 = 1728905246u32;
38426pub const PR_PARENT_URL_NAME_A: u32 = 1728905246u32;
38427pub const PR_PARENT_URL_NAME_W: u32 = 1728905247u32;
38428pub const PR_PERSONAL_HOME_PAGE: u32 = 978321438u32;
38429pub const PR_PERSONAL_HOME_PAGE_A: u32 = 978321438u32;
38430pub const PR_PERSONAL_HOME_PAGE_W: u32 = 978321439u32;
38431pub const PR_PF_DISALLOW_MDB_WIDE_EXPIRY: u32 = 1730347019u32;
38432pub const PR_PF_MSG_SIZE_LIMIT: u32 = 1730281492u32;
38433pub const PR_PF_OVER_HARD_QUOTA_LIMIT: u32 = 1730215956u32;
38434pub const PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY: u32 = 201981963u32;
38435pub const PR_PHYSICAL_DELIVERY_MODE: u32 = 202047491u32;
38436pub const PR_PHYSICAL_DELIVERY_REPORT_REQUEST: u32 = 202113027u32;
38437pub const PR_PHYSICAL_FORWARDING_ADDRESS: u32 = 202178818u32;
38438pub const PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED: u32 = 202244107u32;
38439pub const PR_PHYSICAL_FORWARDING_PROHIBITED: u32 = 202309643u32;
38440pub const PR_PHYSICAL_RENDITION_ATTRIBUTES: u32 = 202375426u32;
38441pub const PR_POLICY_TAG: u32 = 806945026u32;
38442pub const PR_POSTAL_ADDRESS: u32 = 974454814u32;
38443pub const PR_POSTAL_ADDRESS_A: u32 = 974454814u32;
38444pub const PR_POSTAL_ADDRESS_W: u32 = 974454815u32;
38445pub const PR_POSTAL_CODE: u32 = 975831070u32;
38446pub const PR_POSTAL_CODE_A: u32 = 975831070u32;
38447pub const PR_POSTAL_CODE_W: u32 = 975831071u32;
38448pub const PR_POST_OFFICE_BOX: u32 = 975896606u32;
38449pub const PR_POST_OFFICE_BOX_A: u32 = 975896606u32;
38450pub const PR_POST_OFFICE_BOX_W: u32 = 975896607u32;
38451pub const PR_PREDECESSOR_CHANGE_LIST: u32 = 1709375746u32;
38452pub const PR_PREFERRED_BY_NAME: u32 = 977731614u32;
38453pub const PR_PREFERRED_BY_NAME_A: u32 = 977731614u32;
38454pub const PR_PREFERRED_BY_NAME_W: u32 = 977731615u32;
38455pub const PR_PREPROCESS: u32 = 237109259u32;
38456pub const PR_PREVENT_MSG_CREATE: u32 = 1710489611u32;
38457pub const PR_PREVIEW: u32 = 1071185950u32;
38458pub const PR_PREVIEW_A: u32 = 1071185950u32;
38459pub const PR_PREVIEW_UNREAD: u32 = 1071120414u32;
38460pub const PR_PREVIEW_UNREAD_A: u32 = 1071120414u32;
38461pub const PR_PREVIEW_UNREAD_W: u32 = 1071120415u32;
38462pub const PR_PREVIEW_W: u32 = 1071185951u32;
38463pub const PR_PRIMARY_CAPABILITY: u32 = 956563714u32;
38464pub const PR_PRIMARY_FAX_NUMBER: u32 = 975372318u32;
38465pub const PR_PRIMARY_FAX_NUMBER_A: u32 = 975372318u32;
38466pub const PR_PRIMARY_FAX_NUMBER_W: u32 = 975372319u32;
38467pub const PR_PRIMARY_SEND_ACCT: u32 = 237502495u32;
38468pub const PR_PRIMARY_TELEPHONE_NUMBER: u32 = 974782494u32;
38469pub const PR_PRIMARY_TELEPHONE_NUMBER_A: u32 = 974782494u32;
38470pub const PR_PRIMARY_TELEPHONE_NUMBER_W: u32 = 974782495u32;
38471pub const PR_PRIORITY: u32 = 2490371u32;
38472pub const PR_PROFESSION: u32 = 977666078u32;
38473pub const PR_PROFESSION_A: u32 = 977666078u32;
38474pub const PR_PROFESSION_W: u32 = 977666079u32;
38475pub const PR_PROFILE_ABP_ALLOW_RECONNECT: u32 = 1715011587u32;
38476pub const PR_PROFILE_ABP_MTHREAD_TIMEOUT_SECS: u32 = 1715077123u32;
38477pub const PR_PROFILE_AB_FILES_PATH: u32 = 1712193566u32;
38478pub const PR_PROFILE_AB_FILES_PATH_W: u32 = 1712193567u32;
38479pub const PR_PROFILE_ADDR_INFO: u32 = 1720123650u32;
38480pub const PR_PROFILE_ALLPUB_COMMENT: u32 = 1712783390u32;
38481pub const PR_PROFILE_ALLPUB_COMMENT_W: u32 = 1712783391u32;
38482pub const PR_PROFILE_ALLPUB_DISPLAY_NAME: u32 = 1712717854u32;
38483pub const PR_PROFILE_ALLPUB_DISPLAY_NAME_W: u32 = 1712717855u32;
38484pub const PR_PROFILE_ALTERNATE_STORE_TYPE_W: u32 = 1708130335u32;
38485pub const PR_PROFILE_AUTH_PACKAGE: u32 = 1712914435u32;
38486pub const PR_PROFILE_BINDING_ORDER: u32 = 1711865886u32;
38487pub const PR_PROFILE_CONFIG_FLAGS: u32 = 1711341571u32;
38488pub const PR_PROFILE_CONNECT_FLAGS: u32 = 1711538179u32;
38489pub const PR_PROFILE_FAVFLD_COMMENT: u32 = 1712652318u32;
38490pub const PR_PROFILE_FAVFLD_COMMENT_W: u32 = 1712652319u32;
38491pub const PR_PROFILE_FAVFLD_DISPLAY_NAME: u32 = 1712259102u32;
38492pub const PR_PROFILE_FAVFLD_DISPLAY_NAME_W: u32 = 1712259103u32;
38493pub const PR_PROFILE_HOME_SERVER: u32 = 1711407134u32;
38494pub const PR_PROFILE_HOME_SERVER_ADDRS: u32 = 1712525342u32;
38495pub const PR_PROFILE_HOME_SERVER_DN: u32 = 1712455710u32;
38496pub const PR_PROFILE_MAILBOX: u32 = 1711996958u32;
38497pub const PR_PROFILE_MAX_RESTRICT: u32 = 1712128003u32;
38498pub const PR_PROFILE_MOAB: u32 = 1719336990u32;
38499pub const PR_PROFILE_MOAB_GUID: u32 = 1719402526u32;
38500pub const PR_PROFILE_MOAB_SEQ: u32 = 1719468035u32;
38501pub const PR_PROFILE_MOAB_W: u32 = 1719336991u32;
38502pub const PR_PROFILE_NAME: u32 = 1024589854u32;
38503pub const PR_PROFILE_NAME_A: u32 = 1024589854u32;
38504pub const PR_PROFILE_NAME_W: u32 = 1024589855u32;
38505pub const PR_PROFILE_OFFLINE_INFO: u32 = 1712390402u32;
38506pub const PR_PROFILE_OFFLINE_STORE_PATH: u32 = 1712324638u32;
38507pub const PR_PROFILE_OFFLINE_STORE_PATH_W: u32 = 1712324639u32;
38508pub const PR_PROFILE_OPEN_FLAGS: u32 = 1711865859u32;
38509pub const PR_PROFILE_OPTIONS_DATA: u32 = 1720254722u32;
38510pub const PR_PROFILE_RECONNECT_INTERVAL: u32 = 1712979971u32;
38511pub const PR_PROFILE_SECURE_MAILBOX: u32 = 1743782146u32;
38512pub const PR_PROFILE_SERVER: u32 = 1712062494u32;
38513pub const PR_PROFILE_SERVER_DN: u32 = 1712586782u32;
38514pub const PR_PROFILE_SERVER_FULL_VERSION: u32 = 1715142914u32;
38515pub const PR_PROFILE_SERVER_VERSION: u32 = 1713045507u32;
38516pub const PR_PROFILE_TRANSPORT_FLAGS: u32 = 1711603715u32;
38517pub const PR_PROFILE_TYPE: u32 = 1711931395u32;
38518pub const PR_PROFILE_UI_STATE: u32 = 1711669251u32;
38519pub const PR_PROFILE_UNRESOLVED_NAME: u32 = 1711734814u32;
38520pub const PR_PROFILE_UNRESOLVED_NAME_A: u32 = 1711734814u32;
38521pub const PR_PROFILE_UNRESOLVED_NAME_W: u32 = 1711734815u32;
38522pub const PR_PROFILE_UNRESOLVED_SERVER: u32 = 1711800350u32;
38523pub const PR_PROFILE_USER: u32 = 1711472670u32;
38524pub const PR_PROFILE_USER_SMTP_EMAIL_ADDRESS: u32 = 1715535902u32;
38525pub const PR_PROFILE_USER_SMTP_EMAIL_ADDRESS_A: u32 = 1715535902u32;
38526pub const PR_PROFILE_USER_SMTP_EMAIL_ADDRESS_W: u32 = 1715535903u32;
38527pub const PR_PROFILE_VERSION: u32 = 1711276035u32;
38528pub const PR_PROHIBIT_RECEIVE_QUOTA: u32 = 1718222851u32;
38529pub const PR_PROHIBIT_SEND_QUOTA: u32 = 1718484995u32;
38530pub const PR_PROMOTE_PROP_ID_LIST: u32 = 1718288642u32;
38531pub const PR_PROOF_OF_DELIVERY: u32 = 202440962u32;
38532pub const PR_PROOF_OF_DELIVERY_REQUESTED: u32 = 202506251u32;
38533pub const PR_PROOF_OF_SUBMISSION: u32 = 237371650u32;
38534pub const PR_PROOF_OF_SUBMISSION_REQUESTED: u32 = 2621451u32;
38535pub const PR_PROVIDER_DISPLAY: u32 = 805699614u32;
38536pub const PR_PROVIDER_DISPLAY_A: u32 = 805699614u32;
38537pub const PR_PROVIDER_DISPLAY_W: u32 = 805699615u32;
38538pub const PR_PROVIDER_DLL_NAME: u32 = 805961758u32;
38539pub const PR_PROVIDER_DLL_NAME_A: u32 = 805961758u32;
38540pub const PR_PROVIDER_DLL_NAME_W: u32 = 805961759u32;
38541pub const PR_PROVIDER_ORDINAL: u32 = 806158339u32;
38542pub const PR_PROVIDER_SUBMIT_TIME: u32 = 4718656u32;
38543pub const PR_PROVIDER_UID: u32 = 806093058u32;
38544pub const PR_PST_ENCRYPTION: u32 = 1728184323u32;
38545pub const PR_PST_PATH: u32 = 1728053278u32;
38546pub const PR_PST_PW_SZ_NEW: u32 = 1728315422u32;
38547pub const PR_PST_PW_SZ_OLD: u32 = 1728249886u32;
38548pub const PR_PST_REMEMBER_PW: u32 = 1728118795u32;
38549pub const PR_PUBLIC_FOLDER_ENTRYID: u32 = 1715208450u32;
38550pub const PR_PUBLISH_IN_ADDRESS_BOOK: u32 = 1072037899u32;
38551pub const PR_QUOTA_RECEIVE_THRESHOLD: u32 = 1730347011u32;
38552pub const PR_QUOTA_SEND_THRESHOLD: u32 = 1730281475u32;
38553pub const PR_QUOTA_WARNING_THRESHOLD: u32 = 1730215939u32;
38554pub const PR_RADIO_TELEPHONE_NUMBER: u32 = 974979102u32;
38555pub const PR_RADIO_TELEPHONE_NUMBER_A: u32 = 974979102u32;
38556pub const PR_RADIO_TELEPHONE_NUMBER_W: u32 = 974979103u32;
38557pub const PR_RANK: u32 = 1729232899u32;
38558pub const PR_RCVD_REPRESENTING_ADDRTYPE: u32 = 7798814u32;
38559pub const PR_RCVD_REPRESENTING_ADDRTYPE_A: u32 = 7798814u32;
38560pub const PR_RCVD_REPRESENTING_ADDRTYPE_W: u32 = 7798815u32;
38561pub const PR_RCVD_REPRESENTING_EMAIL_ADDRESS: u32 = 7864350u32;
38562pub const PR_RCVD_REPRESENTING_EMAIL_ADDRESS_A: u32 = 7864350u32;
38563pub const PR_RCVD_REPRESENTING_EMAIL_ADDRESS_W: u32 = 7864351u32;
38564pub const PR_RCVD_REPRESENTING_ENTRYID: u32 = 4391170u32;
38565pub const PR_RCVD_REPRESENTING_NAME: u32 = 4456478u32;
38566pub const PR_RCVD_REPRESENTING_NAME_A: u32 = 4456478u32;
38567pub const PR_RCVD_REPRESENTING_NAME_W: u32 = 4456479u32;
38568pub const PR_RCVD_REPRESENTING_SEARCH_KEY: u32 = 5374210u32;
38569pub const PR_RCVD_REPRESENTING_SID: u32 = 240582914u32;
38570pub const PR_RCVD_REPRESENTING_SID_AS_XML: u32 = 242745374u32;
38571pub const PR_RCVD_REPRESENTING_SMTP_ADDRESS: u32 = 1560805406u32;
38572pub const PR_RCVD_REPRESENTING_SMTP_ADDRESS_A: u32 = 1560805406u32;
38573pub const PR_RCVD_REPRESENTING_SMTP_ADDRESS_W: u32 = 1560805407u32;
38574pub const PR_READ: u32 = 241762315u32;
38575pub const PR_READ_RECEIPT_ENTRYID: u32 = 4587778u32;
38576pub const PR_READ_RECEIPT_REQUESTED: u32 = 2686987u32;
38577pub const PR_READ_RECEIPT_SEARCH_KEY: u32 = 5439746u32;
38578pub const PR_READ_RECEIPT_SID: u32 = 240189698u32;
38579pub const PR_READ_RECEIPT_SID_AS_XML: u32 = 242352158u32;
38580pub const PR_RECEIPT_TIME: u32 = 2752576u32;
38581pub const PR_RECEIVED_BY_ADDRTYPE: u32 = 7667742u32;
38582pub const PR_RECEIVED_BY_ADDRTYPE_A: u32 = 7667742u32;
38583pub const PR_RECEIVED_BY_ADDRTYPE_W: u32 = 7667743u32;
38584pub const PR_RECEIVED_BY_EMAIL_ADDRESS: u32 = 7733278u32;
38585pub const PR_RECEIVED_BY_EMAIL_ADDRESS_A: u32 = 7733278u32;
38586pub const PR_RECEIVED_BY_EMAIL_ADDRESS_W: u32 = 7733279u32;
38587pub const PR_RECEIVED_BY_ENTRYID: u32 = 4129026u32;
38588pub const PR_RECEIVED_BY_NAME: u32 = 4194334u32;
38589pub const PR_RECEIVED_BY_NAME_A: u32 = 4194334u32;
38590pub const PR_RECEIVED_BY_NAME_W: u32 = 4194335u32;
38591pub const PR_RECEIVED_BY_SEARCH_KEY: u32 = 5308674u32;
38592pub const PR_RECEIVED_BY_SID: u32 = 240517378u32;
38593pub const PR_RECEIVED_BY_SID_AS_XML: u32 = 242679838u32;
38594pub const PR_RECEIVED_BY_SMTP_ADDRESS: u32 = 1560739870u32;
38595pub const PR_RECEIVED_BY_SMTP_ADDRESS_A: u32 = 1560739870u32;
38596pub const PR_RECEIVED_BY_SMTP_ADDRESS_W: u32 = 1560739871u32;
38597pub const PR_RECEIVE_FOLDER_SETTINGS: u32 = 873791501u32;
38598pub const PR_RECIPIENT_CERTIFICATE: u32 = 202572034u32;
38599pub const PR_RECIPIENT_NUMBER: u32 = 1717698563u32;
38600pub const PR_RECIPIENT_NUMBER_FOR_ADVICE: u32 = 202637342u32;
38601pub const PR_RECIPIENT_NUMBER_FOR_ADVICE_A: u32 = 202637342u32;
38602pub const PR_RECIPIENT_NUMBER_FOR_ADVICE_W: u32 = 202637343u32;
38603pub const PR_RECIPIENT_ON_ASSOC_MSG_COUNT: u32 = 1722810371u32;
38604pub const PR_RECIPIENT_ON_NORMAL_MSG_COUNT: u32 = 1722744835u32;
38605pub const PR_RECIPIENT_REASSIGNMENT_PROHIBITED: u32 = 2818059u32;
38606pub const PR_RECIPIENT_STATUS: u32 = 236257283u32;
38607pub const PR_RECIPIENT_TYPE: u32 = 202702851u32;
38608pub const PR_RECORD_KEY: u32 = 267976962u32;
38609pub const PR_REDIRECTION_HISTORY: u32 = 2883842u32;
38610pub const PR_REGISTERED_MAIL_TYPE: u32 = 202768387u32;
38611pub const PR_RELATED_IPMS: u32 = 2949378u32;
38612pub const PR_REMOTE_PROGRESS: u32 = 1040908291u32;
38613pub const PR_REMOTE_PROGRESS_TEXT: u32 = 1040973854u32;
38614pub const PR_REMOTE_PROGRESS_TEXT_A: u32 = 1040973854u32;
38615pub const PR_REMOTE_PROGRESS_TEXT_W: u32 = 1040973855u32;
38616pub const PR_REMOTE_VALIDATE_OK: u32 = 1041039371u32;
38617pub const PR_RENDERING_POSITION: u32 = 923467779u32;
38618pub const PR_REPLICATION_ALWAYS_INTERVAL: u32 = 1720975363u32;
38619pub const PR_REPLICATION_MESSAGE_PRIORITY: u32 = 1720844291u32;
38620pub const PR_REPLICATION_MSG_SIZE: u32 = 1721040899u32;
38621pub const PR_REPLICATION_SCHEDULE: u32 = 1720779010u32;
38622pub const PR_REPLICATION_STYLE: u32 = 1720713219u32;
38623pub const PR_REPLICA_LIST: u32 = 1721237762u32;
38624pub const PR_REPLICA_SERVER: u32 = 1715732510u32;
38625pub const PR_REPLICA_SERVER_W: u32 = 1715732511u32;
38626pub const PR_REPLICA_VERSION: u32 = 1716191252u32;
38627pub const PR_REPLY_RECIPIENT_ENTRIES: u32 = 5177602u32;
38628pub const PR_REPLY_RECIPIENT_NAMES: u32 = 5242910u32;
38629pub const PR_REPLY_RECIPIENT_NAMES_A: u32 = 5242910u32;
38630pub const PR_REPLY_RECIPIENT_NAMES_W: u32 = 5242911u32;
38631pub const PR_REPLY_RECIPIENT_SMTP_PROXIES: u32 = 1073479710u32;
38632pub const PR_REPLY_REQUESTED: u32 = 202833931u32;
38633pub const PR_REPLY_TIME: u32 = 3145792u32;
38634pub const PR_REPORTING_DL_NAME: u32 = 268632322u32;
38635pub const PR_REPORTING_MTA_CERTIFICATE: u32 = 268697858u32;
38636pub const PR_REPORT_DESTINATION_ENTRYID: u32 = 1717895426u32;
38637pub const PR_REPORT_DESTINATION_NAME: u32 = 1717829662u32;
38638pub const PR_REPORT_DESTINATION_SID: u32 = 240386306u32;
38639pub const PR_REPORT_DESTINATION_SID_AS_XML: u32 = 242548766u32;
38640pub const PR_REPORT_ENTRYID: u32 = 4522242u32;
38641pub const PR_REPORT_NAME: u32 = 3801118u32;
38642pub const PR_REPORT_NAME_A: u32 = 3801118u32;
38643pub const PR_REPORT_NAME_W: u32 = 3801119u32;
38644pub const PR_REPORT_SEARCH_KEY: u32 = 5505282u32;
38645pub const PR_REPORT_SID: u32 = 240255234u32;
38646pub const PR_REPORT_SID_AS_XML: u32 = 242417694u32;
38647pub const PR_REPORT_TAG: u32 = 3211522u32;
38648pub const PR_REPORT_TEXT: u32 = 268501022u32;
38649pub const PR_REPORT_TEXT_A: u32 = 268501022u32;
38650pub const PR_REPORT_TEXT_W: u32 = 268501023u32;
38651pub const PR_REPORT_TIME: u32 = 3276864u32;
38652pub const PR_REQUESTED_DELIVERY_METHOD: u32 = 202899459u32;
38653pub const PR_RESERVE_RANGE_OF_IDS: u32 = 242942210u32;
38654pub const PR_RESOLVE_METHOD: u32 = 1072103427u32;
38655pub const PR_RESOURCE_FLAGS: u32 = 805896195u32;
38656pub const PR_RESOURCE_METHODS: u32 = 1040318467u32;
38657pub const PR_RESOURCE_PATH: u32 = 1040646174u32;
38658pub const PR_RESOURCE_PATH_A: u32 = 1040646174u32;
38659pub const PR_RESOURCE_PATH_W: u32 = 1040646175u32;
38660pub const PR_RESOURCE_TYPE: u32 = 1040384003u32;
38661pub const PR_RESPONSE_REQUESTED: u32 = 6488075u32;
38662pub const PR_RESPONSIBILITY: u32 = 235864075u32;
38663pub const PR_RESTRICTION_COUNT: u32 = 1722417155u32;
38664pub const PR_RETENTION_AGE_LIMIT: u32 = 1724121091u32;
38665pub const PR_RETENTION_DATE: u32 = 807141440u32;
38666pub const PR_RETENTION_FLAGS: u32 = 807206915u32;
38667pub const PR_RETENTION_PERIOD: u32 = 807010307u32;
38668pub const PR_RETURNED_IPM: u32 = 3342347u32;
38669pub const PR_RIGHTS: u32 = 1715011587u32;
38670pub const PR_ROH_FLAGS: u32 = 1713569795u32;
38671pub const PR_ROH_PROXY_AUTH_SCHEME: u32 = 1713831939u32;
38672pub const PR_ROWID: u32 = 805306371u32;
38673pub const PR_ROW_TYPE: u32 = 267714563u32;
38674pub const PR_RTF_COMPRESSED: u32 = 269025538u32;
38675pub const PR_RTF_IN_SYNC: u32 = 236912651u32;
38676pub const PR_RTF_SYNC_BODY_COUNT: u32 = 268894211u32;
38677pub const PR_RTF_SYNC_BODY_CRC: u32 = 268828675u32;
38678pub const PR_RTF_SYNC_BODY_TAG: u32 = 268959774u32;
38679pub const PR_RTF_SYNC_BODY_TAG_A: u32 = 268959774u32;
38680pub const PR_RTF_SYNC_BODY_TAG_W: u32 = 268959775u32;
38681pub const PR_RTF_SYNC_PREFIX_COUNT: u32 = 269484035u32;
38682pub const PR_RTF_SYNC_TRAILING_COUNT: u32 = 269549571u32;
38683pub const PR_RULES_DATA: u32 = 1071710466u32;
38684pub const PR_RULES_TABLE: u32 = 1071710221u32;
38685pub const PR_RULE_ACTIONS: u32 = 1719664894u32;
38686pub const PR_RULE_ACTION_NUMBER: u32 = 1716518915u32;
38687pub const PR_RULE_ACTION_TYPE: u32 = 1716060163u32;
38688pub const PR_RULE_CONDITION: u32 = 1719206141u32;
38689pub const PR_RULE_ERROR: u32 = 1715994627u32;
38690pub const PR_RULE_FOLDER_ENTRYID: u32 = 1716584706u32;
38691pub const PR_RULE_ID: u32 = 1718878228u32;
38692pub const PR_RULE_IDS: u32 = 1718944002u32;
38693pub const PR_RULE_LEVEL: u32 = 1719861251u32;
38694pub const PR_RULE_MSG_LEVEL: u32 = 1710030851u32;
38695pub const PR_RULE_MSG_NAME_W: u32 = 1709965343u32;
38696pub const PR_RULE_MSG_PROVIDER_DATA: u32 = 1710096642u32;
38697pub const PR_RULE_MSG_PROVIDER_W: u32 = 1709899807u32;
38698pub const PR_RULE_MSG_SEQUENCE: u32 = 1710424067u32;
38699pub const PR_RULE_MSG_STATE: u32 = 1709768707u32;
38700pub const PR_RULE_MSG_USER_FLAGS: u32 = 1709834243u32;
38701pub const PR_RULE_NAME: u32 = 1719795742u32;
38702pub const PR_RULE_PROVIDER: u32 = 1719730206u32;
38703pub const PR_RULE_PROVIDER_DATA: u32 = 1719927042u32;
38704pub const PR_RULE_SEQUENCE: u32 = 1719009283u32;
38705pub const PR_RULE_SERVER_RULE_ID: u32 = 1704984596u32;
38706pub const PR_RULE_STATE: u32 = 1719074819u32;
38707pub const PR_RULE_TRIGGER_HISTORY: u32 = 1072824578u32;
38708pub const PR_RULE_USER_FLAGS: u32 = 1719140355u32;
38709pub const PR_SCHEDULE_FOLDER_ENTRYID: u32 = 1713242370u32;
38710pub const PR_SEARCH: u32 = 906428429u32;
38711pub const PR_SEARCH_KEY: u32 = 806027522u32;
38712pub const PR_SECURE_IN_SITE: u32 = 1721630731u32;
38713pub const PR_SECURE_ORIGINATION: u32 = 1071972363u32;
38714pub const PR_SECURITY: u32 = 3407875u32;
38715pub const PR_SELECTABLE: u32 = 906559499u32;
38716pub const PR_SENDER_ADDRTYPE: u32 = 203292702u32;
38717pub const PR_SENDER_ADDRTYPE_A: u32 = 203292702u32;
38718pub const PR_SENDER_ADDRTYPE_W: u32 = 203292703u32;
38719pub const PR_SENDER_EMAIL_ADDRESS: u32 = 203358238u32;
38720pub const PR_SENDER_EMAIL_ADDRESS_A: u32 = 203358238u32;
38721pub const PR_SENDER_EMAIL_ADDRESS_W: u32 = 203358239u32;
38722pub const PR_SENDER_ENTRYID: u32 = 202965250u32;
38723pub const PR_SENDER_NAME: u32 = 203030558u32;
38724pub const PR_SENDER_NAME_A: u32 = 203030558u32;
38725pub const PR_SENDER_NAME_W: u32 = 203030559u32;
38726pub const PR_SENDER_SEARCH_KEY: u32 = 203227394u32;
38727pub const PR_SENDER_SID: u32 = 239927554u32;
38728pub const PR_SENDER_SID_AS_XML: u32 = 242090014u32;
38729pub const PR_SENDER_SMTP_ADDRESS: u32 = 1560346654u32;
38730pub const PR_SENDER_SMTP_ADDRESS_A: u32 = 1560346654u32;
38731pub const PR_SENDER_SMTP_ADDRESS_W: u32 = 1560346655u32;
38732pub const PR_SEND_RICH_INFO: u32 = 977272843u32;
38733pub const PR_SENSITIVITY: u32 = 3538947u32;
38734pub const PR_SENTMAIL_ENTRYID: u32 = 235536642u32;
38735pub const PR_SENT_REPRESENTING_ADDRTYPE: u32 = 6553630u32;
38736pub const PR_SENT_REPRESENTING_ADDRTYPE_A: u32 = 6553630u32;
38737pub const PR_SENT_REPRESENTING_ADDRTYPE_W: u32 = 6553631u32;
38738pub const PR_SENT_REPRESENTING_EMAIL_ADDRESS: u32 = 6619166u32;
38739pub const PR_SENT_REPRESENTING_EMAIL_ADDRESS_A: u32 = 6619166u32;
38740pub const PR_SENT_REPRESENTING_EMAIL_ADDRESS_W: u32 = 6619167u32;
38741pub const PR_SENT_REPRESENTING_ENTRYID: u32 = 4260098u32;
38742pub const PR_SENT_REPRESENTING_NAME: u32 = 4325406u32;
38743pub const PR_SENT_REPRESENTING_NAME_A: u32 = 4325406u32;
38744pub const PR_SENT_REPRESENTING_NAME_W: u32 = 4325407u32;
38745pub const PR_SENT_REPRESENTING_SEARCH_KEY: u32 = 3866882u32;
38746pub const PR_SENT_REPRESENTING_SID: u32 = 239993090u32;
38747pub const PR_SENT_REPRESENTING_SID_AS_XML: u32 = 242155550u32;
38748pub const PR_SENT_REPRESENTING_SMTP_ADDRESS: u32 = 1560412190u32;
38749pub const PR_SENT_REPRESENTING_SMTP_ADDRESS_A: u32 = 1560412190u32;
38750pub const PR_SENT_REPRESENTING_SMTP_ADDRESS_W: u32 = 1560412191u32;
38751pub const PR_SERVICES: u32 = 1024327938u32;
38752pub const PR_SERVICE_DELETE_FILES: u32 = 1024462878u32;
38753pub const PR_SERVICE_DELETE_FILES_A: u32 = 1024462878u32;
38754pub const PR_SERVICE_DELETE_FILES_W: u32 = 1024462879u32;
38755pub const PR_SERVICE_DLL_NAME: u32 = 1024065566u32;
38756pub const PR_SERVICE_DLL_NAME_A: u32 = 1024065566u32;
38757pub const PR_SERVICE_DLL_NAME_W: u32 = 1024065567u32;
38758pub const PR_SERVICE_ENTRY_NAME: u32 = 1024131102u32;
38759pub const PR_SERVICE_EXTRA_UIDS: u32 = 1024262402u32;
38760pub const PR_SERVICE_NAME: u32 = 1024000030u32;
38761pub const PR_SERVICE_NAME_A: u32 = 1024000030u32;
38762pub const PR_SERVICE_NAME_W: u32 = 1024000031u32;
38763pub const PR_SERVICE_SUPPORT_FILES: u32 = 1024397342u32;
38764pub const PR_SERVICE_SUPPORT_FILES_A: u32 = 1024397342u32;
38765pub const PR_SERVICE_SUPPORT_FILES_W: u32 = 1024397343u32;
38766pub const PR_SERVICE_UID: u32 = 1024196866u32;
38767pub const PR_SHORTTERM_ENTRYID_FROM_OBJECT: u32 = 1718747394u32;
38768pub const PR_SHORTTERM_PARENT_ENTRYID_FROM_OBJECT: u32 = 1718681858u32;
38769pub const PR_SMTP_ADDRESS: u32 = 972947486u32;
38770pub const PR_SMTP_ADDRESS_A: u32 = 972947486u32;
38771pub const PR_SMTP_ADDRESS_W: u32 = 972947487u32;
38772pub const PR_SORT_LOCALE_ID: u32 = 1728380931u32;
38773pub const PR_SORT_PARENTID: u32 = 807469314u32;
38774pub const PR_SORT_POSITION: u32 = 807403778u32;
38775pub const PR_SOURCE_FID: u32 = 241106964u32;
38776pub const PR_SOURCE_KEY: u32 = 1709179138u32;
38777pub const PR_SPLUS_FREE_BUSY_ENTRYID: u32 = 1713504514u32;
38778pub const PR_SPOOLER_STATUS: u32 = 235929603u32;
38779pub const PR_SPOUSE_NAME: u32 = 977797150u32;
38780pub const PR_SPOUSE_NAME_A: u32 = 977797150u32;
38781pub const PR_SPOUSE_NAME_W: u32 = 977797151u32;
38782pub const PR_SRC_URL_NAME: u32 = 1729036318u32;
38783pub const PR_SRC_URL_NAME_A: u32 = 1729036318u32;
38784pub const PR_SRC_URL_NAME_W: u32 = 1729036319u32;
38785pub const PR_START_DATE: u32 = 6291520u32;
38786pub const PR_START_DATE_ETC: u32 = 807076098u32;
38787pub const PR_STATE_OR_PROVINCE: u32 = 975699998u32;
38788pub const PR_STATE_OR_PROVINCE_A: u32 = 975699998u32;
38789pub const PR_STATE_OR_PROVINCE_W: u32 = 975699999u32;
38790pub const PR_STATUS: u32 = 906690563u32;
38791pub const PR_STATUS_CODE: u32 = 1040449539u32;
38792pub const PR_STATUS_STRING: u32 = 1040711710u32;
38793pub const PR_STATUS_STRING_A: u32 = 1040711710u32;
38794pub const PR_STATUS_STRING_W: u32 = 1040711711u32;
38795pub const PR_STORAGE_LIMIT_INFORMATION: u32 = 1722023939u32;
38796pub const PR_STORAGE_QUOTA_LIMIT: u32 = 1073020931u32;
38797pub const PR_STORE_ENTRYID: u32 = 268108034u32;
38798pub const PR_STORE_OFFLINE: u32 = 1714552843u32;
38799pub const PR_STORE_PROVIDERS: u32 = 1023410434u32;
38800pub const PR_STORE_RECORD_KEY: u32 = 268042498u32;
38801pub const PR_STORE_SLOWLINK: u32 = 2081030155u32;
38802pub const PR_STORE_STATE: u32 = 873332739u32;
38803pub const PR_STORE_SUPPORT_MASK: u32 = 873267203u32;
38804pub const PR_STREET_ADDRESS: u32 = 975765534u32;
38805pub const PR_STREET_ADDRESS_A: u32 = 975765534u32;
38806pub const PR_STREET_ADDRESS_W: u32 = 975765535u32;
38807pub const PR_SUBFOLDER: u32 = 1728577547u32;
38808pub const PR_SUBFOLDERS: u32 = 906625035u32;
38809pub const PR_SUBJECT: u32 = 3604510u32;
38810pub const PR_SUBJECT_A: u32 = 3604510u32;
38811pub const PR_SUBJECT_IPM: u32 = 3670274u32;
38812pub const PR_SUBJECT_PREFIX: u32 = 3997726u32;
38813pub const PR_SUBJECT_PREFIX_A: u32 = 3997726u32;
38814pub const PR_SUBJECT_PREFIX_W: u32 = 3997727u32;
38815pub const PR_SUBJECT_TRACE_INFO: u32 = 1717633282u32;
38816pub const PR_SUBJECT_W: u32 = 3604511u32;
38817pub const PR_SUBMIT_FLAGS: u32 = 236191747u32;
38818pub const PR_SUPPLEMENTARY_INFO: u32 = 203096094u32;
38819pub const PR_SUPPLEMENTARY_INFO_A: u32 = 203096094u32;
38820pub const PR_SUPPLEMENTARY_INFO_W: u32 = 203096095u32;
38821pub const PR_SURNAME: u32 = 974192670u32;
38822pub const PR_SURNAME_A: u32 = 974192670u32;
38823pub const PR_SURNAME_W: u32 = 974192671u32;
38824pub const PR_SVR_GENERATING_QUOTA_MSG: u32 = 1073152030u32;
38825pub const PR_SYNCEVENT_FIRED: u32 = 1716453387u32;
38826pub const PR_SYNCEVENT_SUPPRESS_GUID: u32 = 947912962u32;
38827pub const PR_SYNCHRONIZE_FLAGS: u32 = 1709441027u32;
38828pub const PR_SYS_CONFIG_FOLDER_ENTRYID: u32 = 1714815234u32;
38829pub const PR_TELEX_NUMBER: u32 = 975962142u32;
38830pub const PR_TELEX_NUMBER_A: u32 = 975962142u32;
38831pub const PR_TELEX_NUMBER_W: u32 = 975962143u32;
38832pub const PR_TEMPLATEID: u32 = 956432642u32;
38833pub const PR_TEST_LINE_SPEED: u32 = 1714094338u32;
38834pub const PR_TITLE: u32 = 974585886u32;
38835pub const PR_TITLE_A: u32 = 974585886u32;
38836pub const PR_TITLE_W: u32 = 974585887u32;
38837pub const PR_TNEF_CORRELATION_KEY: u32 = 8323330u32;
38838pub const PR_TNEF_UNPROCESSED_PROPS: u32 = 245104898u32;
38839pub const PR_TRACE_INFO: u32 = 1717567746u32;
38840pub const PR_TRANSFER_ENABLED: u32 = 1714028555u32;
38841pub const PR_TRANSMITABLE_DISPLAY_NAME: u32 = 975175710u32;
38842pub const PR_TRANSMITABLE_DISPLAY_NAME_A: u32 = 975175710u32;
38843pub const PR_TRANSMITABLE_DISPLAY_NAME_W: u32 = 975175711u32;
38844pub const PR_TRANSPORT_KEY: u32 = 236322819u32;
38845pub const PR_TRANSPORT_MESSAGE_HEADERS: u32 = 8192030u32;
38846pub const PR_TRANSPORT_MESSAGE_HEADERS_A: u32 = 8192030u32;
38847pub const PR_TRANSPORT_MESSAGE_HEADERS_W: u32 = 8192031u32;
38848pub const PR_TRANSPORT_PROVIDERS: u32 = 1023541506u32;
38849pub const PR_TRANSPORT_STATUS: u32 = 235995139u32;
38850pub const PR_TRUST_SENDER: u32 = 242810883u32;
38851pub const PR_TRUST_SENDER_NO: i32 = 0i32;
38852pub const PR_TRUST_SENDER_YES: i32 = 1i32;
38853pub const PR_TTYTDD_PHONE_NUMBER: u32 = 977993758u32;
38854pub const PR_TTYTDD_PHONE_NUMBER_A: u32 = 977993758u32;
38855pub const PR_TTYTDD_PHONE_NUMBER_W: u32 = 977993759u32;
38856pub const PR_TYPE_OF_MTS_USER: u32 = 203161603u32;
38857pub const PR_URL_COMP_NAME: u32 = 284360734u32;
38858pub const PR_URL_COMP_NAME_A: u32 = 284360734u32;
38859pub const PR_URL_COMP_NAME_W: u32 = 284360735u32;
38860pub const PR_URL_NAME: u32 = 1728512030u32;
38861pub const PR_URL_NAME_A: u32 = 1728512030u32;
38862pub const PR_URL_NAME_W: u32 = 1728512031u32;
38863pub const PR_USER_CERTIFICATE: u32 = 975307010u32;
38864pub const PR_USER_ENTRYID: u32 = 1712914690u32;
38865pub const PR_USER_NAME: u32 = 1712979998u32;
38866pub const PR_VALID_FOLDER_MASK: u32 = 903806979u32;
38867pub const PR_VIEWS_ENTRYID: u32 = 904200450u32;
38868pub const PR_WEDDING_ANNIVERSARY: u32 = 977338432u32;
38869pub const PR_WIN32_SECURITY_DESCRIPTOR: u32 = 1025638658u32;
38870pub const PR_WIZARD_NO_PAB_PAGE: u32 = 1728118795u32;
38871pub const PR_WIZARD_NO_PST_PAGE: u32 = 1728053259u32;
38872pub const PR_X400_CONTENT_TYPE: u32 = 3932418u32;
38873pub const PR_X400_DEFERRED_DELIVERY_CANCEL: u32 = 1040777227u32;
38874pub const PR_X400_ENVELOPE_TYPE: u32 = 1716715523u32;
38875pub const PR_XMT_SECURITY_ROLE_1: u32 = 1025835266u32;
38876pub const PR_XMT_SECURITY_ROLE_1_AS_XML: u32 = 1025835038u32;
38877pub const PR_XMT_SECURITY_ROLE_2: u32 = 1025900802u32;
38878pub const PR_XMT_SECURITY_ROLE_2_AS_XML: u32 = 1025900574u32;
38879pub const PR_XMT_SECURITY_ROLE_3: u32 = 1025966338u32;
38880pub const PR_XMT_SECURITY_ROLE_3_AS_XML: u32 = 1025966110u32;
38881pub const PR_XMT_SECURITY_ROLE_4: u32 = 1026031874u32;
38882pub const PR_XMT_SECURITY_ROLE_4_AS_XML: u32 = 1026031646u32;
38883pub const PR_XMT_SECURITY_ROLE_5: u32 = 1026097410u32;
38884pub const PR_XMT_SECURITY_ROLE_5_AS_XML: u32 = 1026097182u32;
38885pub const PR_XMT_SECURITY_ROLE_6: u32 = 1026162946u32;
38886pub const PR_XMT_SECURITY_ROLE_6_AS_XML: u32 = 1026162718u32;
38887pub const PR_XMT_SECURITY_ROLE_7: u32 = 1026228482u32;
38888pub const PR_XMT_SECURITY_ROLE_7_AS_XML: u32 = 1026228254u32;
38889pub const PR_XMT_SECURITY_ROLE_8: u32 = 1026294018u32;
38890pub const PR_XMT_SECURITY_ROLE_8_AS_XML: u32 = 1026293790u32;
38891pub const PR_XPOS: u32 = 1057292291u32;
38892pub const PR_YPOS: u32 = 1057357827u32;
38893pub const PSETID_Address: windows_core::GUID =
38894    windows_core::GUID::from_u128(0x00062004_0000_0000_c000_000000000046);
38895pub const PSETID_Appointment: windows_core::GUID =
38896    windows_core::GUID::from_u128(0x00062002_0000_0000_c000_000000000046);
38897pub const PSETID_Attachment: windows_core::GUID =
38898    windows_core::GUID::from_u128(0x96357f7f_59e1_47d0_99a7_46515c183b54);
38899pub const PSETID_Common: windows_core::GUID =
38900    windows_core::GUID::from_u128(0x00062008_0000_0000_c000_000000000046);
38901pub const PSETID_Log: windows_core::GUID =
38902    windows_core::GUID::from_u128(0x0006200a_0000_0000_c000_000000000046);
38903pub const PSETID_Meeting: windows_core::GUID =
38904    windows_core::GUID::from_u128(0x6ed8da90_450b_101b_98da_00aa003f1305);
38905pub const PSETID_Messaging: windows_core::GUID =
38906    windows_core::GUID::from_u128(0x41f28f13_83f4_4114_a584_eedb5a6b0bff);
38907pub const PSETID_Note: windows_core::GUID =
38908    windows_core::GUID::from_u128(0x0006200e_0000_0000_c000_000000000046);
38909pub const PSETID_PostRss: windows_core::GUID =
38910    windows_core::GUID::from_u128(0x00062041_0000_0000_c000_000000000046);
38911pub const PSETID_Remote: windows_core::GUID =
38912    windows_core::GUID::from_u128(0x00062014_0000_0000_c000_000000000046);
38913pub const PSETID_Report: windows_core::GUID =
38914    windows_core::GUID::from_u128(0x00062013_0000_0000_c000_000000000046);
38915pub const PSETID_Sharing: windows_core::GUID =
38916    windows_core::GUID::from_u128(0x00062040_0000_0000_c000_000000000046);
38917pub const PSETID_Task: windows_core::GUID =
38918    windows_core::GUID::from_u128(0x00062003_0000_0000_c000_000000000046);
38919pub const PSETID_UnifiedMessaging: windows_core::GUID =
38920    windows_core::GUID::from_u128(0x4442858e_a9e3_4e80_b900_317a210cc15b);
38921pub const PSETID_XmlExtractedEntities: windows_core::GUID =
38922    windows_core::GUID::from_u128(0x23239608_685d_4732_9c55_4c95cb4e8e33);
38923pub const PSTF_BEST_ENCRYPTION: u32 = 536870912u32;
38924pub const PSTF_COMPRESSABLE_ENCRYPTION: u32 = 1073741824u32;
38925pub const PSTF_NO_ENCRYPTION: u32 = 2147483648u32;
38926pub const PST_EXTERN_PROPID_BASE: u32 = 26368u32;
38927pub const PS_INTERNET_HEADERS: windows_core::GUID =
38928    windows_core::GUID::from_u128(0x00020386_0000_0000_c000_000000000046);
38929pub const PS_MAPI: windows_core::GUID =
38930    windows_core::GUID::from_u128(0x00020328_0000_0000_c000_000000000046);
38931pub const PS_PUBLIC_STRINGS: windows_core::GUID =
38932    windows_core::GUID::from_u128(0x00020329_0000_0000_c000_000000000046);
38933pub const PS_ROUTING_ADDRTYPE: windows_core::GUID =
38934    windows_core::GUID::from_u128(0x00020381_0000_0000_c000_000000000046);
38935pub const PS_ROUTING_DISPLAY_NAME: windows_core::GUID =
38936    windows_core::GUID::from_u128(0x00020382_0000_0000_c000_000000000046);
38937pub const PS_ROUTING_EMAIL_ADDRESSES: windows_core::GUID =
38938    windows_core::GUID::from_u128(0x00020380_0000_0000_c000_000000000046);
38939pub const PS_ROUTING_ENTRYID: windows_core::GUID =
38940    windows_core::GUID::from_u128(0x00020383_0000_0000_c000_000000000046);
38941pub const PS_ROUTING_SEARCH_KEY: windows_core::GUID =
38942    windows_core::GUID::from_u128(0x00020384_0000_0000_c000_000000000046);
38943pub const PT_ACTIONS: u32 = 254u32;
38944pub const PT_APPTIME: u32 = 7u32;
38945pub const PT_BINARY: u32 = 258u32;
38946pub const PT_BOOLEAN: u32 = 11u32;
38947pub const PT_CLSID: u32 = 72u32;
38948pub const PT_CURRENCY: u32 = 6u32;
38949pub const PT_DOUBLE: u32 = 5u32;
38950pub const PT_ERROR: u32 = 10u32;
38951pub const PT_FILE_EA: u32 = 260u32;
38952pub const PT_FILE_HANDLE: u32 = 259u32;
38953pub const PT_FLOAT: u32 = 4u32;
38954pub const PT_I2: u32 = 2u32;
38955pub const PT_I4: u32 = 3u32;
38956pub const PT_I8: u32 = 20u32;
38957pub const PT_LONG: u32 = 3u32;
38958pub const PT_LONGLONG: u32 = 20u32;
38959pub const PT_MV_APPTIME: u32 = 4103u32;
38960pub const PT_MV_BINARY: u32 = 4354u32;
38961pub const PT_MV_CLSID: u32 = 4168u32;
38962pub const PT_MV_CURRENCY: u32 = 4102u32;
38963pub const PT_MV_DOUBLE: u32 = 4101u32;
38964pub const PT_MV_FLOAT: u32 = 4100u32;
38965pub const PT_MV_I2: u32 = 4098u32;
38966pub const PT_MV_I4: u32 = 4099u32;
38967pub const PT_MV_I8: u32 = 4116u32;
38968pub const PT_MV_LONG: u32 = 4099u32;
38969pub const PT_MV_LONGLONG: u32 = 4116u32;
38970pub const PT_MV_R4: u32 = 4100u32;
38971pub const PT_MV_R8: u32 = 4101u32;
38972pub const PT_MV_SHORT: u32 = 4098u32;
38973pub const PT_MV_STRING8: u32 = 4126u32;
38974pub const PT_MV_SYSTIME: u32 = 4160u32;
38975pub const PT_MV_TSTRING: u32 = 4126u32;
38976pub const PT_MV_UNICODE: u32 = 4127u32;
38977pub const PT_NULL: u32 = 1u32;
38978pub const PT_OBJECT: u32 = 13u32;
38979pub const PT_PTR: u32 = 259u32;
38980pub const PT_R4: u32 = 4u32;
38981pub const PT_R8: u32 = 5u32;
38982pub const PT_SHORT: u32 = 2u32;
38983pub const PT_SRESTRICTION: u32 = 253u32;
38984pub const PT_STRING8: u32 = 30u32;
38985pub const PT_SYSTIME: u32 = 64u32;
38986pub const PT_TSTRING: u32 = 31u32;
38987pub const PT_UNICODE: u32 = 31u32;
38988pub const PT_UNSPECIFIED: u32 = 0u32;
38989pub const PT_VIRTUAL: u32 = 261u32;
38990#[repr(C)]
38991#[derive(Clone, Copy, Debug, PartialEq)]
38992pub struct READSTATE {
38993    pub cbSourceKey: u32,
38994    pub pbSourceKey: *mut u8,
38995    pub ulFlags: u32,
38996}
38997impl Default for READSTATE {
38998    fn default() -> Self {
38999        unsafe { core::mem::zeroed() }
39000    }
39001}
39002pub const RECURSIVE_SEARCH: u32 = 4u32;
39003pub const RECURSIVE_SORT: u32 = 2u32;
39004pub const REFRESH_XP_HEADER_CACHE: u32 = 65536u32;
39005#[repr(transparent)]
39006#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
39007pub struct RELOADTYPE(pub i32);
39008pub const RELOAD_HEADER_APPEND: RELOADTYPE = RELOADTYPE(2i32);
39009pub const RELOAD_HEADER_NONE: RELOADTYPE = RELOADTYPE(0i32);
39010pub const RELOAD_HEADER_REPLACE: RELOADTYPE = RELOADTYPE(3i32);
39011pub const RELOAD_HEADER_RESET: RELOADTYPE = RELOADTYPE(1i32);
39012pub const RELOP_EQ: u32 = 4u32;
39013pub const RELOP_GE: u32 = 3u32;
39014pub const RELOP_GT: u32 = 2u32;
39015pub const RELOP_LE: u32 = 1u32;
39016pub const RELOP_LT: u32 = 0u32;
39017pub const RELOP_MEMBER_OF_DL: u32 = 100u32;
39018pub const RELOP_NE: u32 = 5u32;
39019pub const RELOP_RE: u32 = 6u32;
39020pub type REMOVEPREPROCESSINFO = Option<
39021    unsafe extern "system" fn(lpmessage: windows_core::Ref<'_, IMessage>) -> windows_core::HRESULT,
39022>;
39023pub const RESOLVE_METHOD_DEFAULT: u32 = 0u32;
39024pub const RESOLVE_METHOD_LAST_WRITER_WINS: u32 = 1u32;
39025pub const RESOLVE_METHOD_NO_CONFLICT_NOTIFICATION: u32 = 2u32;
39026pub const RESTART_SEARCH: u32 = 2u32;
39027pub const RES_AND: u32 = 0u32;
39028pub const RES_ANNOTATION: u32 = 12u32;
39029pub const RES_BITMASK: u32 = 6u32;
39030pub const RES_COMMENT: u32 = 10u32;
39031pub const RES_COMPAREPROPS: u32 = 5u32;
39032pub const RES_CONTENT: u32 = 3u32;
39033pub const RES_COUNT: u32 = 11u32;
39034pub const RES_EXIST: u32 = 8u32;
39035pub const RES_NOT: u32 = 2u32;
39036pub const RES_OR: u32 = 1u32;
39037pub const RES_PROPERTY: u32 = 4u32;
39038pub const RES_SIZE: u32 = 7u32;
39039pub const RES_SUBRESTRICTION: u32 = 9u32;
39040pub const RETENTION_FLAGS_AUTOTAG: u32 = 4u32;
39041pub const RETENTION_FLAGS_EXPLICIT: u32 = 1u32;
39042pub const RETENTION_FLAGS_EXPLICIT_ARCHIVE: u32 = 16u32;
39043pub const RETENTION_FLAGS_PERSONAL: u32 = 8u32;
39044pub const RETENTION_FLAGS_TAG_CHANGED: u32 = 2u32;
39045#[repr(C)]
39046#[derive(Clone, Copy, Debug, PartialEq)]
39047pub struct RFC1522INFO {
39048    pub fRfc1522Allowed: windows_core::BOOL,
39049    pub fRfc1522Used: windows_core::BOOL,
39050    pub fAllow8bit: windows_core::BOOL,
39051    pub hRfc1522Cset: *mut HCHARSET__,
39052}
39053impl Default for RFC1522INFO {
39054    fn default() -> Self {
39055        unsafe { core::mem::zeroed() }
39056    }
39057}
39058pub const ROHAUTH_BASIC: u32 = 1u32;
39059pub const ROHAUTH_NTLM: u32 = 2u32;
39060pub const ROHFLAGS_HTTP_FIRST_ON_FAST: u32 = 8u32;
39061pub const ROHFLAGS_HTTP_FIRST_ON_SLOW: u32 = 32u32;
39062pub const ROHFLAGS_MUTUAL_AUTH: u32 = 4u32;
39063pub const ROHFLAGS_SSL_ONLY: u32 = 2u32;
39064pub const ROHFLAGS_USE_ROH: u32 = 1u32;
39065pub const ROLESCOPE_FOLDER: u32 = 1u32;
39066pub const ROLESCOPE_MAX: u32 = 1u32;
39067pub const ROLESCOPE_OBJECT: u32 = 0u32;
39068#[repr(C)]
39069#[derive(Clone, Copy, Debug, PartialEq)]
39070pub struct ROWENTRY {
39071    pub ulRowFlags: u32,
39072    pub cValues: u32,
39073    pub rgPropVals: *mut SPropValue,
39074}
39075impl Default for ROWENTRY {
39076    fn default() -> Self {
39077        unsafe { core::mem::zeroed() }
39078    }
39079}
39080#[repr(C)]
39081#[derive(Clone, Copy, Debug, PartialEq)]
39082pub struct ROWLIST {
39083    pub cEntries: u32,
39084    pub aEntries: [ROWENTRY; 1],
39085}
39086impl Default for ROWLIST {
39087    fn default() -> Self {
39088        unsafe { core::mem::zeroed() }
39089    }
39090}
39091pub const ROWLIST_REPLACE: u32 = 1u32;
39092pub const ROW_ADD: u32 = 1u32;
39093pub const ROW_MODIFY: u32 = 2u32;
39094pub const ROW_REMOVE: u32 = 4u32;
39095pub const RTF_SYNC_BODY_CHANGED: u32 = 2u32;
39096pub const RTF_SYNC_RTF_CHANGED: u32 = 1u32;
39097pub const RULE_ERR_CREATE_DAE: u32 = 5u32;
39098pub const RULE_ERR_CREATE_DAM: u32 = 8u32;
39099pub const RULE_ERR_DELIVERY: u32 = 3u32;
39100pub const RULE_ERR_EXECUTION: u32 = 11u32;
39101pub const RULE_ERR_FIRST: u32 = 1u32;
39102pub const RULE_ERR_LAST: u32 = 13u32;
39103pub const RULE_ERR_LOAD: u32 = 2u32;
39104pub const RULE_ERR_NO_FOLDER: u32 = 6u32;
39105pub const RULE_ERR_NO_RIGHTS: u32 = 7u32;
39106pub const RULE_ERR_NO_SENDAS: u32 = 9u32;
39107pub const RULE_ERR_NO_TEMPLATE: u32 = 10u32;
39108pub const RULE_ERR_PARSING: u32 = 4u32;
39109pub const RULE_ERR_QUOTA_EXCEEDED: u32 = 12u32;
39110pub const RULE_ERR_TOO_MANY_RECIPS: u32 = 13u32;
39111pub const RULE_ERR_UNKNOWN: u32 = 1u32;
39112pub const SAVEBODY_KEEPBOUNDARY: u32 = 1u32;
39113#[repr(transparent)]
39114#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
39115pub struct SAVEOPTS(pub i32);
39116pub const SAVEOPTS_NOSAVE: SAVEOPTS = SAVEOPTS(1i32);
39117pub const SAVEOPTS_PROMPTSAVE: SAVEOPTS = SAVEOPTS(2i32);
39118pub const SAVEOPTS_SAVEIFDIRTY: SAVEOPTS = SAVEOPTS(0i32);
39119pub const SAVE_FORMAT_RICHTEXT: u32 = 2u32;
39120pub const SAVE_FORMAT_TEXT: u32 = 1u32;
39121pub const SAVE_RFC1521: MIMESAVETYPE = MIMESAVETYPE(1i32);
39122pub const SAVE_RFC822: MIMESAVETYPE = MIMESAVETYPE(0i32);
39123#[repr(C)]
39124#[derive(Clone, Copy, Debug, PartialEq)]
39125pub struct SAndRestriction {
39126    pub cRes: u32,
39127    pub lpRes: *mut SRestriction,
39128}
39129impl Default for SAndRestriction {
39130    fn default() -> Self {
39131        unsafe { core::mem::zeroed() }
39132    }
39133}
39134#[repr(C)]
39135#[derive(Clone, Copy, Debug, PartialEq)]
39136pub struct SAnnotationRestriction {
39137    pub cValues: u32,
39138    pub lpRes: *mut SRestriction,
39139    pub lpProp: *mut SPropValue,
39140}
39141impl Default for SAnnotationRestriction {
39142    fn default() -> Self {
39143        unsafe { core::mem::zeroed() }
39144    }
39145}
39146#[repr(C)]
39147#[derive(Clone, Copy, Debug, PartialEq)]
39148pub struct SAppTimeArray {
39149    pub cValues: u32,
39150    pub lpat: *mut f64,
39151}
39152impl Default for SAppTimeArray {
39153    fn default() -> Self {
39154        unsafe { core::mem::zeroed() }
39155    }
39156}
39157#[repr(C)]
39158#[derive(Clone, Copy, Debug, PartialEq)]
39159pub struct SBinary {
39160    pub cb: u32,
39161    pub lpb: *mut u8,
39162}
39163impl Default for SBinary {
39164    fn default() -> Self {
39165        unsafe { core::mem::zeroed() }
39166    }
39167}
39168#[repr(C)]
39169#[derive(Clone, Copy, Debug, PartialEq)]
39170pub struct SBinaryArray {
39171    pub cValues: u32,
39172    pub lpbin: *mut SBinary,
39173}
39174impl Default for SBinaryArray {
39175    fn default() -> Self {
39176        unsafe { core::mem::zeroed() }
39177    }
39178}
39179#[repr(C)]
39180#[derive(Clone, Copy, Debug, PartialEq)]
39181pub struct SBitMaskRestriction {
39182    pub relBMR: u32,
39183    pub ulPropTag: u32,
39184    pub ulMask: u32,
39185}
39186impl Default for SBitMaskRestriction {
39187    fn default() -> Self {
39188        unsafe { core::mem::zeroed() }
39189    }
39190}
39191#[repr(C)]
39192#[derive(Clone, Copy, Debug, PartialEq)]
39193pub struct SCommentRestriction {
39194    pub cValues: u32,
39195    pub lpRes: *mut SRestriction,
39196    pub lpProp: *mut SPropValue,
39197}
39198impl Default for SCommentRestriction {
39199    fn default() -> Self {
39200        unsafe { core::mem::zeroed() }
39201    }
39202}
39203#[repr(C)]
39204#[derive(Clone, Copy, Debug, PartialEq)]
39205pub struct SComparePropsRestriction {
39206    pub relop: u32,
39207    pub ulPropTag1: u32,
39208    pub ulPropTag2: u32,
39209}
39210impl Default for SComparePropsRestriction {
39211    fn default() -> Self {
39212        unsafe { core::mem::zeroed() }
39213    }
39214}
39215#[repr(C)]
39216#[derive(Clone, Copy, Debug, PartialEq)]
39217pub struct SContentRestriction {
39218    pub ulFuzzyLevel: u32,
39219    pub ulPropTag: u32,
39220    pub lpProp: *mut SPropValue,
39221}
39222impl Default for SContentRestriction {
39223    fn default() -> Self {
39224        unsafe { core::mem::zeroed() }
39225    }
39226}
39227#[repr(C)]
39228#[derive(Clone, Copy, Debug, PartialEq)]
39229pub struct SCountRestriction {
39230    pub ulCount: u32,
39231    pub lpRes: *mut SRestriction,
39232}
39233impl Default for SCountRestriction {
39234    fn default() -> Self {
39235        unsafe { core::mem::zeroed() }
39236    }
39237}
39238#[repr(C)]
39239#[derive(Clone, Copy, Debug, PartialEq)]
39240pub struct SCurrencyArray {
39241    pub cValues: u32,
39242    pub lpcur: *mut windows::Win32::System::Com::CY,
39243}
39244impl Default for SCurrencyArray {
39245    fn default() -> Self {
39246        unsafe { core::mem::zeroed() }
39247    }
39248}
39249#[repr(C)]
39250#[derive(Clone, Copy, Debug, PartialEq)]
39251pub struct SDateTimeArray {
39252    pub cValues: u32,
39253    pub lpft: *mut windows::Win32::Foundation::FILETIME,
39254}
39255impl Default for SDateTimeArray {
39256    fn default() -> Self {
39257        unsafe { core::mem::zeroed() }
39258    }
39259}
39260#[repr(C)]
39261#[derive(Clone, Copy, Debug, PartialEq)]
39262pub struct SDoubleArray {
39263    pub cValues: u32,
39264    pub lpdbl: *mut f64,
39265}
39266impl Default for SDoubleArray {
39267    fn default() -> Self {
39268        unsafe { core::mem::zeroed() }
39269    }
39270}
39271pub const SEARCH_FOREGROUND: u32 = 8u32;
39272pub const SEARCH_REBUILD: u32 = 2u32;
39273pub const SEARCH_RECURSIVE: u32 = 4u32;
39274pub const SEARCH_RUNNING: u32 = 1u32;
39275pub const SECURITY_DESCRIPTOR_TRANSFER_VERSION: u32 = 3u32;
39276pub const SECURITY_ENCRYPTED: u32 = 2u32;
39277pub const SECURITY_SIGNED: u32 = 1u32;
39278pub const SEF_ENCRYPTWITHNOSENDERCERT: u32 = 1u32;
39279pub const SEF_MASK: u32 = 65535u32;
39280pub const SEF_SENDERSCERTPROVIDED: u32 = 2u32;
39281pub const SENSITIVITY_COMPANY_CONFIDENTIAL: u32 = 3u32;
39282pub const SENSITIVITY_NONE: u32 = 0u32;
39283pub const SENSITIVITY_PERSONAL: u32 = 1u32;
39284pub const SENSITIVITY_PRIVATE: u32 = 2u32;
39285pub type SERVICEWIZARDDLGPROC = Option<
39286    unsafe extern "system" fn(
39287        hdlg: windows::Win32::Foundation::HWND,
39288        wmsgid: u32,
39289        wparam: windows::Win32::Foundation::WPARAM,
39290        lparam: windows::Win32::Foundation::LPARAM,
39291    ) -> windows_core::BOOL,
39292>;
39293pub const SERVICE_CREATE_WITH_STORE: u32 = 4u32;
39294pub const SERVICE_DEFAULT_STORE: u32 = 1u32;
39295pub const SERVICE_LOGON_FAILED: u32 = 32u32;
39296pub const SERVICE_NO_PRIMARY_IDENTITY: u32 = 32u32;
39297pub const SERVICE_PRIMARY_IDENTITY: u32 = 8u32;
39298pub const SERVICE_SINGLE_COPY: u32 = 2u32;
39299pub const SERVICE_UI_ALLOWED: u32 = 16u32;
39300pub const SERVICE_UI_ALWAYS: u32 = 2u32;
39301pub const SETID_AirSync: windows_core::GUID =
39302    windows_core::GUID::from_u128(0x71035549_0739_4dcb_9163_00f0580dbbdf);
39303#[repr(C)]
39304#[derive(Clone, Copy, Debug, PartialEq)]
39305pub struct SExistRestriction {
39306    pub ulReserved1: u32,
39307    pub ulPropTag: u32,
39308    pub ulReserved2: u32,
39309}
39310impl Default for SExistRestriction {
39311    fn default() -> Self {
39312        unsafe { core::mem::zeroed() }
39313    }
39314}
39315pub const SF_DISABLE_STARTUP_SYNC: u32 = 1u32;
39316#[repr(C)]
39317#[derive(Clone, Copy, Debug, PartialEq)]
39318pub struct SGuidArray {
39319    pub cValues: u32,
39320    pub lpguid: *mut windows_core::GUID,
39321}
39322impl Default for SGuidArray {
39323    fn default() -> Self {
39324        unsafe { core::mem::zeroed() }
39325    }
39326}
39327pub const SHALLOW_SEARCH: u32 = 8u32;
39328pub const SHOW_SOFT_DELETES: u32 = 2u32;
39329pub const SHOW_SUBFOLDERS: u32 = 4u32;
39330pub const SHOW_XP_SESSION_UI: u32 = 4194304u32;
39331pub const SIMPLE: CERTNAMETYPE = CERTNAMETYPE(0i32);
39332#[repr(C)]
39333#[derive(Clone, Copy, Debug, PartialEq)]
39334pub struct SLPSTRArray {
39335    pub cValues: u32,
39336    pub lppszA: *mut windows_core::PSTR,
39337}
39338impl Default for SLPSTRArray {
39339    fn default() -> Self {
39340        unsafe { core::mem::zeroed() }
39341    }
39342}
39343#[repr(C)]
39344#[derive(Clone, Copy, Debug, PartialEq)]
39345pub struct SLargeIntegerArray {
39346    pub cValues: u32,
39347    pub lpli: *mut i64,
39348}
39349impl Default for SLargeIntegerArray {
39350    fn default() -> Self {
39351        unsafe { core::mem::zeroed() }
39352    }
39353}
39354#[repr(C)]
39355#[derive(Clone, Copy, Debug, PartialEq)]
39356pub struct SLongArray {
39357    pub cValues: u32,
39358    pub lpl: *mut i32,
39359}
39360impl Default for SLongArray {
39361    fn default() -> Self {
39362        unsafe { core::mem::zeroed() }
39363    }
39364}
39365#[repr(C)]
39366#[derive(Clone, Debug, PartialEq)]
39367pub struct SMAPIFormInfoArray {
39368    pub cForms: u32,
39369    pub aFormInfo: [core::mem::ManuallyDrop<Option<IMAPIFormInfo>>; 1],
39370}
39371impl Default for SMAPIFormInfoArray {
39372    fn default() -> Self {
39373        unsafe { core::mem::zeroed() }
39374    }
39375}
39376#[repr(C)]
39377#[derive(Clone, Copy)]
39378pub struct SMAPIFormProp {
39379    pub ulFlags: u32,
39380    pub nPropType: u32,
39381    pub nmid: MAPINAMEID,
39382    pub pszDisplayName: *mut i8,
39383    pub nSpecialType: u32,
39384    pub u: SMAPIFormProp_0,
39385}
39386impl Default for SMAPIFormProp {
39387    fn default() -> Self {
39388        unsafe { core::mem::zeroed() }
39389    }
39390}
39391#[repr(C)]
39392#[derive(Clone, Copy)]
39393pub union SMAPIFormProp_0 {
39394    pub s1: SMAPIFormProp_0_0,
39395}
39396impl Default for SMAPIFormProp_0 {
39397    fn default() -> Self {
39398        unsafe { core::mem::zeroed() }
39399    }
39400}
39401#[repr(C)]
39402#[derive(Clone, Copy)]
39403pub struct SMAPIFormProp_0_0 {
39404    pub nmidIdx: MAPINAMEID,
39405    pub cfpevAvailable: u32,
39406    pub pfpevAvailable: *mut SMAPIFormPropEnumVal,
39407}
39408impl Default for SMAPIFormProp_0_0 {
39409    fn default() -> Self {
39410        unsafe { core::mem::zeroed() }
39411    }
39412}
39413#[repr(C)]
39414#[derive(Clone, Copy)]
39415pub struct SMAPIFormPropArray {
39416    pub cProps: u32,
39417    pub ulPad: u32,
39418    pub aFormProp: [SMAPIFormProp; 1],
39419}
39420impl Default for SMAPIFormPropArray {
39421    fn default() -> Self {
39422        unsafe { core::mem::zeroed() }
39423    }
39424}
39425#[repr(C)]
39426#[derive(Clone, Copy, Debug, PartialEq)]
39427pub struct SMAPIFormPropEnumVal {
39428    pub pszDisplayName: *mut i8,
39429    pub nVal: u32,
39430}
39431impl Default for SMAPIFormPropEnumVal {
39432    fn default() -> Self {
39433        unsafe { core::mem::zeroed() }
39434    }
39435}
39436#[repr(C)]
39437#[derive(Clone, Copy, Debug, PartialEq)]
39438pub struct SMAPIVerb {
39439    pub lVerb: i32,
39440    pub szVerbname: *mut i8,
39441    pub fuFlags: u32,
39442    pub grfAttribs: u32,
39443    pub ulFlags: u32,
39444}
39445impl Default for SMAPIVerb {
39446    fn default() -> Self {
39447        unsafe { core::mem::zeroed() }
39448    }
39449}
39450#[repr(C)]
39451#[derive(Clone, Copy, Debug, PartialEq)]
39452pub struct SMAPIVerbArray {
39453    pub cMAPIVerb: u32,
39454    pub aMAPIVerb: [SMAPIVerb; 1],
39455}
39456impl Default for SMAPIVerbArray {
39457    fn default() -> Self {
39458        unsafe { core::mem::zeroed() }
39459    }
39460}
39461#[repr(C)]
39462#[derive(Clone, Copy, Debug, PartialEq)]
39463pub struct SMessageClassArray {
39464    pub cValues: u32,
39465    pub aMessageClass: [windows_core::PSTR; 1],
39466}
39467impl Default for SMessageClassArray {
39468    fn default() -> Self {
39469        unsafe { core::mem::zeroed() }
39470    }
39471}
39472#[repr(C)]
39473#[derive(Clone, Copy, Debug, PartialEq)]
39474pub struct SNotRestriction {
39475    pub ulReserved: u32,
39476    pub lpRes: *mut SRestriction,
39477}
39478impl Default for SNotRestriction {
39479    fn default() -> Self {
39480        unsafe { core::mem::zeroed() }
39481    }
39482}
39483pub const SOF_UNIQUEFILENAME: u32 = 2147483648u32;
39484#[repr(C)]
39485#[derive(Clone, Copy, Debug, PartialEq)]
39486pub struct SOrRestriction {
39487    pub cRes: u32,
39488    pub lpRes: *mut SRestriction,
39489}
39490impl Default for SOrRestriction {
39491    fn default() -> Self {
39492        unsafe { core::mem::zeroed() }
39493    }
39494}
39495pub const SPAMFILTER_ONSAVE: u32 = 128u32;
39496#[repr(C)]
39497#[derive(Clone, Copy, Debug, PartialEq)]
39498pub struct SPropAttrArray {
39499    pub cValues: u32,
39500    pub aPropAttr: [u32; 1],
39501}
39502impl Default for SPropAttrArray {
39503    fn default() -> Self {
39504        unsafe { core::mem::zeroed() }
39505    }
39506}
39507#[repr(C)]
39508#[derive(Clone, Copy, Debug, PartialEq)]
39509pub struct SPropProblem {
39510    pub ulIndex: u32,
39511    pub ulPropTag: u32,
39512    pub scode: i32,
39513}
39514impl Default for SPropProblem {
39515    fn default() -> Self {
39516        unsafe { core::mem::zeroed() }
39517    }
39518}
39519#[repr(C)]
39520#[derive(Clone, Copy, Debug, PartialEq)]
39521pub struct SPropProblemArray {
39522    pub cProblem: u32,
39523    pub aProblem: [SPropProblem; 1],
39524}
39525impl Default for SPropProblemArray {
39526    fn default() -> Self {
39527        unsafe { core::mem::zeroed() }
39528    }
39529}
39530#[repr(C)]
39531#[derive(Clone, Copy, Debug, PartialEq)]
39532pub struct SPropTagArray {
39533    pub cValues: u32,
39534    pub aulPropTag: [u32; 1],
39535}
39536impl Default for SPropTagArray {
39537    fn default() -> Self {
39538        unsafe { core::mem::zeroed() }
39539    }
39540}
39541#[repr(C)]
39542#[derive(Clone, Copy)]
39543pub struct SPropValue {
39544    pub ulPropTag: u32,
39545    pub dwAlignPad: u32,
39546    pub Value: __UPV,
39547}
39548impl Default for SPropValue {
39549    fn default() -> Self {
39550        unsafe { core::mem::zeroed() }
39551    }
39552}
39553#[repr(C)]
39554#[derive(Clone, Copy, Debug, PartialEq)]
39555pub struct SPropertyRestriction {
39556    pub relop: u32,
39557    pub ulPropTag: u32,
39558    pub lpProp: *mut SPropValue,
39559}
39560impl Default for SPropertyRestriction {
39561    fn default() -> Self {
39562        unsafe { core::mem::zeroed() }
39563    }
39564}
39565#[repr(C)]
39566#[derive(Clone, Copy, Debug, PartialEq)]
39567pub struct SRealArray {
39568    pub cValues: u32,
39569    pub lpflt: *mut f32,
39570}
39571impl Default for SRealArray {
39572    fn default() -> Self {
39573        unsafe { core::mem::zeroed() }
39574    }
39575}
39576#[repr(C)]
39577#[derive(Clone, Copy)]
39578pub struct SRestriction {
39579    pub rt: u32,
39580    pub res: SRestriction_0,
39581}
39582impl Default for SRestriction {
39583    fn default() -> Self {
39584        unsafe { core::mem::zeroed() }
39585    }
39586}
39587#[repr(C)]
39588#[derive(Clone, Copy)]
39589pub union SRestriction_0 {
39590    pub resCompareProps: SComparePropsRestriction,
39591    pub resAnd: SAndRestriction,
39592    pub resOr: SOrRestriction,
39593    pub resNot: SNotRestriction,
39594    pub resContent: SContentRestriction,
39595    pub resProperty: SPropertyRestriction,
39596    pub resBitMask: SBitMaskRestriction,
39597    pub resSize: SSizeRestriction,
39598    pub resExist: SExistRestriction,
39599    pub resSub: SSubRestriction,
39600    pub resComment: SCommentRestriction,
39601    pub resAnnotation: SAnnotationRestriction,
39602    pub resCount: SCountRestriction,
39603}
39604impl Default for SRestriction_0 {
39605    fn default() -> Self {
39606        unsafe { core::mem::zeroed() }
39607    }
39608}
39609#[repr(C)]
39610#[derive(Clone, Copy, Debug, PartialEq)]
39611pub struct SRow {
39612    pub ulAdrEntryPad: u32,
39613    pub cValues: u32,
39614    pub lpProps: *mut SPropValue,
39615}
39616impl Default for SRow {
39617    fn default() -> Self {
39618        unsafe { core::mem::zeroed() }
39619    }
39620}
39621#[repr(C)]
39622#[derive(Clone, Copy, Debug, PartialEq)]
39623pub struct SRowSet {
39624    pub cRows: u32,
39625    pub aRow: [SRow; 1],
39626}
39627impl Default for SRowSet {
39628    fn default() -> Self {
39629        unsafe { core::mem::zeroed() }
39630    }
39631}
39632#[repr(C)]
39633#[derive(Clone, Copy, Debug, PartialEq)]
39634pub struct SShortArray {
39635    pub cValues: u32,
39636    pub lpi: *mut i16,
39637}
39638impl Default for SShortArray {
39639    fn default() -> Self {
39640        unsafe { core::mem::zeroed() }
39641    }
39642}
39643#[repr(C)]
39644#[derive(Clone, Copy, Debug, PartialEq)]
39645pub struct SSizeRestriction {
39646    pub relop: u32,
39647    pub ulPropTag: u32,
39648    pub cb: u32,
39649}
39650impl Default for SSizeRestriction {
39651    fn default() -> Self {
39652        unsafe { core::mem::zeroed() }
39653    }
39654}
39655#[repr(C)]
39656#[derive(Clone, Copy, Debug, PartialEq)]
39657pub struct SSortOrder {
39658    pub ulPropTag: u32,
39659    pub ulOrder: u32,
39660}
39661impl Default for SSortOrder {
39662    fn default() -> Self {
39663        unsafe { core::mem::zeroed() }
39664    }
39665}
39666#[repr(C)]
39667#[derive(Clone, Copy, Debug, PartialEq)]
39668pub struct SSortOrderSet {
39669    pub cSorts: u32,
39670    pub cCategories: u32,
39671    pub cExpanded: u32,
39672    pub aSort: [SSortOrder; 1],
39673}
39674impl Default for SSortOrderSet {
39675    fn default() -> Self {
39676        unsafe { core::mem::zeroed() }
39677    }
39678}
39679#[repr(C)]
39680#[derive(Clone, Copy, Debug, PartialEq)]
39681pub struct SSubRestriction {
39682    pub ulSubObject: u32,
39683    pub lpRes: *mut SRestriction,
39684}
39685impl Default for SSubRestriction {
39686    fn default() -> Self {
39687        unsafe { core::mem::zeroed() }
39688    }
39689}
39690pub const STATUSROW_UPDATE: u32 = 268435456u32;
39691pub const STATUS_AVAILABLE: u32 = 1u32;
39692pub const STATUS_CHANGE_PASSWORD: u32 = 4u32;
39693pub const STATUS_DEFAULT_OUTBOUND: u32 = 1u32;
39694pub const STATUS_DEFAULT_STORE: u32 = 2u32;
39695pub const STATUS_FAILURE: u32 = 4u32;
39696pub const STATUS_FLUSH_QUEUES: u32 = 8u32;
39697pub const STATUS_INBOUND_ACTIVE: u32 = 131072u32;
39698pub const STATUS_INBOUND_ENABLED: u32 = 65536u32;
39699pub const STATUS_INBOUND_FLUSH: u32 = 262144u32;
39700pub const STATUS_NEED_IPM_TREE: u32 = 2048u32;
39701pub const STATUS_NO_DEFAULT_STORE: u32 = 64u32;
39702pub const STATUS_NO_PRIMARY_IDENTITY: u32 = 32u32;
39703#[repr(C)]
39704#[derive(Clone, Copy, Debug, PartialEq)]
39705pub struct STATUS_OBJECT_NOTIFICATION {
39706    pub cbEntryID: u32,
39707    pub lpEntryID: *mut ENTRYID,
39708    pub cValues: u32,
39709    pub lpPropVals: *mut SPropValue,
39710}
39711impl Default for STATUS_OBJECT_NOTIFICATION {
39712    fn default() -> Self {
39713        unsafe { core::mem::zeroed() }
39714    }
39715}
39716pub const STATUS_OFFLINE: u32 = 2u32;
39717pub const STATUS_OUTBOUND_ACTIVE: u32 = 2097152u32;
39718pub const STATUS_OUTBOUND_ENABLED: u32 = 1048576u32;
39719pub const STATUS_OUTBOUND_FLUSH: u32 = 4194304u32;
39720pub const STATUS_OWN_STORE: u32 = 256u32;
39721pub const STATUS_PRIMARY_IDENTITY: u32 = 4u32;
39722pub const STATUS_PRIMARY_STORE: u32 = 4096u32;
39723pub const STATUS_REMOTE_ACCESS: u32 = 8388608u32;
39724pub const STATUS_SECONDARY_STORE: u32 = 8192u32;
39725pub const STATUS_SETTINGS_DIALOG: u32 = 2u32;
39726pub const STATUS_SIMPLE_STORE: u32 = 8u32;
39727pub const STATUS_TEMP_SECTION: u32 = 128u32;
39728pub const STATUS_VALIDATE_STATE: u32 = 1u32;
39729pub const STATUS_XP_PREFER_LAST: u32 = 16u32;
39730pub const STGSTRM_CREATE: u32 = 4096u32;
39731pub const STGSTRM_CURRENT: u32 = 268435456u32;
39732pub const STGSTRM_MODIFY: u32 = 2u32;
39733pub const STGSTRM_RESET: u32 = 0u32;
39734pub const STOCK_REPLY_TEMPLATE: u32 = 2u32;
39735pub const STOP_SEARCH: u32 = 1u32;
39736pub const STORE_ATTACH_OK: u32 = 32u32;
39737pub const STORE_CATEGORIZE_OK: u32 = 1024u32;
39738pub const STORE_CREATE_OK: u32 = 16u32;
39739pub const STORE_ENTRYID_UNIQUE: u32 = 1u32;
39740pub const STORE_HAS_SEARCHES: u32 = 16777216u32;
39741pub const STORE_ITEMPROC: u32 = 2097152u32;
39742pub const STORE_MODIFY_OK: u32 = 8u32;
39743pub const STORE_MV_PROPS_OK: u32 = 512u32;
39744pub const STORE_NOTIFY_OK: u32 = 256u32;
39745pub const STORE_OLE_OK: u32 = 64u32;
39746pub const STORE_PUBLIC_FOLDERS: u32 = 16384u32;
39747pub const STORE_READONLY: u32 = 2u32;
39748pub const STORE_RESTRICTION_OK: u32 = 4096u32;
39749pub const STORE_RTF_OK: u32 = 2048u32;
39750pub const STORE_SEARCH_OK: u32 = 4u32;
39751pub const STORE_SORT_OK: u32 = 8192u32;
39752pub const STORE_SUBMIT_OK: u32 = 128u32;
39753pub const STORE_UNCOMPRESSED_RTF: u32 = 32768u32;
39754pub const STORE_UNICODE_OK: u32 = 262144u32;
39755pub const STREAM_APPEND: u32 = 4u32;
39756pub const ST_CLEAR_OOF_HIST: u32 = 2147483648u32;
39757pub const ST_DISABLED: u32 = 0u32;
39758pub const ST_ENABLED: u32 = 1u32;
39759pub const ST_ERROR: u32 = 2u32;
39760pub const ST_EXIT_LEVEL: u32 = 16u32;
39761pub const ST_KEEP_OOF_HIST: u32 = 8u32;
39762pub const ST_ONLY_WHEN_OOF: u32 = 4u32;
39763pub const ST_RULE_PARSE_ERROR: u32 = 64u32;
39764pub const ST_SKIP_IF_SCL_IS_SAFE: u32 = 32u32;
39765pub const SUBMITFLAG_LOCKED: u32 = 1u32;
39766pub const SUBMITFLAG_PREPROCESS: u32 = 2u32;
39767pub const SUCCESS_SUCCESS: u32 = 0u32;
39768pub const SUPPRESS_RECEIPT: u32 = 1u32;
39769pub const SUPPRESS_UI: u32 = 1u32;
39770pub const SUPRESS_NOTIFICATIONS_ON_MY_ACTIONS: u32 = 4096u32;
39771#[repr(C)]
39772#[derive(Clone, Copy, Debug, PartialEq)]
39773pub struct SWStringArray {
39774    pub cValues: u32,
39775    pub lppszW: *mut windows_core::PWSTR,
39776}
39777impl Default for SWStringArray {
39778    fn default() -> Self {
39779        unsafe { core::mem::zeroed() }
39780    }
39781}
39782pub const SYNC_ASSOCIATED: u32 = 16u32;
39783pub const SYNC_BEST_BODY: u32 = 8192u32;
39784pub const SYNC_CATCHUP: u32 = 1024u32;
39785pub const SYNC_DEFER_CONFIG: u32 = 262144u32;
39786pub const SYNC_EXPIRY: u32 = 2u32;
39787pub const SYNC_FORCE_UNICODE: u32 = 262144u32;
39788pub const SYNC_FXRECOVERMODE: u32 = 65536u32;
39789pub const SYNC_IGNORE_SPECIFIED_ON_ASSOCIATED: u32 = 16384u32;
39790pub const SYNC_LIMITED_IMESSAGE: u32 = 512u32;
39791pub const SYNC_MSG_SELECTIVE: u32 = 4096u32;
39792pub const SYNC_NEW_MESSAGE: u32 = 2048u32;
39793pub const SYNC_NORMAL: u32 = 32u32;
39794pub const SYNC_NO_CONFLICTS: u32 = 64u32;
39795pub const SYNC_NO_DELETIONS: u32 = 2u32;
39796pub const SYNC_NO_FOREIGN_KEYS: u32 = 256u32;
39797pub const SYNC_NO_SOFT_DELETIONS: u32 = 4u32;
39798pub const SYNC_ONLY_SPECIFIED_PROPS: u32 = 128u32;
39799pub const SYNC_PROGRESS_MODE: u32 = 32768u32;
39800pub const SYNC_READ: u32 = 1u32;
39801pub const SYNC_READ_STATE: u32 = 8u32;
39802pub const SYNC_SOFT_DELETE: u32 = 1u32;
39803pub const SYNC_UNICODE: u32 = 1u32;
39804pub const SZ_HPC_V1: windows_core::PCSTR = windows_core::s!("Software\\Microsoft\\Pegasus");
39805pub const SZ_HPC_V1_0: windows_core::PCSTR = windows_core::s!("InstalledDir");
39806pub const SZ_HPC_V1_MAJOR: windows_core::PCSTR = windows_core::s!("MajorVersion");
39807pub const SZ_HPC_V1_MINOR: windows_core::PCSTR = windows_core::s!("MinorVersion");
39808pub const SZ_HPC_V2: windows_core::PCSTR =
39809    windows_core::s!("Software\\Microsoft\\Windows CE Services");
39810pub const SZ_HPC_V2_MAJOR: windows_core::PCSTR = windows_core::s!("MajorVersion");
39811pub const SZ_HPC_V2_MINOR: windows_core::PCSTR = windows_core::s!("MinorVersion");
39812pub const SZ_NO_OST: windows_core::PCSTR = windows_core::s!("NoOST");
39813pub const SZ_OUTL_OST_OPTIONS: windows_core::PCSTR =
39814    windows_core::s!("Software\\Microsoft\\Office\\8.0\\Outlook\\OST");
39815pub const TABLE_CHANGED: u32 = 1u32;
39816pub const TABLE_ERROR: u32 = 2u32;
39817#[repr(C)]
39818#[derive(Clone, Copy)]
39819pub struct TABLE_NOTIFICATION {
39820    pub ulTableEvent: u32,
39821    pub hResult: windows_core::HRESULT,
39822    pub propIndex: SPropValue,
39823    pub propPrior: SPropValue,
39824    pub row: SRow,
39825    pub ulPad: u32,
39826}
39827impl Default for TABLE_NOTIFICATION {
39828    fn default() -> Self {
39829        unsafe { core::mem::zeroed() }
39830    }
39831}
39832pub const TABLE_RELOAD: u32 = 9u32;
39833pub const TABLE_RESTRICT_DONE: u32 = 7u32;
39834pub const TABLE_ROW_ADDED: u32 = 3u32;
39835pub const TABLE_ROW_DELETED: u32 = 4u32;
39836pub const TABLE_ROW_MODIFIED: u32 = 5u32;
39837pub const TABLE_SETCOL_DONE: u32 = 8u32;
39838pub const TABLE_SORT_ASCEND: u32 = 0u32;
39839pub const TABLE_SORT_CATEG_MAX: u32 = 4u32;
39840pub const TABLE_SORT_CATEG_MIN: u32 = 8u32;
39841pub const TABLE_SORT_COMBINE: u32 = 2u32;
39842pub const TABLE_SORT_DESCEND: u32 = 1u32;
39843pub const TABLE_SORT_DONE: u32 = 6u32;
39844pub const TAD_ALL_ROWS: u32 = 1u32;
39845pub const TBLSTAT_COMPLETE: u32 = 0u32;
39846pub const TBLSTAT_QCHANGED: u32 = 7u32;
39847pub const TBLSTAT_RESTRICTING: u32 = 14u32;
39848pub const TBLSTAT_RESTRICT_ERROR: u32 = 15u32;
39849pub const TBLSTAT_SETCOL_ERROR: u32 = 13u32;
39850pub const TBLSTAT_SETTING_COLS: u32 = 11u32;
39851pub const TBLSTAT_SORTING: u32 = 9u32;
39852pub const TBLSTAT_SORT_ERROR: u32 = 10u32;
39853pub const TBLTYPE_DYNAMIC: u32 = 2u32;
39854pub const TBLTYPE_KEYSET: u32 = 1u32;
39855pub const TBLTYPE_SNAPSHOT: u32 = 0u32;
39856pub const TBL_ALL_COLUMNS: u32 = 1u32;
39857pub const TBL_ASYNC: u32 = 1u32;
39858pub const TBL_BATCH: u32 = 2u32;
39859pub const TBL_COLLAPSED_CATEGORY: u32 = 4u32;
39860pub const TBL_EMPTY_CATEGORY: u32 = 2u32;
39861pub const TBL_EXPANDED_CATEGORY: u32 = 3u32;
39862pub const TBL_LEAF_ROW: u32 = 1u32;
39863pub const TBL_NOADVANCE: u32 = 1u32;
39864pub const TBL_NOWAIT: u32 = 1u32;
39865pub const TIME_ZONE_ID_DAYLIGHT: u32 = 2u32;
39866pub const TIME_ZONE_ID_STANDARD: u32 = 1u32;
39867pub const TIME_ZONE_ID_UNKNOWN: u32 = 0u32;
39868#[repr(C)]
39869#[derive(Clone, Copy, Debug, PartialEq)]
39870pub struct TRACEENTRY {
39871    pub lAction: i32,
39872    pub ftArrivalTime: windows::Win32::Foundation::FILETIME,
39873    pub ftDeferredTime: windows::Win32::Foundation::FILETIME,
39874    pub rgchADMDName: [i8; 20],
39875    pub rgchCountryName: [i8; 4],
39876    pub rgchPRMDId: [i8; 20],
39877    pub rgchAttADMDName: [i8; 20],
39878    pub rgchAttCountryName: [i8; 4],
39879    pub rgchAttPRMDId: [i8; 19],
39880    pub bAdditionalActions: u8,
39881}
39882impl Default for TRACEENTRY {
39883    fn default() -> Self {
39884        unsafe { core::mem::zeroed() }
39885    }
39886}
39887#[repr(C)]
39888#[derive(Clone, Copy, Debug, PartialEq)]
39889pub struct TRACEINFO {
39890    pub cEntries: u32,
39891    pub rgtraceentry: [TRACEENTRY; 1],
39892}
39893impl Default for TRACEINFO {
39894    fn default() -> Self {
39895        unsafe { core::mem::zeroed() }
39896    }
39897}
39898pub const TRANSFER_COPYFOLDER: u32 = 4u32;
39899pub const TRANSFER_COPYMESSAGES: u32 = 3u32;
39900pub const TRANSFER_COPYPROPS: u32 = 2u32;
39901pub const TRANSFER_COPYTO: u32 = 1u32;
39902#[repr(C)]
39903#[derive(Clone, Copy, Debug, PartialEq)]
39904pub struct TRANSMITINFO {
39905    pub ietCurrent: ENCODINGTYPE,
39906    pub ietXmitMime: ENCODINGTYPE,
39907    pub ietXmit822: ENCODINGTYPE,
39908    pub cbLongestLine: u32,
39909    pub cExtended: u32,
39910    pub ulPercentExt: u32,
39911    pub cbSize: u32,
39912    pub cLines: u32,
39913}
39914impl Default for TRANSMITINFO {
39915    fn default() -> Self {
39916        unsafe { core::mem::zeroed() }
39917    }
39918}
39919pub const TRANSPORT_DOWNLOAD: u32 = 1u32;
39920pub const TRANSPORT_UPLOAD: u32 = 2u32;
39921pub const TRUNCATE_EXISTING: u32 = 5u32;
39922pub const TXT_HTML: u32 = 2u32;
39923pub const TXT_PLAIN: u32 = 1u32;
39924pub const TYPEDID_MASK: u32 = 65535u32;
39925pub const UI_CURRENT_PROVIDER_FIRST: u32 = 4u32;
39926pub const UI_READONLY: u32 = 1u32;
39927pub const UI_SERVICE: u32 = 2u32;
39928pub const UNLOCK_BLOCKING_MID_LOCK_ALL: u32 = 4u32;
39929pub const UNLOCK_BLOCKING_MID_LOCK_LOGON_ONLY: u32 = 8u32;
39930pub const UNLOCK_CHECKIN_ABORT: u32 = 1u32;
39931pub const UNLOCK_CHECKIN_KEEP_LOCKED: u32 = 2u32;
39932pub const UNLOCK_NULL_RESOURCE: u32 = 16u32;
39933pub const UNLOCK_WRITE_THROUGH_GOP: u32 = 65536u32;
39934pub const URL_ATTACH_GENERATE_CID: u32 = 2u32;
39935pub const URL_ATTACH_INTO_MIXED: u32 = 1u32;
39936pub const URL_ATTACH_SET_CNTTYPE: u32 = 4u32;
39937pub const URL_RESOLVE_RENDERED: u32 = 1u32;
39938pub const URL_RESULVE_NO_BASE: u32 = 2u32;
39939pub const VCDIR_DELETE: u32 = 65536u32;
39940pub const VCDIR_MOVE: u32 = 262144u32;
39941pub const VCDIR_NEXT: u32 = 1u32;
39942pub const VCDIR_PREV: u32 = 2u32;
39943pub const VCSTATUS_COPY: u32 = 131072u32;
39944pub const VCSTATUS_DELETE: u32 = 65536u32;
39945pub const VCSTATUS_DELETE_IS_MOVE: u32 = 1048576u32;
39946pub const VCSTATUS_INTERACTIVE: u32 = 8u32;
39947pub const VCSTATUS_MODAL: u32 = 4u32;
39948pub const VCSTATUS_MOVE: u32 = 262144u32;
39949pub const VCSTATUS_NEW_MESSAGE: u32 = 4194304u32;
39950pub const VCSTATUS_NEXT: u32 = 1u32;
39951pub const VCSTATUS_PREV: u32 = 2u32;
39952pub const VCSTATUS_READONLY: u32 = 16u32;
39953pub const VCSTATUS_SAVE: u32 = 2097152u32;
39954pub const VCSTATUS_SUBMIT: u32 = 524288u32;
39955#[repr(C)]
39956#[derive(Clone, Copy, Debug, PartialEq)]
39957pub struct WEBPAGEOPTIONS {
39958    pub cbSize: u32,
39959    pub dwFlags: u32,
39960    pub dwDelay: u32,
39961    pub wchQuote: u16,
39962}
39963impl Default for WEBPAGEOPTIONS {
39964    fn default() -> Self {
39965        unsafe { core::mem::zeroed() }
39966    }
39967}
39968pub type WIZARDENTRY = Option<
39969    unsafe extern "system" fn(
39970        hproviderdllinstance: windows::Win32::Foundation::HINSTANCE,
39971        lppcsresourcename: *mut *mut i8,
39972        lppdlgproc: *mut windows::Win32::UI::WindowsAndMessaging::DLGPROC,
39973        lpmapiprop: windows_core::Ref<'_, IMAPIProp>,
39974        lpmapisupportobject: *mut core::ffi::c_void,
39975    ) -> u32,
39976>;
39977pub const WIZ_NEXT: u32 = 1035u32;
39978pub const WIZ_PREV: u32 = 1036u32;
39979pub const WIZ_QUERYNUMPAGES: u32 = 1034u32;
39980pub const WPF_ATTACHLINKS: u32 = 8u32;
39981pub const WPF_AUTOINLINE: u32 = 2u32;
39982pub const WPF_HTML: u32 = 1u32;
39983pub const WPF_IMAGESONLY: u32 = 16u32;
39984pub const WPF_NOMETACHARSET: u32 = 32u32;
39985pub const WPF_SLIDESHOW: u32 = 4u32;
39986pub const WSZ_URL_FLAT_FOLDER_SPACE: windows_core::PCWSTR = windows_core::w!("/-FlatUrlSpace-/");
39987pub const X500: CERTNAMETYPE = CERTNAMETYPE(2i32);
39988#[repr(C)]
39989#[derive(Clone, Copy, Debug, PartialEq)]
39990pub struct X509CERTRESULT {
39991    pub cEntries: u32,
39992    pub rgcs: *mut CERTSTATE,
39993    pub rgpCert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
39994}
39995impl Default for X509CERTRESULT {
39996    fn default() -> Self {
39997        unsafe { core::mem::zeroed() }
39998    }
39999}
40000pub type XPPROVIDERINIT = Option<
40001    unsafe extern "system" fn(
40002        hinstance: windows::Win32::Foundation::HINSTANCE,
40003        lpmalloc: windows_core::Ref<'_, windows::Win32::System::Com::IMalloc>,
40004        lpallocatebuffer: LPALLOCATEBUFFER,
40005        lpallocatemore: LPALLOCATEMORE,
40006        lpfreebuffer: LPFREEBUFFER,
40007        ulflags: u32,
40008        ulmapiver: u32,
40009        lpulproviderver: *mut u32,
40010        lppxpprovider: windows_core::OutRef<'_, IXPProvider>,
40011    ) -> windows_core::HRESULT,
40012>;
40013#[repr(C)]
40014#[derive(Clone, Copy)]
40015pub union __UPV {
40016    pub i: i16,
40017    pub l: i32,
40018    pub ul: u32,
40019    pub lpv: *mut core::ffi::c_void,
40020    pub flt: f32,
40021    pub dbl: f64,
40022    pub b: u16,
40023    pub cur: windows::Win32::System::Com::CY,
40024    pub at: f64,
40025    pub ft: windows::Win32::Foundation::FILETIME,
40026    pub lpszA: windows_core::PSTR,
40027    pub bin: SBinary,
40028    pub lpszW: windows_core::PWSTR,
40029    pub lpguid: *mut windows_core::GUID,
40030    pub li: i64,
40031    pub MVi: SShortArray,
40032    pub MVl: SLongArray,
40033    pub MVflt: SRealArray,
40034    pub MVdbl: SDoubleArray,
40035    pub MVcur: SCurrencyArray,
40036    pub MVat: SAppTimeArray,
40037    pub MVft: SDateTimeArray,
40038    pub MVbin: SBinaryArray,
40039    pub MVszA: SLPSTRArray,
40040    pub MVszW: SWStringArray,
40041    pub MVguid: SGuidArray,
40042    pub MVli: SLargeIntegerArray,
40043    pub err: i32,
40044    pub x: i32,
40045}
40046impl Default for __UPV {
40047    fn default() -> Self {
40048        unsafe { core::mem::zeroed() }
40049    }
40050}
40051pub const cchProfileNameMax: u32 = 64u32;
40052pub const cchProfilePassMax: u32 = 64u32;
40053pub const cwchUrlFlatFolderSpace: u32 = 16u32;
40054pub const fMapiUnicode: u32 = 2147483648u32;
40055pub const fVersionedDelete: u32 = 1u32;
40056pub const fVersionedMoveIn: u32 = 16u32;
40057pub const fVersionedMoveOut: u32 = 32u32;
40058pub const fVersionedPin: u32 = 4u32;
40059pub const fVersionedUnDelete: u32 = 2u32;
40060pub const fVersionedUnPin: u32 = 8u32;
40061pub const fnevCriticalError: u32 = 1u32;
40062pub const fnevExtended: u32 = 2147483648u32;
40063pub const fnevNewMail: u32 = 2u32;
40064pub const fnevObjectCopied: u32 = 64u32;
40065pub const fnevObjectCreated: u32 = 4u32;
40066pub const fnevObjectDeleted: u32 = 8u32;
40067pub const fnevObjectModified: u32 = 16u32;
40068pub const fnevObjectMoved: u32 = 32u32;
40069pub const fnevReservedForMapi: u32 = 1073741824u32;
40070pub const fnevSearchComplete: u32 = 128u32;
40071pub const fnevStatusObjectModified: u32 = 512u32;
40072pub const fnevTableModified: u32 = 256u32;
40073pub const frightsContact: i32 = 512i32;
40074pub const frightsCreate: i32 = 2i32;
40075pub const frightsCreateSubfolder: i32 = 128i32;
40076pub const frightsDeleteAny: i32 = 64i32;
40077pub const frightsDeleteOwned: i32 = 16i32;
40078pub const frightsEditAny: i32 = 32i32;
40079pub const frightsEditOwned: i32 = 8i32;
40080pub const frightsFreeBusyDetailed: i32 = 4096i32;
40081pub const frightsFreeBusySimple: i32 = 2048i32;
40082pub const frightsOwner: i32 = 256i32;
40083pub const frightsReadAny: i32 = 1i32;
40084pub const frightsVisible: i32 = 1024i32;
40085pub const fsdpermUserMailboxOwner: u32 = 1u32;
40086pub const fsdpermUserPrimaryUser: u32 = 4u32;
40087pub const fsdpermUserSendAs: u32 = 2u32;
40088pub const fsdrightAppendMsg: u32 = 4u32;
40089pub const fsdrightContact: u32 = 32768u32;
40090pub const fsdrightCreateContainer: u32 = 4u32;
40091pub const fsdrightCreateItem: u32 = 2u32;
40092pub const fsdrightDeleteOwnItem: u32 = 1024u32;
40093pub const fsdrightExecute: u32 = 32u32;
40094pub const fsdrightFreeBusyDetailed: u32 = 2u32;
40095pub const fsdrightFreeBusySimple: u32 = 1u32;
40096pub const fsdrightListContents: u32 = 1u32;
40097pub const fsdrightOwner: u32 = 16384u32;
40098pub const fsdrightReadAttributes: u32 = 128u32;
40099pub const fsdrightReadBody: u32 = 1u32;
40100pub const fsdrightReadProperty: u32 = 8u32;
40101pub const fsdrightReserved1: u32 = 64u32;
40102pub const fsdrightViewItem: u32 = 2048u32;
40103pub const fsdrightWriteAttributes: u32 = 256u32;
40104pub const fsdrightWriteBody: u32 = 2u32;
40105pub const fsdrightWriteOwnProperty: u32 = 512u32;
40106pub const fsdrightWriteProperty: u32 = 16u32;
40107pub const hrSuccess: u32 = 0u32;
40108pub const ichOpMapForward: u32 = 4u32;
40109pub const ichOpMapOpen: u32 = 1u32;
40110pub const ichOpMapPrint: u32 = 5u32;
40111pub const ichOpMapReplyToAll: u32 = 3u32;
40112pub const ichOpMapReplyToFolder: u32 = 8u32;
40113pub const ichOpMapReplyToSender: u32 = 2u32;
40114pub const ichOpMapReservedCompose: u32 = 0u32;
40115pub const ichOpMapReservedDelivery: u32 = 7u32;
40116pub const ichOpMapSaveAs: u32 = 6u32;
40117pub const lidOpMap: u32 = 1u32;
40118pub const pbExchangeProviderDelegateGuid: windows_core::PCSTR =
40119    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}");
40120pub const pbExchangeProviderLocalStoreGuid: windows_core::PCSTR =
40121    windows_core::s!("-\u{e5}k\u{a1}dn\u{11}\u{d2}\u{8d}N\u{0}\u{c0}O\u{ae}#q");
40122pub const pbExchangeProviderPersistStoreGuid: windows_core::PCSTR =
40123    windows_core::s!("\u{98}\u{a2}=gb\u{cf}M4\u{82}y\u{db}\u{fa}jP\u{8b}1");
40124pub const pbExchangeProviderPrimaryUserGuid: windows_core::PCSTR =
40125    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}");
40126pub const pbExchangeProviderPublicGuid: windows_core::PCSTR =
40127    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");
40128pub const pbExchangeProviderXportGuid: windows_core::PCSTR = windows_core::s!(
40129    "\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}"
40130);
40131pub const pbGlobalProfileSectionGuid: windows_core::PCSTR = windows_core::s!(
40132    "\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"
40133);
40134pub const pidAdminMin: u32 = 26256u32;
40135pub const pidAttachReadOnlyMin: u32 = 26220u32;
40136pub const pidExchangeNonXmitReservedMin: u32 = 26080u32;
40137pub const pidExchangeXmitReservedMin: u32 = 16352u32;
40138pub const pidFolderMin: u32 = 26168u32;
40139pub const pidLISErrorCodeMax: u32 = 26032u32;
40140pub const pidLISErrorCodeMin: u32 = 26026u32;
40141pub const pidLISInterfacePropMax: u32 = 26080u32;
40142pub const pidLISInterfacePropMin: u32 = 26064u32;
40143pub const pidLISMsgFolderPropMax: u32 = 26048u32;
40144pub const pidLISMsgFolderPropMin: u32 = 26016u32;
40145pub const pidLocalStoreInternalMax: u32 = 26048u32;
40146pub const pidLocalStoreInternalMin: u32 = 25856u32;
40147pub const pidMAPIMin: u32 = 12288u32;
40148pub const pidMessageReadOnlyMin: u32 = 26176u32;
40149pub const pidMessageWriteableMin: u32 = 26200u32;
40150pub const pidProfileMin: u32 = 26112u32;
40151pub const pidRenMsgFldMin: u32 = 4224u32;
40152pub const pidSpecialMin: u32 = 26224u32;
40153pub const pidStoreMin: u32 = 26136u32;
40154pub const pidStoreNonTransMin: u32 = 3648u32;
40155pub const ptagLISErrorCode: u32 = 1705639939u32;
40156pub const ptagLISErrorItemType: u32 = 1705705475u32;
40157pub const ptagLISErrorItemUrl: u32 = 1705836575u32;
40158pub const ptagLISErrorLogUrl: u32 = 1701838879u32;
40159pub const ptagLISErrorOperation: u32 = 1705771011u32;
40160pub const ptagLISErrorSourceUrl: u32 = 1705902111u32;
40161pub const ptagLISExtendedErrorinfo: u32 = 1706033155u32;
40162pub const ptagLISModifiedPropertyList: u32 = 1705967647u32;
40163pub const ptagLISNewMail: u32 = 1707409419u32;
40164pub const ptagLISSubfolders: u32 = 1694498827u32;
40165pub const ptagLISUnreadCount: u32 = 1694564355u32;
40166pub const ptagSql: u32 = 1708130335u32;
40167pub const ptagSqlFrom: u32 = 1708261407u32;
40168pub const ptagSqlGroup: u32 = 1708458015u32;
40169pub const ptagSqlOrder: u32 = 1708392479u32;
40170pub const ptagSqlSelect: u32 = 1708195871u32;
40171pub const ptagSqlWhere: u32 = 1708326943u32;
40172pub const rightsAll: i32 = 1531i32;
40173pub const rightsNone: u32 = 0u32;
40174pub const rightsReadOnly: i32 = 1i32;
40175pub const sdrightsNone: u32 = 0u32;
40176pub const szDamMsgClass: windows_core::PCSTR =
40177    windows_core::s!("IPC.Microsoft Exchange 4.0.Deferred Action");
40178pub const szDemMsgClass: windows_core::PCSTR =
40179    windows_core::s!("IPC.Microsoft Exchange 4.0.Deferred Error");
40180pub const szExRuleMsgClass: windows_core::PCSTR = windows_core::s!("IPM.ExtendedRule.Message");
40181pub const szHrDispatchNotifications: windows_core::PCSTR =
40182    windows_core::s!("HrDispatchNotifications");
40183pub const szMAPIDLLSuffix: windows_core::PCSTR = windows_core::s!("32");
40184pub const szMAPINotificationMsg: windows_core::PCSTR =
40185    windows_core::s!("MAPI Notify window message");
40186pub const szOID_Microsoft_Encryption_Cert: windows_core::PCSTR =
40187    windows_core::s!("1.3.6.1.4.1.311.16.4");
40188pub const szOofTemplateMsgClassPrefix: windows_core::PCSTR =
40189    windows_core::s!("IPM.Note.Rules.OofTemplate.");
40190pub const szProviderModeratorRule: windows_core::PCSTR = windows_core::s!("MSFT:MR");
40191pub const szReplyTemplateMsgClassPrefix: windows_core::PCSTR =
40192    windows_core::s!("IPM.Note.Rules.ReplyTemplate.");
40193pub const szScCreateConversationIndex: windows_core::PCSTR =
40194    windows_core::s!("ScCreateConversationIndex");
40195pub const ulHierChanged: u32 = 1u32;
40196pub const wszExRuleMsgClass: windows_core::PCWSTR = windows_core::w!("IPM.ExtendedRule.Message");
40197pub const wszProviderModeratorRule: windows_core::PCWSTR = windows_core::w!("MSFT:MR");