#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait CIE4ConnectionPoint_Impl: Sized + super::super::System::Com::IConnectionPoint_Impl {
    fn DoInvokeIE4(&self, pf: *mut super::super::Foundation::BOOL, ppv: *mut *mut core::ffi::c_void, dispid: i32, pdispparams: *mut super::super::System::Com::DISPPARAMS) -> windows_core::Result<()>;
    fn DoInvokePIDLIE4(&self, dispid: i32, pidl: *mut Common::ITEMIDLIST, fcancancel: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for CIE4ConnectionPoint {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl CIE4ConnectionPoint_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> CIE4ConnectionPoint_Vtbl
    where
        Identity: CIE4ConnectionPoint_Impl,
    {
        unsafe extern "system" fn DoInvokeIE4<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pf: *mut super::super::Foundation::BOOL, ppv: *mut *mut core::ffi::c_void, dispid: i32, pdispparams: *mut super::super::System::Com::DISPPARAMS) -> windows_core::HRESULT
        where
            Identity: CIE4ConnectionPoint_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            CIE4ConnectionPoint_Impl::DoInvokeIE4(this, core::mem::transmute_copy(&pf), core::mem::transmute_copy(&ppv), core::mem::transmute_copy(&dispid), core::mem::transmute_copy(&pdispparams)).into()
        }
        unsafe extern "system" fn DoInvokePIDLIE4<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dispid: i32, pidl: *mut Common::ITEMIDLIST, fcancancel: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: CIE4ConnectionPoint_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            CIE4ConnectionPoint_Impl::DoInvokePIDLIE4(this, core::mem::transmute_copy(&dispid), core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&fcancancel)).into()
        }
        Self {
            base__: super::super::System::Com::IConnectionPoint_Vtbl::new::<Identity, OFFSET>(),
            DoInvokeIE4: DoInvokeIE4::<Identity, OFFSET>,
            DoInvokePIDLIE4: DoInvokePIDLIE4::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<CIE4ConnectionPoint as windows_core::Interface>::IID || iid == &<super::super::System::Com::IConnectionPoint as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait DFConstraint_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Value(&self) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for DFConstraint {}
#[cfg(feature = "Win32_System_Com")]
impl DFConstraint_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> DFConstraint_Vtbl
    where
        Identity: DFConstraint_Impl,
    {
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: DFConstraint_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match DFConstraint_Impl::Name(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Value<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pv: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: DFConstraint_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match DFConstraint_Impl::Value(this) {
                Ok(ok__) => {
                    pv.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), Name: Name::<Identity, OFFSET>, Value: Value::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DFConstraint as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait DShellFolderViewEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for DShellFolderViewEvents {}
#[cfg(feature = "Win32_System_Com")]
impl DShellFolderViewEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> DShellFolderViewEvents_Vtbl
    where
        Identity: DShellFolderViewEvents_Impl,
    {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DShellFolderViewEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait DShellNameSpaceEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for DShellNameSpaceEvents {}
#[cfg(feature = "Win32_System_Com")]
impl DShellNameSpaceEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> DShellNameSpaceEvents_Vtbl
    where
        Identity: DShellNameSpaceEvents_Impl,
    {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DShellNameSpaceEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait DShellWindowsEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for DShellWindowsEvents {}
#[cfg(feature = "Win32_System_Com")]
impl DShellWindowsEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> DShellWindowsEvents_Vtbl
    where
        Identity: DShellWindowsEvents_Impl,
    {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DShellWindowsEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait DWebBrowserEvents_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for DWebBrowserEvents {}
#[cfg(feature = "Win32_System_Com")]
impl DWebBrowserEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> DWebBrowserEvents_Vtbl
    where
        Identity: DWebBrowserEvents_Impl,
    {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DWebBrowserEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait DWebBrowserEvents2_Impl: Sized + super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for DWebBrowserEvents2 {}
#[cfg(feature = "Win32_System_Com")]
impl DWebBrowserEvents2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> DWebBrowserEvents2_Vtbl
    where
        Identity: DWebBrowserEvents2_Impl,
    {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DWebBrowserEvents2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait Folder_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Title(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn ParentFolder(&self) -> windows_core::Result<Folder>;
    fn Items(&self) -> windows_core::Result<FolderItems>;
    fn ParseName(&self, bname: &windows_core::BSTR) -> windows_core::Result<FolderItem>;
    fn NewFolder(&self, bname: &windows_core::BSTR, voptions: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn MoveHere(&self, vitem: &windows_core::VARIANT, voptions: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn CopyHere(&self, vitem: &windows_core::VARIANT, voptions: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn GetDetailsOf(&self, vitem: &windows_core::VARIANT, icolumn: i32) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for Folder {}
#[cfg(feature = "Win32_System_Com")]
impl Folder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> Folder_Vtbl
    where
        Identity: Folder_Impl,
    {
        unsafe extern "system" fn Title<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::Title(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ParentFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::ParentFolder(this) {
                Ok(ok__) => {
                    ppsf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Items<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::Items(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ParseName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bname: core::mem::MaybeUninit<windows_core::BSTR>, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::ParseName(this, core::mem::transmute(&bname)) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NewFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bname: core::mem::MaybeUninit<windows_core::BSTR>, voptions: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            Folder_Impl::NewFolder(this, core::mem::transmute(&bname), core::mem::transmute(&voptions)).into()
        }
        unsafe extern "system" fn MoveHere<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vitem: core::mem::MaybeUninit<windows_core::VARIANT>, voptions: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            Folder_Impl::MoveHere(this, core::mem::transmute(&vitem), core::mem::transmute(&voptions)).into()
        }
        unsafe extern "system" fn CopyHere<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vitem: core::mem::MaybeUninit<windows_core::VARIANT>, voptions: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            Folder_Impl::CopyHere(this, core::mem::transmute(&vitem), core::mem::transmute(&voptions)).into()
        }
        unsafe extern "system" fn GetDetailsOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vitem: core::mem::MaybeUninit<windows_core::VARIANT>, icolumn: i32, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: Folder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder_Impl::GetDetailsOf(this, core::mem::transmute(&vitem), core::mem::transmute_copy(&icolumn)) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Title: Title::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            ParentFolder: ParentFolder::<Identity, OFFSET>,
            Items: Items::<Identity, OFFSET>,
            ParseName: ParseName::<Identity, OFFSET>,
            NewFolder: NewFolder::<Identity, OFFSET>,
            MoveHere: MoveHere::<Identity, OFFSET>,
            CopyHere: CopyHere::<Identity, OFFSET>,
            GetDetailsOf: GetDetailsOf::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<Folder as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait Folder2_Impl: Sized + Folder_Impl {
    fn Self_(&self) -> windows_core::Result<FolderItem>;
    fn OfflineStatus(&self) -> windows_core::Result<i32>;
    fn Synchronize(&self) -> windows_core::Result<()>;
    fn HaveToShowWebViewBarricade(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn DismissedWebViewBarricade(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for Folder2 {}
#[cfg(feature = "Win32_System_Com")]
impl Folder2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> Folder2_Vtbl
    where
        Identity: Folder2_Impl,
    {
        unsafe extern "system" fn Self_<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder2_Impl::Self_(this) {
                Ok(ok__) => {
                    ppfi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OfflineStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pul: *mut i32) -> windows_core::HRESULT
        where
            Identity: Folder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder2_Impl::OfflineStatus(this) {
                Ok(ok__) => {
                    pul.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Synchronize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            Folder2_Impl::Synchronize(this).into()
        }
        unsafe extern "system" fn HaveToShowWebViewBarricade<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbhavetoshowwebviewbarricade: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: Folder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder2_Impl::HaveToShowWebViewBarricade(this) {
                Ok(ok__) => {
                    pbhavetoshowwebviewbarricade.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DismissedWebViewBarricade<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: Folder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            Folder2_Impl::DismissedWebViewBarricade(this).into()
        }
        Self {
            base__: Folder_Vtbl::new::<Identity, OFFSET>(),
            Self_: Self_::<Identity, OFFSET>,
            OfflineStatus: OfflineStatus::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
            HaveToShowWebViewBarricade: HaveToShowWebViewBarricade::<Identity, OFFSET>,
            DismissedWebViewBarricade: DismissedWebViewBarricade::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<Folder2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<Folder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait Folder3_Impl: Sized + Folder2_Impl {
    fn ShowWebViewBarricade(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetShowWebViewBarricade(&self, bshowwebviewbarricade: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for Folder3 {}
#[cfg(feature = "Win32_System_Com")]
impl Folder3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> Folder3_Vtbl
    where
        Identity: Folder3_Impl,
    {
        unsafe extern "system" fn ShowWebViewBarricade<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbshowwebviewbarricade: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: Folder3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match Folder3_Impl::ShowWebViewBarricade(this) {
                Ok(ok__) => {
                    pbshowwebviewbarricade.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetShowWebViewBarricade<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bshowwebviewbarricade: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: Folder3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            Folder3_Impl::SetShowWebViewBarricade(this, core::mem::transmute_copy(&bshowwebviewbarricade)).into()
        }
        Self {
            base__: Folder2_Vtbl::new::<Identity, OFFSET>(),
            ShowWebViewBarricade: ShowWebViewBarricade::<Identity, OFFSET>,
            SetShowWebViewBarricade: SetShowWebViewBarricade::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<Folder3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<Folder as windows_core::Interface>::IID || iid == &<Folder2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItem_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetName(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Path(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetLink(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn GetFolder(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn IsLink(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn IsFolder(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn IsFileSystem(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn IsBrowsable(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn ModifyDate(&self) -> windows_core::Result<f64>;
    fn SetModifyDate(&self, dt: f64) -> windows_core::Result<()>;
    fn Size(&self) -> windows_core::Result<i32>;
    fn Type(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Verbs(&self) -> windows_core::Result<FolderItemVerbs>;
    fn InvokeVerb(&self, vverb: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItem {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItem_Vtbl
    where
        Identity: FolderItem_Impl,
    {
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Name(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItem_Impl::SetName(this, core::mem::transmute(&bs)).into()
        }
        unsafe extern "system" fn Path<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Path(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::GetLink(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::GetFolder(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsLink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::IsLink(this) {
                Ok(ok__) => {
                    pb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::IsFolder(this) {
                Ok(ok__) => {
                    pb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsFileSystem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::IsFileSystem(this) {
                Ok(ok__) => {
                    pb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsBrowsable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::IsBrowsable(this) {
                Ok(ok__) => {
                    pb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ModifyDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdt: *mut f64) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::ModifyDate(this) {
                Ok(ok__) => {
                    pdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetModifyDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dt: f64) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItem_Impl::SetModifyDate(this, core::mem::transmute_copy(&dt)).into()
        }
        unsafe extern "system" fn Size<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pul: *mut i32) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Size(this) {
                Ok(ok__) => {
                    pul.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Type<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Type(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Verbs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfic: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem_Impl::Verbs(this) {
                Ok(ok__) => {
                    ppfic.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InvokeVerb<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vverb: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: FolderItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItem_Impl::InvokeVerb(this, core::mem::transmute(&vverb)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            SetName: SetName::<Identity, OFFSET>,
            Path: Path::<Identity, OFFSET>,
            GetLink: GetLink::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            IsLink: IsLink::<Identity, OFFSET>,
            IsFolder: IsFolder::<Identity, OFFSET>,
            IsFileSystem: IsFileSystem::<Identity, OFFSET>,
            IsBrowsable: IsBrowsable::<Identity, OFFSET>,
            ModifyDate: ModifyDate::<Identity, OFFSET>,
            SetModifyDate: SetModifyDate::<Identity, OFFSET>,
            Size: Size::<Identity, OFFSET>,
            Type: Type::<Identity, OFFSET>,
            Verbs: Verbs::<Identity, OFFSET>,
            InvokeVerb: InvokeVerb::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItem as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItem2_Impl: Sized + FolderItem_Impl {
    fn InvokeVerbEx(&self, vverb: &windows_core::VARIANT, vargs: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn ExtendedProperty(&self, bstrpropname: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItem2 {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItem2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItem2_Vtbl
    where
        Identity: FolderItem2_Impl,
    {
        unsafe extern "system" fn InvokeVerbEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vverb: core::mem::MaybeUninit<windows_core::VARIANT>, vargs: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: FolderItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItem2_Impl::InvokeVerbEx(this, core::mem::transmute(&vverb), core::mem::transmute(&vargs)).into()
        }
        unsafe extern "system" fn ExtendedProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpropname: core::mem::MaybeUninit<windows_core::BSTR>, pvret: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: FolderItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItem2_Impl::ExtendedProperty(this, core::mem::transmute(&bstrpropname)) {
                Ok(ok__) => {
                    pvret.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: FolderItem_Vtbl::new::<Identity, OFFSET>(),
            InvokeVerbEx: InvokeVerbEx::<Identity, OFFSET>,
            ExtendedProperty: ExtendedProperty::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItem2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<FolderItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItemVerb_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn DoIt(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItemVerb {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItemVerb_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItemVerb_Vtbl
    where
        Identity: FolderItemVerb_Impl,
    {
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerb_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerb_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerb_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerb_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: FolderItemVerb_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerb_Impl::Name(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DoIt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerb_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItemVerb_Impl::DoIt(this).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            DoIt: DoIt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItemVerb as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItemVerbs_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Item(&self, index: &windows_core::VARIANT) -> windows_core::Result<FolderItemVerb>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItemVerbs {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItemVerbs_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItemVerbs_Vtbl
    where
        Identity: FolderItemVerbs_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: FolderItemVerbs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerbs_Impl::Count(this) {
                Ok(ok__) => {
                    plcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerbs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerbs_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerbs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerbs_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerbs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerbs_Impl::Item(this, core::mem::transmute(&index)) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItemVerbs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItemVerbs_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItemVerbs as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItems_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Item(&self, index: &windows_core::VARIANT) -> windows_core::Result<FolderItem>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItems {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItems_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItems_Vtbl
    where
        Identity: FolderItems_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: FolderItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItems_Impl::Count(this) {
                Ok(ok__) => {
                    plcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItems_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItems_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItems_Impl::Item(this, core::mem::transmute(&index)) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItems_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItems as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItems2_Impl: Sized + FolderItems_Impl {
    fn InvokeVerbEx(&self, vverb: &windows_core::VARIANT, vargs: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItems2 {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItems2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItems2_Vtbl
    where
        Identity: FolderItems2_Impl,
    {
        unsafe extern "system" fn InvokeVerbEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vverb: core::mem::MaybeUninit<windows_core::VARIANT>, vargs: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: FolderItems2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItems2_Impl::InvokeVerbEx(this, core::mem::transmute(&vverb), core::mem::transmute(&vargs)).into()
        }
        Self { base__: FolderItems_Vtbl::new::<Identity, OFFSET>(), InvokeVerbEx: InvokeVerbEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItems2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<FolderItems as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait FolderItems3_Impl: Sized + FolderItems2_Impl {
    fn Filter(&self, grfflags: i32, bstrfilespec: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Verbs(&self) -> windows_core::Result<FolderItemVerbs>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for FolderItems3 {}
#[cfg(feature = "Win32_System_Com")]
impl FolderItems3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> FolderItems3_Vtbl
    where
        Identity: FolderItems3_Impl,
    {
        unsafe extern "system" fn Filter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfflags: i32, bstrfilespec: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: FolderItems3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            FolderItems3_Impl::Filter(this, core::mem::transmute_copy(&grfflags), core::mem::transmute(&bstrfilespec)).into()
        }
        unsafe extern "system" fn Verbs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfic: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: FolderItems3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match FolderItems3_Impl::Verbs(this) {
                Ok(ok__) => {
                    ppfic.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: FolderItems2_Vtbl::new::<Identity, OFFSET>(), Filter: Filter::<Identity, OFFSET>, Verbs: Verbs::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItems3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<FolderItems as windows_core::Interface>::IID || iid == &<FolderItems2 as windows_core::Interface>::IID
    }
}
pub trait IACList_Impl: Sized {
    fn Expand(&self, pszexpand: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IACList {}
impl IACList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IACList_Vtbl
    where
        Identity: IACList_Impl,
    {
        unsafe extern "system" fn Expand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszexpand: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IACList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IACList_Impl::Expand(this, core::mem::transmute(&pszexpand)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Expand: Expand::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IACList as windows_core::Interface>::IID
    }
}
pub trait IACList2_Impl: Sized + IACList_Impl {
    fn SetOptions(&self, dwflag: u32) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IACList2 {}
impl IACList2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IACList2_Vtbl
    where
        Identity: IACList2_Impl,
    {
        unsafe extern "system" fn SetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflag: u32) -> windows_core::HRESULT
        where
            Identity: IACList2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IACList2_Impl::SetOptions(this, core::mem::transmute_copy(&dwflag)).into()
        }
        unsafe extern "system" fn GetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflag: *mut u32) -> windows_core::HRESULT
        where
            Identity: IACList2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IACList2_Impl::GetOptions(this) {
                Ok(ok__) => {
                    pdwflag.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IACList_Vtbl::new::<Identity, OFFSET>(), SetOptions: SetOptions::<Identity, OFFSET>, GetOptions: GetOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IACList2 as windows_core::Interface>::IID || iid == &<IACList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAccessibilityDockingService_Impl: Sized {
    fn GetAvailableSize(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR, pcxfixed: *mut u32, pcymax: *mut u32) -> windows_core::Result<()>;
    fn DockWindow(&self, hwnd: super::super::Foundation::HWND, hmonitor: super::super::Graphics::Gdi::HMONITOR, cyrequested: u32, pcallback: Option<&IAccessibilityDockingServiceCallback>) -> windows_core::Result<()>;
    fn UndockWindow(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAccessibilityDockingService {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAccessibilityDockingService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAccessibilityDockingService_Vtbl
    where
        Identity: IAccessibilityDockingService_Impl,
    {
        unsafe extern "system" fn GetAvailableSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR, pcxfixed: *mut u32, pcymax: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAccessibilityDockingService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAccessibilityDockingService_Impl::GetAvailableSize(this, core::mem::transmute_copy(&hmonitor), core::mem::transmute_copy(&pcxfixed), core::mem::transmute_copy(&pcymax)).into()
        }
        unsafe extern "system" fn DockWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, hmonitor: super::super::Graphics::Gdi::HMONITOR, cyrequested: u32, pcallback: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAccessibilityDockingService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAccessibilityDockingService_Impl::DockWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&hmonitor), core::mem::transmute_copy(&cyrequested), windows_core::from_raw_borrowed(&pcallback)).into()
        }
        unsafe extern "system" fn UndockWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IAccessibilityDockingService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAccessibilityDockingService_Impl::UndockWindow(this, core::mem::transmute_copy(&hwnd)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAvailableSize: GetAvailableSize::<Identity, OFFSET>,
            DockWindow: DockWindow::<Identity, OFFSET>,
            UndockWindow: UndockWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAccessibilityDockingService as windows_core::Interface>::IID
    }
}
pub trait IAccessibilityDockingServiceCallback_Impl: Sized {
    fn Undocked(&self, undockreason: UNDOCK_REASON) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAccessibilityDockingServiceCallback {}
impl IAccessibilityDockingServiceCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAccessibilityDockingServiceCallback_Vtbl
    where
        Identity: IAccessibilityDockingServiceCallback_Impl,
    {
        unsafe extern "system" fn Undocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, undockreason: UNDOCK_REASON) -> windows_core::HRESULT
        where
            Identity: IAccessibilityDockingServiceCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAccessibilityDockingServiceCallback_Impl::Undocked(this, core::mem::transmute_copy(&undockreason)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Undocked: Undocked::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAccessibilityDockingServiceCallback as windows_core::Interface>::IID
    }
}
pub trait IAccessibleObject_Impl: Sized {
    fn SetAccessibleName(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAccessibleObject {}
impl IAccessibleObject_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAccessibleObject_Vtbl
    where
        Identity: IAccessibleObject_Impl,
    {
        unsafe extern "system" fn SetAccessibleName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAccessibleObject_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAccessibleObject_Impl::SetAccessibleName(this, core::mem::transmute(&pszname)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAccessibleName: SetAccessibleName::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAccessibleObject as windows_core::Interface>::IID
    }
}
pub trait IActionProgress_Impl: Sized {
    fn Begin(&self, action: SPACTION, flags: u32) -> windows_core::Result<()>;
    fn UpdateProgress(&self, ulcompleted: u64, ultotal: u64) -> windows_core::Result<()>;
    fn UpdateText(&self, sptext: SPTEXT, psztext: &windows_core::PCWSTR, fmaycompact: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn QueryCancel(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn ResetCancel(&self) -> windows_core::Result<()>;
    fn End(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IActionProgress {}
impl IActionProgress_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IActionProgress_Vtbl
    where
        Identity: IActionProgress_Impl,
    {
        unsafe extern "system" fn Begin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, action: SPACTION, flags: u32) -> windows_core::HRESULT
        where
            Identity: IActionProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgress_Impl::Begin(this, core::mem::transmute_copy(&action), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn UpdateProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcompleted: u64, ultotal: u64) -> windows_core::HRESULT
        where
            Identity: IActionProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgress_Impl::UpdateProgress(this, core::mem::transmute_copy(&ulcompleted), core::mem::transmute_copy(&ultotal)).into()
        }
        unsafe extern "system" fn UpdateText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sptext: SPTEXT, psztext: windows_core::PCWSTR, fmaycompact: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IActionProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgress_Impl::UpdateText(this, core::mem::transmute_copy(&sptext), core::mem::transmute(&psztext), core::mem::transmute_copy(&fmaycompact)).into()
        }
        unsafe extern "system" fn QueryCancel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcancelled: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IActionProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IActionProgress_Impl::QueryCancel(this) {
                Ok(ok__) => {
                    pfcancelled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ResetCancel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IActionProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgress_Impl::ResetCancel(this).into()
        }
        unsafe extern "system" fn End<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IActionProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgress_Impl::End(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Begin: Begin::<Identity, OFFSET>,
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            UpdateText: UpdateText::<Identity, OFFSET>,
            QueryCancel: QueryCancel::<Identity, OFFSET>,
            ResetCancel: ResetCancel::<Identity, OFFSET>,
            End: End::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IActionProgress as windows_core::Interface>::IID
    }
}
pub trait IActionProgressDialog_Impl: Sized {
    fn Initialize(&self, flags: u32, psztitle: &windows_core::PCWSTR, pszcancel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IActionProgressDialog {}
impl IActionProgressDialog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IActionProgressDialog_Vtbl
    where
        Identity: IActionProgressDialog_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, psztitle: windows_core::PCWSTR, pszcancel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IActionProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgressDialog_Impl::Initialize(this, core::mem::transmute_copy(&flags), core::mem::transmute(&psztitle), core::mem::transmute(&pszcancel)).into()
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IActionProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IActionProgressDialog_Impl::Stop(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET>, Stop: Stop::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IActionProgressDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAppActivationUIInfo_Impl: Sized {
    fn GetMonitor(&self) -> windows_core::Result<super::super::Graphics::Gdi::HMONITOR>;
    fn GetInvokePoint(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetShowCommand(&self) -> windows_core::Result<i32>;
    fn GetShowUI(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn GetKeyState(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAppActivationUIInfo {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAppActivationUIInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAppActivationUIInfo_Vtbl
    where
        Identity: IAppActivationUIInfo_Impl,
    {
        unsafe extern "system" fn GetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IAppActivationUIInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppActivationUIInfo_Impl::GetMonitor(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInvokePoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IAppActivationUIInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppActivationUIInfo_Impl::GetInvokePoint(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetShowCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAppActivationUIInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppActivationUIInfo_Impl::GetShowCommand(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetShowUI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAppActivationUIInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppActivationUIInfo_Impl::GetShowUI(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetKeyState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAppActivationUIInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppActivationUIInfo_Impl::GetKeyState(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMonitor: GetMonitor::<Identity, OFFSET>,
            GetInvokePoint: GetInvokePoint::<Identity, OFFSET>,
            GetShowCommand: GetShowCommand::<Identity, OFFSET>,
            GetShowUI: GetShowUI::<Identity, OFFSET>,
            GetKeyState: GetKeyState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppActivationUIInfo as windows_core::Interface>::IID
    }
}
pub trait IAppPublisher_Impl: Sized {
    fn GetNumberOfCategories(&self) -> windows_core::Result<u32>;
    fn GetCategories(&self) -> windows_core::Result<APPCATEGORYINFOLIST>;
    fn GetNumberOfApps(&self) -> windows_core::Result<u32>;
    fn EnumApps(&self, pappcategoryid: *const windows_core::GUID) -> windows_core::Result<IEnumPublishedApps>;
}
impl windows_core::RuntimeName for IAppPublisher {}
impl IAppPublisher_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAppPublisher_Vtbl
    where
        Identity: IAppPublisher_Impl,
    {
        unsafe extern "system" fn GetNumberOfCategories<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcat: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAppPublisher_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppPublisher_Impl::GetNumberOfCategories(this) {
                Ok(ok__) => {
                    pdwcat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCategories<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pappcategorylist: *mut APPCATEGORYINFOLIST) -> windows_core::HRESULT
        where
            Identity: IAppPublisher_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppPublisher_Impl::GetCategories(this) {
                Ok(ok__) => {
                    pappcategorylist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumberOfApps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwapps: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAppPublisher_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppPublisher_Impl::GetNumberOfApps(this) {
                Ok(ok__) => {
                    pdwapps.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumApps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pappcategoryid: *const windows_core::GUID, ppepa: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAppPublisher_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppPublisher_Impl::EnumApps(this, core::mem::transmute_copy(&pappcategoryid)) {
                Ok(ok__) => {
                    ppepa.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfCategories: GetNumberOfCategories::<Identity, OFFSET>,
            GetCategories: GetCategories::<Identity, OFFSET>,
            GetNumberOfApps: GetNumberOfApps::<Identity, OFFSET>,
            EnumApps: EnumApps::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppPublisher as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAppVisibility_Impl: Sized {
    fn GetAppVisibilityOnMonitor(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<MONITOR_APP_VISIBILITY>;
    fn IsLauncherVisible(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn Advise(&self, pcallback: Option<&IAppVisibilityEvents>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAppVisibility {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAppVisibility_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAppVisibility_Vtbl
    where
        Identity: IAppVisibility_Impl,
    {
        unsafe extern "system" fn GetAppVisibilityOnMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR, pmode: *mut MONITOR_APP_VISIBILITY) -> windows_core::HRESULT
        where
            Identity: IAppVisibility_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppVisibility_Impl::GetAppVisibilityOnMonitor(this, core::mem::transmute_copy(&hmonitor)) {
                Ok(ok__) => {
                    pmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsLauncherVisible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfvisible: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAppVisibility_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppVisibility_Impl::IsLauncherVisible(this) {
                Ok(ok__) => {
                    pfvisible.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcallback: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAppVisibility_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAppVisibility_Impl::Advise(this, windows_core::from_raw_borrowed(&pcallback)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IAppVisibility_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAppVisibility_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAppVisibilityOnMonitor: GetAppVisibilityOnMonitor::<Identity, OFFSET>,
            IsLauncherVisible: IsLauncherVisible::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppVisibility as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAppVisibilityEvents_Impl: Sized {
    fn AppVisibilityOnMonitorChanged(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR, previousmode: MONITOR_APP_VISIBILITY, currentmode: MONITOR_APP_VISIBILITY) -> windows_core::Result<()>;
    fn LauncherVisibilityChange(&self, currentvisiblestate: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAppVisibilityEvents {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAppVisibilityEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAppVisibilityEvents_Vtbl
    where
        Identity: IAppVisibilityEvents_Impl,
    {
        unsafe extern "system" fn AppVisibilityOnMonitorChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR, previousmode: MONITOR_APP_VISIBILITY, currentmode: MONITOR_APP_VISIBILITY) -> windows_core::HRESULT
        where
            Identity: IAppVisibilityEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAppVisibilityEvents_Impl::AppVisibilityOnMonitorChanged(this, core::mem::transmute_copy(&hmonitor), core::mem::transmute_copy(&previousmode), core::mem::transmute_copy(&currentmode)).into()
        }
        unsafe extern "system" fn LauncherVisibilityChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentvisiblestate: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAppVisibilityEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAppVisibilityEvents_Impl::LauncherVisibilityChange(this, core::mem::transmute_copy(&currentvisiblestate)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AppVisibilityOnMonitorChanged: AppVisibilityOnMonitorChanged::<Identity, OFFSET>,
            LauncherVisibilityChange: LauncherVisibilityChange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppVisibilityEvents as windows_core::Interface>::IID
    }
}
pub trait IApplicationActivationManager_Impl: Sized {
    fn ActivateApplication(&self, appusermodelid: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR, options: ACTIVATEOPTIONS) -> windows_core::Result<u32>;
    fn ActivateForFile(&self, appusermodelid: &windows_core::PCWSTR, itemarray: Option<&IShellItemArray>, verb: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn ActivateForProtocol(&self, appusermodelid: &windows_core::PCWSTR, itemarray: Option<&IShellItemArray>) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IApplicationActivationManager {}
impl IApplicationActivationManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationActivationManager_Vtbl
    where
        Identity: IApplicationActivationManager_Impl,
    {
        unsafe extern "system" fn ActivateApplication<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appusermodelid: windows_core::PCWSTR, arguments: windows_core::PCWSTR, options: ACTIVATEOPTIONS, processid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IApplicationActivationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationActivationManager_Impl::ActivateApplication(this, core::mem::transmute(&appusermodelid), core::mem::transmute(&arguments), core::mem::transmute_copy(&options)) {
                Ok(ok__) => {
                    processid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ActivateForFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appusermodelid: windows_core::PCWSTR, itemarray: *mut core::ffi::c_void, verb: windows_core::PCWSTR, processid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IApplicationActivationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationActivationManager_Impl::ActivateForFile(this, core::mem::transmute(&appusermodelid), windows_core::from_raw_borrowed(&itemarray), core::mem::transmute(&verb)) {
                Ok(ok__) => {
                    processid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ActivateForProtocol<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appusermodelid: windows_core::PCWSTR, itemarray: *mut core::ffi::c_void, processid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IApplicationActivationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationActivationManager_Impl::ActivateForProtocol(this, core::mem::transmute(&appusermodelid), windows_core::from_raw_borrowed(&itemarray)) {
                Ok(ok__) => {
                    processid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ActivateApplication: ActivateApplication::<Identity, OFFSET>,
            ActivateForFile: ActivateForFile::<Identity, OFFSET>,
            ActivateForProtocol: ActivateForProtocol::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationActivationManager as windows_core::Interface>::IID
    }
}
pub trait IApplicationAssociationRegistration_Impl: Sized {
    fn QueryCurrentDefault(&self, pszquery: &windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL) -> windows_core::Result<windows_core::PWSTR>;
    fn QueryAppIsDefault(&self, pszquery: &windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn QueryAppIsDefaultAll(&self, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetAppAsDefault(&self, pszappregistryname: &windows_core::PCWSTR, pszset: &windows_core::PCWSTR, atsettype: ASSOCIATIONTYPE) -> windows_core::Result<()>;
    fn SetAppAsDefaultAll(&self, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ClearUserAssociations(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IApplicationAssociationRegistration {}
impl IApplicationAssociationRegistration_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationAssociationRegistration_Vtbl
    where
        Identity: IApplicationAssociationRegistration_Impl,
    {
        unsafe extern "system" fn QueryCurrentDefault<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszquery: windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, ppszassociation: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationAssociationRegistration_Impl::QueryCurrentDefault(this, core::mem::transmute(&pszquery), core::mem::transmute_copy(&atquerytype), core::mem::transmute_copy(&alquerylevel)) {
                Ok(ok__) => {
                    ppszassociation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryAppIsDefault<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszquery: windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: windows_core::PCWSTR, pfdefault: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationAssociationRegistration_Impl::QueryAppIsDefault(this, core::mem::transmute(&pszquery), core::mem::transmute_copy(&atquerytype), core::mem::transmute_copy(&alquerylevel), core::mem::transmute(&pszappregistryname)) {
                Ok(ok__) => {
                    pfdefault.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryAppIsDefaultAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: windows_core::PCWSTR, pfdefault: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationAssociationRegistration_Impl::QueryAppIsDefaultAll(this, core::mem::transmute_copy(&alquerylevel), core::mem::transmute(&pszappregistryname)) {
                Ok(ok__) => {
                    pfdefault.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAppAsDefault<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappregistryname: windows_core::PCWSTR, pszset: windows_core::PCWSTR, atsettype: ASSOCIATIONTYPE) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationAssociationRegistration_Impl::SetAppAsDefault(this, core::mem::transmute(&pszappregistryname), core::mem::transmute(&pszset), core::mem::transmute_copy(&atsettype)).into()
        }
        unsafe extern "system" fn SetAppAsDefaultAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappregistryname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationAssociationRegistration_Impl::SetAppAsDefaultAll(this, core::mem::transmute(&pszappregistryname)).into()
        }
        unsafe extern "system" fn ClearUserAssociations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationAssociationRegistration_Impl::ClearUserAssociations(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryCurrentDefault: QueryCurrentDefault::<Identity, OFFSET>,
            QueryAppIsDefault: QueryAppIsDefault::<Identity, OFFSET>,
            QueryAppIsDefaultAll: QueryAppIsDefaultAll::<Identity, OFFSET>,
            SetAppAsDefault: SetAppAsDefault::<Identity, OFFSET>,
            SetAppAsDefaultAll: SetAppAsDefaultAll::<Identity, OFFSET>,
            ClearUserAssociations: ClearUserAssociations::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationAssociationRegistration as windows_core::Interface>::IID
    }
}
pub trait IApplicationAssociationRegistrationUI_Impl: Sized {
    fn LaunchAdvancedAssociationUI(&self, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IApplicationAssociationRegistrationUI {}
impl IApplicationAssociationRegistrationUI_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationAssociationRegistrationUI_Vtbl
    where
        Identity: IApplicationAssociationRegistrationUI_Impl,
    {
        unsafe extern "system" fn LaunchAdvancedAssociationUI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappregistryname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IApplicationAssociationRegistrationUI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationAssociationRegistrationUI_Impl::LaunchAdvancedAssociationUI(this, core::mem::transmute(&pszappregistryname)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), LaunchAdvancedAssociationUI: LaunchAdvancedAssociationUI::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationAssociationRegistrationUI as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IApplicationDesignModeSettings_Impl: Sized {
    fn SetNativeDisplaySize(&self, nativedisplaysizepixels: &super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn SetScaleFactor(&self, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::Result<()>;
    fn SetApplicationViewState(&self, viewstate: APPLICATION_VIEW_STATE) -> windows_core::Result<()>;
    fn ComputeApplicationSize(&self) -> windows_core::Result<super::super::Foundation::SIZE>;
    fn IsApplicationViewStateSupported(&self, viewstate: APPLICATION_VIEW_STATE, nativedisplaysizepixels: &super::super::Foundation::SIZE, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn TriggerEdgeGesture(&self, edgegesturekind: EDGE_GESTURE_KIND) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IApplicationDesignModeSettings {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IApplicationDesignModeSettings_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationDesignModeSettings_Vtbl
    where
        Identity: IApplicationDesignModeSettings_Impl,
    {
        unsafe extern "system" fn SetNativeDisplaySize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nativedisplaysizepixels: super::super::Foundation::SIZE) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings_Impl::SetNativeDisplaySize(this, core::mem::transmute(&nativedisplaysizepixels)).into()
        }
        unsafe extern "system" fn SetScaleFactor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings_Impl::SetScaleFactor(this, core::mem::transmute_copy(&scalefactor)).into()
        }
        unsafe extern "system" fn SetApplicationViewState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewstate: APPLICATION_VIEW_STATE) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings_Impl::SetApplicationViewState(this, core::mem::transmute_copy(&viewstate)).into()
        }
        unsafe extern "system" fn ComputeApplicationSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, applicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationDesignModeSettings_Impl::ComputeApplicationSize(this) {
                Ok(ok__) => {
                    applicationsizepixels.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsApplicationViewStateSupported<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewstate: APPLICATION_VIEW_STATE, nativedisplaysizepixels: super::super::Foundation::SIZE, scalefactor: Common::DEVICE_SCALE_FACTOR, supported: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationDesignModeSettings_Impl::IsApplicationViewStateSupported(this, core::mem::transmute_copy(&viewstate), core::mem::transmute(&nativedisplaysizepixels), core::mem::transmute_copy(&scalefactor)) {
                Ok(ok__) => {
                    supported.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TriggerEdgeGesture<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, edgegesturekind: EDGE_GESTURE_KIND) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings_Impl::TriggerEdgeGesture(this, core::mem::transmute_copy(&edgegesturekind)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetNativeDisplaySize: SetNativeDisplaySize::<Identity, OFFSET>,
            SetScaleFactor: SetScaleFactor::<Identity, OFFSET>,
            SetApplicationViewState: SetApplicationViewState::<Identity, OFFSET>,
            ComputeApplicationSize: ComputeApplicationSize::<Identity, OFFSET>,
            IsApplicationViewStateSupported: IsApplicationViewStateSupported::<Identity, OFFSET>,
            TriggerEdgeGesture: TriggerEdgeGesture::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDesignModeSettings as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IApplicationDesignModeSettings2_Impl: Sized + IApplicationDesignModeSettings_Impl {
    fn SetNativeDisplayOrientation(&self, nativedisplayorientation: NATIVE_DISPLAY_ORIENTATION) -> windows_core::Result<()>;
    fn SetApplicationViewOrientation(&self, vieworientation: APPLICATION_VIEW_ORIENTATION) -> windows_core::Result<()>;
    fn SetAdjacentDisplayEdges(&self, adjacentdisplayedges: ADJACENT_DISPLAY_EDGES) -> windows_core::Result<()>;
    fn SetIsOnLockScreen(&self, isonlockscreen: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetApplicationViewMinWidth(&self, viewminwidth: APPLICATION_VIEW_MIN_WIDTH) -> windows_core::Result<()>;
    fn GetApplicationSizeBounds(&self, minapplicationsizepixels: *mut super::super::Foundation::SIZE, maxapplicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn GetApplicationViewOrientation(&self, applicationsizepixels: &super::super::Foundation::SIZE) -> windows_core::Result<APPLICATION_VIEW_ORIENTATION>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IApplicationDesignModeSettings2 {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IApplicationDesignModeSettings2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationDesignModeSettings2_Vtbl
    where
        Identity: IApplicationDesignModeSettings2_Impl,
    {
        unsafe extern "system" fn SetNativeDisplayOrientation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nativedisplayorientation: NATIVE_DISPLAY_ORIENTATION) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings2_Impl::SetNativeDisplayOrientation(this, core::mem::transmute_copy(&nativedisplayorientation)).into()
        }
        unsafe extern "system" fn SetApplicationViewOrientation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vieworientation: APPLICATION_VIEW_ORIENTATION) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings2_Impl::SetApplicationViewOrientation(this, core::mem::transmute_copy(&vieworientation)).into()
        }
        unsafe extern "system" fn SetAdjacentDisplayEdges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, adjacentdisplayedges: ADJACENT_DISPLAY_EDGES) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings2_Impl::SetAdjacentDisplayEdges(this, core::mem::transmute_copy(&adjacentdisplayedges)).into()
        }
        unsafe extern "system" fn SetIsOnLockScreen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, isonlockscreen: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings2_Impl::SetIsOnLockScreen(this, core::mem::transmute_copy(&isonlockscreen)).into()
        }
        unsafe extern "system" fn SetApplicationViewMinWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewminwidth: APPLICATION_VIEW_MIN_WIDTH) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings2_Impl::SetApplicationViewMinWidth(this, core::mem::transmute_copy(&viewminwidth)).into()
        }
        unsafe extern "system" fn GetApplicationSizeBounds<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minapplicationsizepixels: *mut super::super::Foundation::SIZE, maxapplicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDesignModeSettings2_Impl::GetApplicationSizeBounds(this, core::mem::transmute_copy(&minapplicationsizepixels), core::mem::transmute_copy(&maxapplicationsizepixels)).into()
        }
        unsafe extern "system" fn GetApplicationViewOrientation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, applicationsizepixels: super::super::Foundation::SIZE, vieworientation: *mut APPLICATION_VIEW_ORIENTATION) -> windows_core::HRESULT
        where
            Identity: IApplicationDesignModeSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IApplicationDesignModeSettings2_Impl::GetApplicationViewOrientation(this, core::mem::transmute(&applicationsizepixels)) {
                Ok(ok__) => {
                    vieworientation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IApplicationDesignModeSettings_Vtbl::new::<Identity, OFFSET>(),
            SetNativeDisplayOrientation: SetNativeDisplayOrientation::<Identity, OFFSET>,
            SetApplicationViewOrientation: SetApplicationViewOrientation::<Identity, OFFSET>,
            SetAdjacentDisplayEdges: SetAdjacentDisplayEdges::<Identity, OFFSET>,
            SetIsOnLockScreen: SetIsOnLockScreen::<Identity, OFFSET>,
            SetApplicationViewMinWidth: SetApplicationViewMinWidth::<Identity, OFFSET>,
            GetApplicationSizeBounds: GetApplicationSizeBounds::<Identity, OFFSET>,
            GetApplicationViewOrientation: GetApplicationViewOrientation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDesignModeSettings2 as windows_core::Interface>::IID || iid == &<IApplicationDesignModeSettings as windows_core::Interface>::IID
    }
}
pub trait IApplicationDestinations_Impl: Sized {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn RemoveDestination(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn RemoveAllDestinations(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IApplicationDestinations {}
impl IApplicationDestinations_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationDestinations_Vtbl
    where
        Identity: IApplicationDestinations_Impl,
    {
        unsafe extern "system" fn SetAppID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IApplicationDestinations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDestinations_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
        }
        unsafe extern "system" fn RemoveDestination<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IApplicationDestinations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDestinations_Impl::RemoveDestination(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn RemoveAllDestinations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IApplicationDestinations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDestinations_Impl::RemoveAllDestinations(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAppID: SetAppID::<Identity, OFFSET>,
            RemoveDestination: RemoveDestination::<Identity, OFFSET>,
            RemoveAllDestinations: RemoveAllDestinations::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDestinations as windows_core::Interface>::IID
    }
}
pub trait IApplicationDocumentLists_Impl: Sized {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetList(&self, listtype: APPDOCLISTTYPE, citemsdesired: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IApplicationDocumentLists {}
impl IApplicationDocumentLists_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IApplicationDocumentLists_Vtbl
    where
        Identity: IApplicationDocumentLists_Impl,
    {
        unsafe extern "system" fn SetAppID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IApplicationDocumentLists_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDocumentLists_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
        }
        unsafe extern "system" fn GetList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, listtype: APPDOCLISTTYPE, citemsdesired: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IApplicationDocumentLists_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IApplicationDocumentLists_Impl::GetList(this, core::mem::transmute_copy(&listtype), core::mem::transmute_copy(&citemsdesired), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAppID: SetAppID::<Identity, OFFSET>, GetList: GetList::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDocumentLists as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAssocHandler_Impl: Sized {
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetUIName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetIconLocation(&self, ppszpath: *mut windows_core::PWSTR, pindex: *mut i32) -> windows_core::Result<()>;
    fn IsRecommended(&self) -> windows_core::HRESULT;
    fn MakeDefault(&self, pszdescription: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Invoke(&self, pdo: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn CreateInvoker(&self, pdo: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<IAssocHandlerInvoker>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAssocHandler {}
#[cfg(feature = "Win32_System_Com")]
impl IAssocHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAssocHandler_Vtbl
    where
        Identity: IAssocHandler_Impl,
    {
        unsafe extern "system" fn GetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAssocHandler_Impl::GetName(this) {
                Ok(ok__) => {
                    ppsz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetUIName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAssocHandler_Impl::GetUIName(this) {
                Ok(ok__) => {
                    ppsz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszpath: *mut windows_core::PWSTR, pindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAssocHandler_Impl::GetIconLocation(this, core::mem::transmute_copy(&ppszpath), core::mem::transmute_copy(&pindex)).into()
        }
        unsafe extern "system" fn IsRecommended<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAssocHandler_Impl::IsRecommended(this)
        }
        unsafe extern "system" fn MakeDefault<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdescription: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAssocHandler_Impl::MakeDefault(this, core::mem::transmute(&pszdescription)).into()
        }
        unsafe extern "system" fn Invoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdo: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAssocHandler_Impl::Invoke(this, windows_core::from_raw_borrowed(&pdo)).into()
        }
        unsafe extern "system" fn CreateInvoker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdo: *mut core::ffi::c_void, ppinvoker: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAssocHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAssocHandler_Impl::CreateInvoker(this, windows_core::from_raw_borrowed(&pdo)) {
                Ok(ok__) => {
                    ppinvoker.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetUIName: GetUIName::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            IsRecommended: IsRecommended::<Identity, OFFSET>,
            MakeDefault: MakeDefault::<Identity, OFFSET>,
            Invoke: Invoke::<Identity, OFFSET>,
            CreateInvoker: CreateInvoker::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAssocHandler as windows_core::Interface>::IID
    }
}
pub trait IAssocHandlerInvoker_Impl: Sized {
    fn SupportsSelection(&self) -> windows_core::Result<()>;
    fn Invoke(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAssocHandlerInvoker {}
impl IAssocHandlerInvoker_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAssocHandlerInvoker_Vtbl
    where
        Identity: IAssocHandlerInvoker_Impl,
    {
        unsafe extern "system" fn SupportsSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAssocHandlerInvoker_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAssocHandlerInvoker_Impl::SupportsSelection(this).into()
        }
        unsafe extern "system" fn Invoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAssocHandlerInvoker_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAssocHandlerInvoker_Impl::Invoke(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SupportsSelection: SupportsSelection::<Identity, OFFSET>,
            Invoke: Invoke::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAssocHandlerInvoker as windows_core::Interface>::IID
    }
}
pub trait IAttachmentExecute_Impl: Sized {
    fn SetClientTitle(&self, psztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetClientGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn SetLocalPath(&self, pszlocalpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFileName(&self, pszfilename: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetSource(&self, pszsource: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetReferrer(&self, pszreferrer: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CheckPolicy(&self) -> windows_core::Result<()>;
    fn Prompt(&self, hwnd: super::super::Foundation::HWND, prompt: ATTACHMENT_PROMPT) -> windows_core::Result<ATTACHMENT_ACTION>;
    fn Save(&self) -> windows_core::Result<()>;
    fn Execute(&self, hwnd: super::super::Foundation::HWND, pszverb: &windows_core::PCWSTR, phprocess: *mut super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn SaveWithUI(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn ClearClientState(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAttachmentExecute {}
impl IAttachmentExecute_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAttachmentExecute_Vtbl
    where
        Identity: IAttachmentExecute_Impl,
    {
        unsafe extern "system" fn SetClientTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SetClientTitle(this, core::mem::transmute(&psztitle)).into()
        }
        unsafe extern "system" fn SetClientGuid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SetClientGuid(this, core::mem::transmute_copy(&guid)).into()
        }
        unsafe extern "system" fn SetLocalPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszlocalpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SetLocalPath(this, core::mem::transmute(&pszlocalpath)).into()
        }
        unsafe extern "system" fn SetFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SetFileName(this, core::mem::transmute(&pszfilename)).into()
        }
        unsafe extern "system" fn SetSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsource: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SetSource(this, core::mem::transmute(&pszsource)).into()
        }
        unsafe extern "system" fn SetReferrer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszreferrer: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SetReferrer(this, core::mem::transmute(&pszreferrer)).into()
        }
        unsafe extern "system" fn CheckPolicy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::CheckPolicy(this).into()
        }
        unsafe extern "system" fn Prompt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prompt: ATTACHMENT_PROMPT, paction: *mut ATTACHMENT_ACTION) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAttachmentExecute_Impl::Prompt(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prompt)) {
                Ok(ok__) => {
                    paction.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Save<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::Save(this).into()
        }
        unsafe extern "system" fn Execute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pszverb: windows_core::PCWSTR, phprocess: *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::Execute(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&pszverb), core::mem::transmute_copy(&phprocess)).into()
        }
        unsafe extern "system" fn SaveWithUI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::SaveWithUI(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn ClearClientState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAttachmentExecute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttachmentExecute_Impl::ClearClientState(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetClientTitle: SetClientTitle::<Identity, OFFSET>,
            SetClientGuid: SetClientGuid::<Identity, OFFSET>,
            SetLocalPath: SetLocalPath::<Identity, OFFSET>,
            SetFileName: SetFileName::<Identity, OFFSET>,
            SetSource: SetSource::<Identity, OFFSET>,
            SetReferrer: SetReferrer::<Identity, OFFSET>,
            CheckPolicy: CheckPolicy::<Identity, OFFSET>,
            Prompt: Prompt::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            SaveWithUI: SaveWithUI::<Identity, OFFSET>,
            ClearClientState: ClearClientState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAttachmentExecute as windows_core::Interface>::IID
    }
}
pub trait IAutoComplete_Impl: Sized {
    fn Init(&self, hwndedit: super::super::Foundation::HWND, punkacl: Option<&windows_core::IUnknown>, pwszregkeypath: &windows_core::PCWSTR, pwszquickcomplete: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Enable(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAutoComplete {}
impl IAutoComplete_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAutoComplete_Vtbl
    where
        Identity: IAutoComplete_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndedit: super::super::Foundation::HWND, punkacl: *mut core::ffi::c_void, pwszregkeypath: windows_core::PCWSTR, pwszquickcomplete: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAutoComplete_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAutoComplete_Impl::Init(this, core::mem::transmute_copy(&hwndedit), windows_core::from_raw_borrowed(&punkacl), core::mem::transmute(&pwszregkeypath), core::mem::transmute(&pwszquickcomplete)).into()
        }
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAutoComplete_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAutoComplete_Impl::Enable(this, core::mem::transmute_copy(&fenable)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET>, Enable: Enable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAutoComplete as windows_core::Interface>::IID
    }
}
pub trait IAutoComplete2_Impl: Sized + IAutoComplete_Impl {
    fn SetOptions(&self, dwflag: u32) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IAutoComplete2 {}
impl IAutoComplete2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAutoComplete2_Vtbl
    where
        Identity: IAutoComplete2_Impl,
    {
        unsafe extern "system" fn SetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflag: u32) -> windows_core::HRESULT
        where
            Identity: IAutoComplete2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAutoComplete2_Impl::SetOptions(this, core::mem::transmute_copy(&dwflag)).into()
        }
        unsafe extern "system" fn GetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflag: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAutoComplete2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAutoComplete2_Impl::GetOptions(this) {
                Ok(ok__) => {
                    pdwflag.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IAutoComplete_Vtbl::new::<Identity, OFFSET>(), SetOptions: SetOptions::<Identity, OFFSET>, GetOptions: GetOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAutoComplete2 as windows_core::Interface>::IID || iid == &<IAutoComplete as windows_core::Interface>::IID
    }
}
pub trait IAutoCompleteDropDown_Impl: Sized {
    fn GetDropDownStatus(&self, pdwflags: *mut u32, ppwszstring: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn ResetEnumerator(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAutoCompleteDropDown {}
impl IAutoCompleteDropDown_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAutoCompleteDropDown_Vtbl
    where
        Identity: IAutoCompleteDropDown_Impl,
    {
        unsafe extern "system" fn GetDropDownStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32, ppwszstring: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAutoCompleteDropDown_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAutoCompleteDropDown_Impl::GetDropDownStatus(this, core::mem::transmute_copy(&pdwflags), core::mem::transmute_copy(&ppwszstring)).into()
        }
        unsafe extern "system" fn ResetEnumerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAutoCompleteDropDown_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAutoCompleteDropDown_Impl::ResetEnumerator(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDropDownStatus: GetDropDownStatus::<Identity, OFFSET>,
            ResetEnumerator: ResetEnumerator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAutoCompleteDropDown as windows_core::Interface>::IID
    }
}
pub trait IBandHost_Impl: Sized {
    fn CreateBand(&self, rclsidband: *const windows_core::GUID, favailable: super::super::Foundation::BOOL, fvisible: super::super::Foundation::BOOL, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetBandAvailability(&self, rclsidband: *const windows_core::GUID, favailable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn DestroyBand(&self, rclsidband: *const windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBandHost {}
impl IBandHost_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBandHost_Vtbl
    where
        Identity: IBandHost_Impl,
    {
        unsafe extern "system" fn CreateBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidband: *const windows_core::GUID, favailable: super::super::Foundation::BOOL, fvisible: super::super::Foundation::BOOL, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBandHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandHost_Impl::CreateBand(this, core::mem::transmute_copy(&rclsidband), core::mem::transmute_copy(&favailable), core::mem::transmute_copy(&fvisible), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn SetBandAvailability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidband: *const windows_core::GUID, favailable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBandHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandHost_Impl::SetBandAvailability(this, core::mem::transmute_copy(&rclsidband), core::mem::transmute_copy(&favailable)).into()
        }
        unsafe extern "system" fn DestroyBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidband: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBandHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandHost_Impl::DestroyBand(this, core::mem::transmute_copy(&rclsidband)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateBand: CreateBand::<Identity, OFFSET>,
            SetBandAvailability: SetBandAvailability::<Identity, OFFSET>,
            DestroyBand: DestroyBand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBandHost as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IBandSite_Impl: Sized {
    fn AddBand(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn EnumBands(&self, uband: u32) -> windows_core::Result<u32>;
    fn QueryBand(&self, dwbandid: u32, ppstb: *mut Option<IDeskBand>, pdwstate: *mut u32, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::Result<()>;
    fn SetBandState(&self, dwbandid: u32, dwmask: u32, dwstate: u32) -> windows_core::Result<()>;
    fn RemoveBand(&self, dwbandid: u32) -> windows_core::Result<()>;
    fn GetBandObject(&self, dwbandid: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetBandSiteInfo(&self, pbsinfo: *const BANDSITEINFO) -> windows_core::Result<()>;
    fn GetBandSiteInfo(&self, pbsinfo: *mut BANDSITEINFO) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IBandSite {}
#[cfg(feature = "Win32_System_Ole")]
impl IBandSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBandSite_Vtbl
    where
        Identity: IBandSite_Impl,
    {
        unsafe extern "system" fn AddBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::AddBand(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn EnumBands<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uband: u32, pdwbandid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBandSite_Impl::EnumBands(this, core::mem::transmute_copy(&uband)) {
                Ok(ok__) => {
                    pdwbandid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, ppstb: *mut *mut core::ffi::c_void, pdwstate: *mut u32, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::QueryBand(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&ppstb), core::mem::transmute_copy(&pdwstate), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
        }
        unsafe extern "system" fn SetBandState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, dwmask: u32, dwstate: u32) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::SetBandState(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&dwmask), core::mem::transmute_copy(&dwstate)).into()
        }
        unsafe extern "system" fn RemoveBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::RemoveBand(this, core::mem::transmute_copy(&dwbandid)).into()
        }
        unsafe extern "system" fn GetBandObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::GetBandObject(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn SetBandSiteInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbsinfo: *const BANDSITEINFO) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::SetBandSiteInfo(this, core::mem::transmute_copy(&pbsinfo)).into()
        }
        unsafe extern "system" fn GetBandSiteInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbsinfo: *mut BANDSITEINFO) -> windows_core::HRESULT
        where
            Identity: IBandSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBandSite_Impl::GetBandSiteInfo(this, core::mem::transmute_copy(&pbsinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddBand: AddBand::<Identity, OFFSET>,
            EnumBands: EnumBands::<Identity, OFFSET>,
            QueryBand: QueryBand::<Identity, OFFSET>,
            SetBandState: SetBandState::<Identity, OFFSET>,
            RemoveBand: RemoveBand::<Identity, OFFSET>,
            GetBandObject: GetBandObject::<Identity, OFFSET>,
            SetBandSiteInfo: SetBandSiteInfo::<Identity, OFFSET>,
            GetBandSiteInfo: GetBandSiteInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBandSite as windows_core::Interface>::IID
    }
}
pub trait IBannerNotificationHandler_Impl: Sized {
    fn OnBannerEvent(&self, notification: *const BANNER_NOTIFICATION) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBannerNotificationHandler {}
impl IBannerNotificationHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBannerNotificationHandler_Vtbl
    where
        Identity: IBannerNotificationHandler_Impl,
    {
        unsafe extern "system" fn OnBannerEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, notification: *const BANNER_NOTIFICATION) -> windows_core::HRESULT
        where
            Identity: IBannerNotificationHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBannerNotificationHandler_Impl::OnBannerEvent(this, core::mem::transmute_copy(&notification)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnBannerEvent: OnBannerEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBannerNotificationHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IBanneredBar_Impl: Sized {
    fn SetIconSize(&self, iicon: u32) -> windows_core::Result<()>;
    fn GetIconSize(&self) -> windows_core::Result<u32>;
    fn SetBitmap(&self, hbitmap: super::super::Graphics::Gdi::HBITMAP) -> windows_core::Result<()>;
    fn GetBitmap(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IBanneredBar {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IBanneredBar_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBanneredBar_Vtbl
    where
        Identity: IBanneredBar_Impl,
    {
        unsafe extern "system" fn SetIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iicon: u32) -> windows_core::HRESULT
        where
            Identity: IBanneredBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBanneredBar_Impl::SetIconSize(this, core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn GetIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piicon: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBanneredBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBanneredBar_Impl::GetIconSize(this) {
                Ok(ok__) => {
                    piicon.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hbitmap: super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: IBanneredBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBanneredBar_Impl::SetBitmap(this, core::mem::transmute_copy(&hbitmap)).into()
        }
        unsafe extern "system" fn GetBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbitmap: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: IBanneredBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBanneredBar_Impl::GetBitmap(this) {
                Ok(ok__) => {
                    phbitmap.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetIconSize: SetIconSize::<Identity, OFFSET>,
            GetIconSize: GetIconSize::<Identity, OFFSET>,
            SetBitmap: SetBitmap::<Identity, OFFSET>,
            GetBitmap: GetBitmap::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBanneredBar as windows_core::Interface>::IID
    }
}
pub trait IBrowserFrameOptions_Impl: Sized {
    fn GetFrameOptions(&self, dwmask: u32) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IBrowserFrameOptions {}
impl IBrowserFrameOptions_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBrowserFrameOptions_Vtbl
    where
        Identity: IBrowserFrameOptions_Impl,
    {
        unsafe extern "system" fn GetFrameOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmask: u32, pdwoptions: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBrowserFrameOptions_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserFrameOptions_Impl::GetFrameOptions(this, core::mem::transmute_copy(&dwmask)) {
                Ok(ok__) => {
                    pdwoptions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetFrameOptions: GetFrameOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserFrameOptions as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait IBrowserService_Impl: Sized {
    fn GetParentSite(&self) -> windows_core::Result<super::super::System::Ole::IOleInPlaceSite>;
    fn SetTitle(&self, psv: Option<&IShellView>, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTitle(&self, psv: Option<&IShellView>, pszname: windows_core::PWSTR, cchname: u32) -> windows_core::Result<()>;
    fn GetOleObject(&self) -> windows_core::Result<super::super::System::Ole::IOleObject>;
    fn GetTravelLog(&self) -> windows_core::Result<ITravelLog>;
    fn ShowControlWindow(&self, id: u32, fshow: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn IsControlWindowShown(&self, id: u32) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn IEGetDisplayName(&self, pidl: *const Common::ITEMIDLIST, pwszname: windows_core::PWSTR, uflags: u32) -> windows_core::Result<()>;
    fn IEParseDisplayName(&self, uicp: u32, pwszpath: &windows_core::PCWSTR) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn DisplayParseError(&self, hres: windows_core::HRESULT, pwszpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn NavigateToPidl(&self, pidl: *const Common::ITEMIDLIST, grfhlnf: u32) -> windows_core::Result<()>;
    fn SetNavigateState(&self, bnstate: BNSTATE) -> windows_core::Result<()>;
    fn GetNavigateState(&self) -> windows_core::Result<BNSTATE>;
    fn NotifyRedirect(&self, psv: Option<&IShellView>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn UpdateWindowList(&self) -> windows_core::Result<()>;
    fn UpdateBackForwardState(&self) -> windows_core::Result<()>;
    fn SetFlags(&self, dwflags: u32, dwflagmask: u32) -> windows_core::Result<()>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn CanNavigateNow(&self) -> windows_core::Result<()>;
    fn GetPidl(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn SetReferrer(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetBrowserIndex(&self) -> u32;
    fn GetBrowserByIndex(&self, dwid: u32) -> windows_core::Result<windows_core::IUnknown>;
    fn GetHistoryObject(&self, ppole: *mut Option<super::super::System::Ole::IOleObject>, pstm: *mut Option<super::super::System::Com::IStream>, ppbc: *mut Option<super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn SetHistoryObject(&self, pole: Option<&super::super::System::Ole::IOleObject>, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CacheOLEServer(&self, pole: Option<&super::super::System::Ole::IOleObject>) -> windows_core::Result<()>;
    fn GetSetCodePage(&self, pvarin: *const windows_core::VARIANT) -> windows_core::Result<windows_core::VARIANT>;
    fn OnHttpEquiv(&self, psv: Option<&IShellView>, fdone: super::super::Foundation::BOOL, pvarargin: *const windows_core::VARIANT) -> windows_core::Result<windows_core::VARIANT>;
    fn GetPalette(&self) -> windows_core::Result<super::super::Graphics::Gdi::HPALETTE>;
    fn RegisterWindow(&self, fforceregister: super::super::Foundation::BOOL, swc: ShellWindowTypeConstants) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IBrowserService {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl IBrowserService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBrowserService_Vtbl
    where
        Identity: IBrowserService_Impl,
    {
        unsafe extern "system" fn GetParentSite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppipsite: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetParentSite(this) {
                Ok(ok__) => {
                    ppipsite.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::SetTitle(this, windows_core::from_raw_borrowed(&psv), core::mem::transmute(&pszname)).into()
        }
        unsafe extern "system" fn GetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pszname: windows_core::PWSTR, cchname: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::GetTitle(this, windows_core::from_raw_borrowed(&psv), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
        }
        unsafe extern "system" fn GetOleObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppobjv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetOleObject(this) {
                Ok(ok__) => {
                    ppobjv.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTravelLog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetTravelLog(this) {
                Ok(ok__) => {
                    pptl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowControlWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, fshow: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::ShowControlWindow(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&fshow)).into()
        }
        unsafe extern "system" fn IsControlWindowShown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, pfshown: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::IsControlWindowShown(this, core::mem::transmute_copy(&id)) {
                Ok(ok__) => {
                    pfshown.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IEGetDisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pwszname: windows_core::PWSTR, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::IEGetDisplayName(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pwszname), core::mem::transmute_copy(&uflags)).into()
        }
        unsafe extern "system" fn IEParseDisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uicp: u32, pwszpath: windows_core::PCWSTR, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::IEParseDisplayName(this, core::mem::transmute_copy(&uicp), core::mem::transmute(&pwszpath)) {
                Ok(ok__) => {
                    ppidlout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DisplayParseError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hres: windows_core::HRESULT, pwszpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::DisplayParseError(this, core::mem::transmute_copy(&hres), core::mem::transmute(&pwszpath)).into()
        }
        unsafe extern "system" fn NavigateToPidl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, grfhlnf: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::NavigateToPidl(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&grfhlnf)).into()
        }
        unsafe extern "system" fn SetNavigateState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bnstate: BNSTATE) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::SetNavigateState(this, core::mem::transmute_copy(&bnstate)).into()
        }
        unsafe extern "system" fn GetNavigateState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbnstate: *mut BNSTATE) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetNavigateState(this) {
                Ok(ok__) => {
                    pbnstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NotifyRedirect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pfdidbrowse: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::NotifyRedirect(this, windows_core::from_raw_borrowed(&psv), core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    pfdidbrowse.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UpdateWindowList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::UpdateWindowList(this).into()
        }
        unsafe extern "system" fn UpdateBackForwardState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::UpdateBackForwardState(this).into()
        }
        unsafe extern "system" fn SetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, dwflagmask: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&dwflagmask)).into()
        }
        unsafe extern "system" fn GetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanNavigateNow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::CanNavigateNow(this).into()
        }
        unsafe extern "system" fn GetPidl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetPidl(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetReferrer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::SetReferrer(this, core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn GetBrowserIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::GetBrowserIndex(this)
        }
        unsafe extern "system" fn GetBrowserByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwid: u32, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetBrowserByIndex(this, core::mem::transmute_copy(&dwid)) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetHistoryObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppole: *mut *mut core::ffi::c_void, pstm: *mut *mut core::ffi::c_void, ppbc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::GetHistoryObject(this, core::mem::transmute_copy(&ppole), core::mem::transmute_copy(&pstm), core::mem::transmute_copy(&ppbc)).into()
        }
        unsafe extern "system" fn SetHistoryObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pole: *mut core::ffi::c_void, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::SetHistoryObject(this, windows_core::from_raw_borrowed(&pole), core::mem::transmute_copy(&fislocalanchor)).into()
        }
        unsafe extern "system" fn CacheOLEServer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pole: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::CacheOLEServer(this, windows_core::from_raw_borrowed(&pole)).into()
        }
        unsafe extern "system" fn GetSetCodePage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarin: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarout: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetSetCodePage(this, core::mem::transmute_copy(&pvarin)) {
                Ok(ok__) => {
                    pvarout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnHttpEquiv<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, fdone: super::super::Foundation::BOOL, pvarargin: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarargout: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::OnHttpEquiv(this, windows_core::from_raw_borrowed(&psv), core::mem::transmute_copy(&fdone), core::mem::transmute_copy(&pvarargin)) {
                Ok(ok__) => {
                    pvarargout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPalette<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hpal: *mut super::super::Graphics::Gdi::HPALETTE) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService_Impl::GetPalette(this) {
                Ok(ok__) => {
                    hpal.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fforceregister: super::super::Foundation::BOOL, swc: ShellWindowTypeConstants) -> windows_core::HRESULT
        where
            Identity: IBrowserService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService_Impl::RegisterWindow(this, core::mem::transmute_copy(&fforceregister), core::mem::transmute_copy(&swc)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParentSite: GetParentSite::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            GetTitle: GetTitle::<Identity, OFFSET>,
            GetOleObject: GetOleObject::<Identity, OFFSET>,
            GetTravelLog: GetTravelLog::<Identity, OFFSET>,
            ShowControlWindow: ShowControlWindow::<Identity, OFFSET>,
            IsControlWindowShown: IsControlWindowShown::<Identity, OFFSET>,
            IEGetDisplayName: IEGetDisplayName::<Identity, OFFSET>,
            IEParseDisplayName: IEParseDisplayName::<Identity, OFFSET>,
            DisplayParseError: DisplayParseError::<Identity, OFFSET>,
            NavigateToPidl: NavigateToPidl::<Identity, OFFSET>,
            SetNavigateState: SetNavigateState::<Identity, OFFSET>,
            GetNavigateState: GetNavigateState::<Identity, OFFSET>,
            NotifyRedirect: NotifyRedirect::<Identity, OFFSET>,
            UpdateWindowList: UpdateWindowList::<Identity, OFFSET>,
            UpdateBackForwardState: UpdateBackForwardState::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            CanNavigateNow: CanNavigateNow::<Identity, OFFSET>,
            GetPidl: GetPidl::<Identity, OFFSET>,
            SetReferrer: SetReferrer::<Identity, OFFSET>,
            GetBrowserIndex: GetBrowserIndex::<Identity, OFFSET>,
            GetBrowserByIndex: GetBrowserByIndex::<Identity, OFFSET>,
            GetHistoryObject: GetHistoryObject::<Identity, OFFSET>,
            SetHistoryObject: SetHistoryObject::<Identity, OFFSET>,
            CacheOLEServer: CacheOLEServer::<Identity, OFFSET>,
            GetSetCodePage: GetSetCodePage::<Identity, OFFSET>,
            OnHttpEquiv: OnHttpEquiv::<Identity, OFFSET>,
            GetPalette: GetPalette::<Identity, OFFSET>,
            RegisterWindow: RegisterWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IBrowserService2_Impl: Sized + IBrowserService_Impl {
    fn WndProcBS(&self, hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT;
    fn SetAsDefFolderSettings(&self) -> windows_core::Result<()>;
    fn GetViewRect(&self) -> windows_core::Result<super::super::Foundation::RECT>;
    fn OnSize(&self, wparam: super::super::Foundation::WPARAM) -> windows_core::Result<()>;
    fn OnCreate(&self, pcs: *const super::WindowsAndMessaging::CREATESTRUCTW) -> windows_core::Result<()>;
    fn OnCommand(&self, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT;
    fn OnDestroy(&self) -> windows_core::Result<()>;
    fn OnNotify(&self, pnm: *const super::Controls::NMHDR) -> super::super::Foundation::LRESULT;
    fn OnSetFocus(&self) -> windows_core::Result<()>;
    fn OnFrameWindowActivateBS(&self, factive: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn ReleaseShellView(&self) -> windows_core::Result<()>;
    fn ActivatePendingView(&self) -> windows_core::Result<()>;
    fn CreateViewWindow(&self, psvnew: Option<&IShellView>, psvold: Option<&IShellView>, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>;
    fn CreateBrowserPropSheetExt(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetViewWindow(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn GetBaseBrowserData(&self) -> windows_core::Result<*mut BASEBROWSERDATALH>;
    fn PutBaseBrowserData(&self) -> *mut BASEBROWSERDATALH;
    fn InitializeTravelLog(&self, ptl: Option<&ITravelLog>, dw: u32) -> windows_core::Result<()>;
    fn SetTopBrowser(&self) -> windows_core::Result<()>;
    fn Offline(&self, icmd: i32) -> windows_core::Result<()>;
    fn AllowViewResize(&self, f: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetActivateState(&self, u: u32) -> windows_core::Result<()>;
    fn UpdateSecureLockIcon(&self, esecurelock: i32) -> windows_core::Result<()>;
    fn InitializeDownloadManager(&self) -> windows_core::Result<()>;
    fn InitializeTransitionSite(&self) -> windows_core::Result<()>;
    fn _Initialize(&self, hwnd: super::super::Foundation::HWND, pauto: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn _CancelPendingNavigationAsync(&self) -> windows_core::Result<()>;
    fn _CancelPendingView(&self) -> windows_core::Result<()>;
    fn _MaySaveChanges(&self) -> windows_core::Result<()>;
    fn _PauseOrResumeView(&self, fpaused: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn _DisableModeless(&self) -> windows_core::Result<()>;
    fn _NavigateToPidl2(&self, pidl: *const Common::ITEMIDLIST, grfhlnf: u32, dwflags: u32) -> windows_core::Result<()>;
    fn _TryShell2Rename(&self, psv: Option<&IShellView>, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn _SwitchActivationNow(&self) -> windows_core::Result<()>;
    fn _ExecChildren(&self, punkbar: Option<&windows_core::IUnknown>, fbroadcast: super::super::Foundation::BOOL, pguidcmdgroup: *const windows_core::GUID, ncmdid: u32, ncmdexecopt: u32, pvarargin: *const windows_core::VARIANT, pvarargout: *mut windows_core::VARIANT) -> windows_core::Result<()>;
    fn _SendChildren(&self, hwndbar: super::super::Foundation::HWND, fbroadcast: super::super::Foundation::BOOL, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn GetFolderSetData(&self, pfsd: *mut FOLDERSETDATA) -> windows_core::Result<()>;
    fn _OnFocusChange(&self, itb: u32) -> windows_core::Result<()>;
    fn v_ShowHideChildWindows(&self, fchildonly: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn _get_itbLastFocus(&self) -> u32;
    fn _put_itbLastFocus(&self, itblastfocus: u32) -> windows_core::Result<()>;
    fn _UIActivateView(&self, ustate: u32) -> windows_core::Result<()>;
    fn _GetViewBorderRect(&self, prc: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn _UpdateViewRectSize(&self) -> windows_core::Result<()>;
    fn _ResizeNextBorder(&self, itb: u32) -> windows_core::Result<()>;
    fn _ResizeView(&self) -> windows_core::Result<()>;
    fn _GetEffectiveClientArea(&self, lprectborder: *mut super::super::Foundation::RECT, hmon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
    fn v_GetViewStream(&self, pidl: *mut Common::ITEMIDLIST, grfmode: u32, pwszname: &windows_core::PCWSTR) -> Option<super::super::System::Com::IStream>;
    fn ForwardViewMsg(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT;
    fn SetAcceleratorMenu(&self, hacc: super::WindowsAndMessaging::HACCEL) -> windows_core::Result<()>;
    fn _GetToolbarCount(&self) -> i32;
    fn _GetToolbarItem(&self, itb: i32) -> *mut TOOLBARITEM;
    fn _SaveToolbars(&self, pstm: Option<&super::super::System::Com::IStream>) -> windows_core::Result<()>;
    fn _LoadToolbars(&self, pstm: Option<&super::super::System::Com::IStream>) -> windows_core::Result<()>;
    fn _CloseAndReleaseToolbars(&self, fclose: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn v_MayGetNextToolbarFocus(&self, lpmsg: *const super::WindowsAndMessaging::MSG, itbnext: u32, citb: i32, pptbi: *mut *mut TOOLBARITEM, phwnd: *mut super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn _ResizeNextBorderHelper(&self, itb: u32, busehmonitor: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn _FindTBar(&self, punksrc: Option<&windows_core::IUnknown>) -> u32;
    fn _SetFocus(&self, ptbi: *const TOOLBARITEM, hwnd: super::super::Foundation::HWND, lpmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn v_MayTranslateAccelerator(&self, pmsg: *mut super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn _GetBorderDWHelper(&self, punksrc: Option<&windows_core::IUnknown>, lprectborder: *mut super::super::Foundation::RECT, busehmonitor: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn v_CheckZoneCrossing(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IBrowserService2 {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IBrowserService2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBrowserService2_Vtbl
    where
        Identity: IBrowserService2_Impl,
    {
        unsafe extern "system" fn WndProcBS<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::WndProcBS(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam))
        }
        unsafe extern "system" fn SetAsDefFolderSettings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::SetAsDefFolderSettings(this).into()
        }
        unsafe extern "system" fn GetViewRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService2_Impl::GetViewRect(this) {
                Ok(ok__) => {
                    prc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wparam: super::super::Foundation::WPARAM) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnSize(this, core::mem::transmute_copy(&wparam)).into()
        }
        unsafe extern "system" fn OnCreate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcs: *const super::WindowsAndMessaging::CREATESTRUCTW) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnCreate(this, core::mem::transmute_copy(&pcs)).into()
        }
        unsafe extern "system" fn OnCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnCommand(this, core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam))
        }
        unsafe extern "system" fn OnDestroy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnDestroy(this).into()
        }
        unsafe extern "system" fn OnNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnm: *const super::Controls::NMHDR) -> super::super::Foundation::LRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnNotify(this, core::mem::transmute_copy(&pnm))
        }
        unsafe extern "system" fn OnSetFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnSetFocus(this).into()
        }
        unsafe extern "system" fn OnFrameWindowActivateBS<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, factive: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::OnFrameWindowActivateBS(this, core::mem::transmute_copy(&factive)).into()
        }
        unsafe extern "system" fn ReleaseShellView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::ReleaseShellView(this).into()
        }
        unsafe extern "system" fn ActivatePendingView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::ActivatePendingView(this).into()
        }
        unsafe extern "system" fn CreateViewWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psvnew: *mut core::ffi::c_void, psvold: *mut core::ffi::c_void, prcview: *const super::super::Foundation::RECT, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService2_Impl::CreateViewWindow(this, windows_core::from_raw_borrowed(&psvnew), windows_core::from_raw_borrowed(&psvold), core::mem::transmute_copy(&prcview)) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateBrowserPropSheetExt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::CreateBrowserPropSheetExt(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetViewWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwndview: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService2_Impl::GetViewWindow(this) {
                Ok(ok__) => {
                    phwndview.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBaseBrowserData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbbd: *mut *mut BASEBROWSERDATALH) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService2_Impl::GetBaseBrowserData(this) {
                Ok(ok__) => {
                    pbbd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PutBaseBrowserData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> *mut BASEBROWSERDATALH
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::PutBaseBrowserData(this)
        }
        unsafe extern "system" fn InitializeTravelLog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptl: *mut core::ffi::c_void, dw: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::InitializeTravelLog(this, windows_core::from_raw_borrowed(&ptl), core::mem::transmute_copy(&dw)).into()
        }
        unsafe extern "system" fn SetTopBrowser<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::SetTopBrowser(this).into()
        }
        unsafe extern "system" fn Offline<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, icmd: i32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::Offline(this, core::mem::transmute_copy(&icmd)).into()
        }
        unsafe extern "system" fn AllowViewResize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, f: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::AllowViewResize(this, core::mem::transmute_copy(&f)).into()
        }
        unsafe extern "system" fn SetActivateState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, u: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::SetActivateState(this, core::mem::transmute_copy(&u)).into()
        }
        unsafe extern "system" fn UpdateSecureLockIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, esecurelock: i32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::UpdateSecureLockIcon(this, core::mem::transmute_copy(&esecurelock)).into()
        }
        unsafe extern "system" fn InitializeDownloadManager<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::InitializeDownloadManager(this).into()
        }
        unsafe extern "system" fn InitializeTransitionSite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::InitializeTransitionSite(this).into()
        }
        unsafe extern "system" fn _Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pauto: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_Initialize(this, core::mem::transmute_copy(&hwnd), windows_core::from_raw_borrowed(&pauto)).into()
        }
        unsafe extern "system" fn _CancelPendingNavigationAsync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_CancelPendingNavigationAsync(this).into()
        }
        unsafe extern "system" fn _CancelPendingView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_CancelPendingView(this).into()
        }
        unsafe extern "system" fn _MaySaveChanges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_MaySaveChanges(this).into()
        }
        unsafe extern "system" fn _PauseOrResumeView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpaused: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_PauseOrResumeView(this, core::mem::transmute_copy(&fpaused)).into()
        }
        unsafe extern "system" fn _DisableModeless<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_DisableModeless(this).into()
        }
        unsafe extern "system" fn _NavigateToPidl2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, grfhlnf: u32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_NavigateToPidl2(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&grfhlnf), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn _TryShell2Rename<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pidlnew: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_TryShell2Rename(this, windows_core::from_raw_borrowed(&psv), core::mem::transmute_copy(&pidlnew)).into()
        }
        unsafe extern "system" fn _SwitchActivationNow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_SwitchActivationNow(this).into()
        }
        unsafe extern "system" fn _ExecChildren<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkbar: *mut core::ffi::c_void, fbroadcast: super::super::Foundation::BOOL, pguidcmdgroup: *const windows_core::GUID, ncmdid: u32, ncmdexecopt: u32, pvarargin: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarargout: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_ExecChildren(this, windows_core::from_raw_borrowed(&punkbar), core::mem::transmute_copy(&fbroadcast), core::mem::transmute_copy(&pguidcmdgroup), core::mem::transmute_copy(&ncmdid), core::mem::transmute_copy(&ncmdexecopt), core::mem::transmute_copy(&pvarargin), core::mem::transmute_copy(&pvarargout)).into()
        }
        unsafe extern "system" fn _SendChildren<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndbar: super::super::Foundation::HWND, fbroadcast: super::super::Foundation::BOOL, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_SendChildren(this, core::mem::transmute_copy(&hwndbar), core::mem::transmute_copy(&fbroadcast), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        unsafe extern "system" fn GetFolderSetData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfsd: *mut FOLDERSETDATA) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::GetFolderSetData(this, core::mem::transmute_copy(&pfsd)).into()
        }
        unsafe extern "system" fn _OnFocusChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_OnFocusChange(this, core::mem::transmute_copy(&itb)).into()
        }
        unsafe extern "system" fn v_ShowHideChildWindows<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchildonly: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::v_ShowHideChildWindows(this, core::mem::transmute_copy(&fchildonly)).into()
        }
        unsafe extern "system" fn _get_itbLastFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_get_itbLastFocus(this)
        }
        unsafe extern "system" fn _put_itbLastFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itblastfocus: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_put_itbLastFocus(this, core::mem::transmute_copy(&itblastfocus)).into()
        }
        unsafe extern "system" fn _UIActivateView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ustate: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_UIActivateView(this, core::mem::transmute_copy(&ustate)).into()
        }
        unsafe extern "system" fn _GetViewBorderRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_GetViewBorderRect(this, core::mem::transmute_copy(&prc)).into()
        }
        unsafe extern "system" fn _UpdateViewRectSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_UpdateViewRectSize(this).into()
        }
        unsafe extern "system" fn _ResizeNextBorder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: u32) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_ResizeNextBorder(this, core::mem::transmute_copy(&itb)).into()
        }
        unsafe extern "system" fn _ResizeView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_ResizeView(this).into()
        }
        unsafe extern "system" fn _GetEffectiveClientArea<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lprectborder: *mut super::super::Foundation::RECT, hmon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_GetEffectiveClientArea(this, core::mem::transmute_copy(&lprectborder), core::mem::transmute_copy(&hmon)).into()
        }
        unsafe extern "system" fn v_GetViewStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *mut Common::ITEMIDLIST, grfmode: u32, pwszname: windows_core::PCWSTR) -> Option<super::super::System::Com::IStream>
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::v_GetViewStream(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&grfmode), core::mem::transmute(&pwszname))
        }
        unsafe extern "system" fn ForwardViewMsg<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::ForwardViewMsg(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam))
        }
        unsafe extern "system" fn SetAcceleratorMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hacc: super::WindowsAndMessaging::HACCEL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::SetAcceleratorMenu(this, core::mem::transmute_copy(&hacc)).into()
        }
        unsafe extern "system" fn _GetToolbarCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> i32
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_GetToolbarCount(this)
        }
        unsafe extern "system" fn _GetToolbarItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: i32) -> *mut TOOLBARITEM
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_GetToolbarItem(this, core::mem::transmute_copy(&itb))
        }
        unsafe extern "system" fn _SaveToolbars<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstm: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_SaveToolbars(this, windows_core::from_raw_borrowed(&pstm)).into()
        }
        unsafe extern "system" fn _LoadToolbars<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstm: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_LoadToolbars(this, windows_core::from_raw_borrowed(&pstm)).into()
        }
        unsafe extern "system" fn _CloseAndReleaseToolbars<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fclose: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_CloseAndReleaseToolbars(this, core::mem::transmute_copy(&fclose)).into()
        }
        unsafe extern "system" fn v_MayGetNextToolbarFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpmsg: *const super::WindowsAndMessaging::MSG, itbnext: u32, citb: i32, pptbi: *mut *mut TOOLBARITEM, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::v_MayGetNextToolbarFocus(this, core::mem::transmute_copy(&lpmsg), core::mem::transmute_copy(&itbnext), core::mem::transmute_copy(&citb), core::mem::transmute_copy(&pptbi), core::mem::transmute_copy(&phwnd)).into()
        }
        unsafe extern "system" fn _ResizeNextBorderHelper<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: u32, busehmonitor: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_ResizeNextBorderHelper(this, core::mem::transmute_copy(&itb), core::mem::transmute_copy(&busehmonitor)).into()
        }
        unsafe extern "system" fn _FindTBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void) -> u32
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_FindTBar(this, windows_core::from_raw_borrowed(&punksrc))
        }
        unsafe extern "system" fn _SetFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptbi: *const TOOLBARITEM, hwnd: super::super::Foundation::HWND, lpmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_SetFocus(this, core::mem::transmute_copy(&ptbi), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&lpmsg)).into()
        }
        unsafe extern "system" fn v_MayTranslateAccelerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *mut super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::v_MayTranslateAccelerator(this, core::mem::transmute_copy(&pmsg)).into()
        }
        unsafe extern "system" fn _GetBorderDWHelper<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void, lprectborder: *mut super::super::Foundation::RECT, busehmonitor: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::_GetBorderDWHelper(this, windows_core::from_raw_borrowed(&punksrc), core::mem::transmute_copy(&lprectborder), core::mem::transmute_copy(&busehmonitor)).into()
        }
        unsafe extern "system" fn v_CheckZoneCrossing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IBrowserService2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService2_Impl::v_CheckZoneCrossing(this, core::mem::transmute_copy(&pidl)).into()
        }
        Self {
            base__: IBrowserService_Vtbl::new::<Identity, OFFSET>(),
            WndProcBS: WndProcBS::<Identity, OFFSET>,
            SetAsDefFolderSettings: SetAsDefFolderSettings::<Identity, OFFSET>,
            GetViewRect: GetViewRect::<Identity, OFFSET>,
            OnSize: OnSize::<Identity, OFFSET>,
            OnCreate: OnCreate::<Identity, OFFSET>,
            OnCommand: OnCommand::<Identity, OFFSET>,
            OnDestroy: OnDestroy::<Identity, OFFSET>,
            OnNotify: OnNotify::<Identity, OFFSET>,
            OnSetFocus: OnSetFocus::<Identity, OFFSET>,
            OnFrameWindowActivateBS: OnFrameWindowActivateBS::<Identity, OFFSET>,
            ReleaseShellView: ReleaseShellView::<Identity, OFFSET>,
            ActivatePendingView: ActivatePendingView::<Identity, OFFSET>,
            CreateViewWindow: CreateViewWindow::<Identity, OFFSET>,
            CreateBrowserPropSheetExt: CreateBrowserPropSheetExt::<Identity, OFFSET>,
            GetViewWindow: GetViewWindow::<Identity, OFFSET>,
            GetBaseBrowserData: GetBaseBrowserData::<Identity, OFFSET>,
            PutBaseBrowserData: PutBaseBrowserData::<Identity, OFFSET>,
            InitializeTravelLog: InitializeTravelLog::<Identity, OFFSET>,
            SetTopBrowser: SetTopBrowser::<Identity, OFFSET>,
            Offline: Offline::<Identity, OFFSET>,
            AllowViewResize: AllowViewResize::<Identity, OFFSET>,
            SetActivateState: SetActivateState::<Identity, OFFSET>,
            UpdateSecureLockIcon: UpdateSecureLockIcon::<Identity, OFFSET>,
            InitializeDownloadManager: InitializeDownloadManager::<Identity, OFFSET>,
            InitializeTransitionSite: InitializeTransitionSite::<Identity, OFFSET>,
            _Initialize: _Initialize::<Identity, OFFSET>,
            _CancelPendingNavigationAsync: _CancelPendingNavigationAsync::<Identity, OFFSET>,
            _CancelPendingView: _CancelPendingView::<Identity, OFFSET>,
            _MaySaveChanges: _MaySaveChanges::<Identity, OFFSET>,
            _PauseOrResumeView: _PauseOrResumeView::<Identity, OFFSET>,
            _DisableModeless: _DisableModeless::<Identity, OFFSET>,
            _NavigateToPidl2: _NavigateToPidl2::<Identity, OFFSET>,
            _TryShell2Rename: _TryShell2Rename::<Identity, OFFSET>,
            _SwitchActivationNow: _SwitchActivationNow::<Identity, OFFSET>,
            _ExecChildren: _ExecChildren::<Identity, OFFSET>,
            _SendChildren: _SendChildren::<Identity, OFFSET>,
            GetFolderSetData: GetFolderSetData::<Identity, OFFSET>,
            _OnFocusChange: _OnFocusChange::<Identity, OFFSET>,
            v_ShowHideChildWindows: v_ShowHideChildWindows::<Identity, OFFSET>,
            _get_itbLastFocus: _get_itbLastFocus::<Identity, OFFSET>,
            _put_itbLastFocus: _put_itbLastFocus::<Identity, OFFSET>,
            _UIActivateView: _UIActivateView::<Identity, OFFSET>,
            _GetViewBorderRect: _GetViewBorderRect::<Identity, OFFSET>,
            _UpdateViewRectSize: _UpdateViewRectSize::<Identity, OFFSET>,
            _ResizeNextBorder: _ResizeNextBorder::<Identity, OFFSET>,
            _ResizeView: _ResizeView::<Identity, OFFSET>,
            _GetEffectiveClientArea: _GetEffectiveClientArea::<Identity, OFFSET>,
            v_GetViewStream: v_GetViewStream::<Identity, OFFSET>,
            ForwardViewMsg: ForwardViewMsg::<Identity, OFFSET>,
            SetAcceleratorMenu: SetAcceleratorMenu::<Identity, OFFSET>,
            _GetToolbarCount: _GetToolbarCount::<Identity, OFFSET>,
            _GetToolbarItem: _GetToolbarItem::<Identity, OFFSET>,
            _SaveToolbars: _SaveToolbars::<Identity, OFFSET>,
            _LoadToolbars: _LoadToolbars::<Identity, OFFSET>,
            _CloseAndReleaseToolbars: _CloseAndReleaseToolbars::<Identity, OFFSET>,
            v_MayGetNextToolbarFocus: v_MayGetNextToolbarFocus::<Identity, OFFSET>,
            _ResizeNextBorderHelper: _ResizeNextBorderHelper::<Identity, OFFSET>,
            _FindTBar: _FindTBar::<Identity, OFFSET>,
            _SetFocus: _SetFocus::<Identity, OFFSET>,
            v_MayTranslateAccelerator: v_MayTranslateAccelerator::<Identity, OFFSET>,
            _GetBorderDWHelper: _GetBorderDWHelper::<Identity, OFFSET>,
            v_CheckZoneCrossing: v_CheckZoneCrossing::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService2 as windows_core::Interface>::IID || iid == &<IBrowserService as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IBrowserService3_Impl: Sized + IBrowserService2_Impl {
    fn _PositionViewWindow(&self, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn IEParseDisplayNameEx(&self, uicp: u32, pwszpath: &windows_core::PCWSTR, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IBrowserService3 {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IBrowserService3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBrowserService3_Vtbl
    where
        Identity: IBrowserService3_Impl,
    {
        unsafe extern "system" fn _PositionViewWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IBrowserService3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService3_Impl::_PositionViewWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prc)).into()
        }
        unsafe extern "system" fn IEParseDisplayNameEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uicp: u32, pwszpath: windows_core::PCWSTR, dwflags: u32, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IBrowserService3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBrowserService3_Impl::IEParseDisplayNameEx(this, core::mem::transmute_copy(&uicp), core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppidlout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IBrowserService2_Vtbl::new::<Identity, OFFSET>(),
            _PositionViewWindow: _PositionViewWindow::<Identity, OFFSET>,
            IEParseDisplayNameEx: IEParseDisplayNameEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService3 as windows_core::Interface>::IID || iid == &<IBrowserService as windows_core::Interface>::IID || iid == &<IBrowserService2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IBrowserService4_Impl: Sized + IBrowserService3_Impl {
    fn ActivateView(&self, fpendingview: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SaveViewState(&self) -> windows_core::Result<()>;
    fn _ResizeAllBorders(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IBrowserService4 {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IBrowserService4_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBrowserService4_Vtbl
    where
        Identity: IBrowserService4_Impl,
    {
        unsafe extern "system" fn ActivateView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpendingview: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBrowserService4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService4_Impl::ActivateView(this, core::mem::transmute_copy(&fpendingview)).into()
        }
        unsafe extern "system" fn SaveViewState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService4_Impl::SaveViewState(this).into()
        }
        unsafe extern "system" fn _ResizeAllBorders<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBrowserService4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBrowserService4_Impl::_ResizeAllBorders(this).into()
        }
        Self {
            base__: IBrowserService3_Vtbl::new::<Identity, OFFSET>(),
            ActivateView: ActivateView::<Identity, OFFSET>,
            SaveViewState: SaveViewState::<Identity, OFFSET>,
            _ResizeAllBorders: _ResizeAllBorders::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService4 as windows_core::Interface>::IID || iid == &<IBrowserService as windows_core::Interface>::IID || iid == &<IBrowserService2 as windows_core::Interface>::IID || iid == &<IBrowserService3 as windows_core::Interface>::IID
    }
}
pub trait ICDBurn_Impl: Sized {
    fn GetRecorderDriveLetter(&self, pszdrive: windows_core::PWSTR, cch: u32) -> windows_core::Result<()>;
    fn Burn(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn HasRecordableDrive(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for ICDBurn {}
impl ICDBurn_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICDBurn_Vtbl
    where
        Identity: ICDBurn_Impl,
    {
        unsafe extern "system" fn GetRecorderDriveLetter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdrive: windows_core::PWSTR, cch: u32) -> windows_core::HRESULT
        where
            Identity: ICDBurn_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICDBurn_Impl::GetRecorderDriveLetter(this, core::mem::transmute_copy(&pszdrive), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn Burn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ICDBurn_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICDBurn_Impl::Burn(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn HasRecordableDrive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfhasrecorder: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ICDBurn_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICDBurn_Impl::HasRecordableDrive(this) {
                Ok(ok__) => {
                    pfhasrecorder.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetRecorderDriveLetter: GetRecorderDriveLetter::<Identity, OFFSET>,
            Burn: Burn::<Identity, OFFSET>,
            HasRecordableDrive: HasRecordableDrive::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICDBurn as windows_core::Interface>::IID
    }
}
pub trait ICDBurnExt_Impl: Sized {
    fn GetSupportedActionTypes(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for ICDBurnExt {}
impl ICDBurnExt_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICDBurnExt_Vtbl
    where
        Identity: ICDBurnExt_Impl,
    {
        unsafe extern "system" fn GetSupportedActionTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwactions: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICDBurnExt_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICDBurnExt_Impl::GetSupportedActionTypes(this) {
                Ok(ok__) => {
                    pdwactions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSupportedActionTypes: GetSupportedActionTypes::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICDBurnExt as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ICategorizer_Impl: Sized {
    fn GetDescription(&self, pszdesc: windows_core::PWSTR, cch: u32) -> windows_core::Result<()>;
    fn GetCategory(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgcategoryids: *mut u32) -> windows_core::Result<()>;
    fn GetCategoryInfo(&self, dwcategoryid: u32, pci: *mut CATEGORY_INFO) -> windows_core::Result<()>;
    fn CompareCategory(&self, csfflags: CATSORT_FLAGS, dwcategoryid1: u32, dwcategoryid2: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ICategorizer {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ICategorizer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICategorizer_Vtbl
    where
        Identity: ICategorizer_Impl,
    {
        unsafe extern "system" fn GetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdesc: windows_core::PWSTR, cch: u32) -> windows_core::HRESULT
        where
            Identity: ICategorizer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategorizer_Impl::GetDescription(this, core::mem::transmute_copy(&pszdesc), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn GetCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgcategoryids: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICategorizer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategorizer_Impl::GetCategory(this, core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&rgcategoryids)).into()
        }
        unsafe extern "system" fn GetCategoryInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcategoryid: u32, pci: *mut CATEGORY_INFO) -> windows_core::HRESULT
        where
            Identity: ICategorizer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategorizer_Impl::GetCategoryInfo(this, core::mem::transmute_copy(&dwcategoryid), core::mem::transmute_copy(&pci)).into()
        }
        unsafe extern "system" fn CompareCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, csfflags: CATSORT_FLAGS, dwcategoryid1: u32, dwcategoryid2: u32) -> windows_core::HRESULT
        where
            Identity: ICategorizer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategorizer_Impl::CompareCategory(this, core::mem::transmute_copy(&csfflags), core::mem::transmute_copy(&dwcategoryid1), core::mem::transmute_copy(&dwcategoryid2)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetCategory: GetCategory::<Identity, OFFSET>,
            GetCategoryInfo: GetCategoryInfo::<Identity, OFFSET>,
            CompareCategory: CompareCategory::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICategorizer as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait ICategoryProvider_Impl: Sized {
    fn CanCategorizeOnSCID(&self, pscid: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn GetDefaultCategory(&self, pguid: *mut windows_core::GUID, pscid: *mut PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn GetCategoryForSCID(&self, pscid: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::GUID>;
    fn EnumCategories(&self) -> windows_core::Result<super::super::System::Com::IEnumGUID>;
    fn GetCategoryName(&self, pguid: *const windows_core::GUID, pszname: windows_core::PWSTR, cch: u32) -> windows_core::Result<()>;
    fn CreateCategory(&self, pguid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for ICategoryProvider {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl ICategoryProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICategoryProvider_Vtbl
    where
        Identity: ICategoryProvider_Impl,
    {
        unsafe extern "system" fn CanCategorizeOnSCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pscid: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: ICategoryProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategoryProvider_Impl::CanCategorizeOnSCID(this, core::mem::transmute_copy(&pscid)).into()
        }
        unsafe extern "system" fn GetDefaultCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID, pscid: *mut PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: ICategoryProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategoryProvider_Impl::GetDefaultCategory(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pscid)).into()
        }
        unsafe extern "system" fn GetCategoryForSCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pscid: *const PropertiesSystem::PROPERTYKEY, pguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ICategoryProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICategoryProvider_Impl::GetCategoryForSCID(this, core::mem::transmute_copy(&pscid)) {
                Ok(ok__) => {
                    pguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumCategories<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICategoryProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICategoryProvider_Impl::EnumCategories(this) {
                Ok(ok__) => {
                    penum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCategoryName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, pszname: windows_core::PWSTR, cch: u32) -> windows_core::HRESULT
        where
            Identity: ICategoryProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategoryProvider_Impl::GetCategoryName(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn CreateCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICategoryProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICategoryProvider_Impl::CreateCategory(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CanCategorizeOnSCID: CanCategorizeOnSCID::<Identity, OFFSET>,
            GetDefaultCategory: GetDefaultCategory::<Identity, OFFSET>,
            GetCategoryForSCID: GetCategoryForSCID::<Identity, OFFSET>,
            EnumCategories: EnumCategories::<Identity, OFFSET>,
            GetCategoryName: GetCategoryName::<Identity, OFFSET>,
            CreateCategory: CreateCategory::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICategoryProvider as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IColumnManager_Impl: Sized {
    fn SetColumnInfo(&self, propkey: *const PropertiesSystem::PROPERTYKEY, pcmci: *const CM_COLUMNINFO) -> windows_core::Result<()>;
    fn GetColumnInfo(&self, propkey: *const PropertiesSystem::PROPERTYKEY, pcmci: *mut CM_COLUMNINFO) -> windows_core::Result<()>;
    fn GetColumnCount(&self, dwflags: CM_ENUM_FLAGS) -> windows_core::Result<u32>;
    fn GetColumns(&self, dwflags: CM_ENUM_FLAGS, rgkeyorder: *mut PropertiesSystem::PROPERTYKEY, ccolumns: u32) -> windows_core::Result<()>;
    fn SetColumns(&self, rgkeyorder: *const PropertiesSystem::PROPERTYKEY, cvisible: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IColumnManager {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IColumnManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IColumnManager_Vtbl
    where
        Identity: IColumnManager_Impl,
    {
        unsafe extern "system" fn SetColumnInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, propkey: *const PropertiesSystem::PROPERTYKEY, pcmci: *const CM_COLUMNINFO) -> windows_core::HRESULT
        where
            Identity: IColumnManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IColumnManager_Impl::SetColumnInfo(this, core::mem::transmute_copy(&propkey), core::mem::transmute_copy(&pcmci)).into()
        }
        unsafe extern "system" fn GetColumnInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, propkey: *const PropertiesSystem::PROPERTYKEY, pcmci: *mut CM_COLUMNINFO) -> windows_core::HRESULT
        where
            Identity: IColumnManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IColumnManager_Impl::GetColumnInfo(this, core::mem::transmute_copy(&propkey), core::mem::transmute_copy(&pcmci)).into()
        }
        unsafe extern "system" fn GetColumnCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: CM_ENUM_FLAGS, pucount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IColumnManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IColumnManager_Impl::GetColumnCount(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    pucount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: CM_ENUM_FLAGS, rgkeyorder: *mut PropertiesSystem::PROPERTYKEY, ccolumns: u32) -> windows_core::HRESULT
        where
            Identity: IColumnManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IColumnManager_Impl::GetColumns(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&rgkeyorder), core::mem::transmute_copy(&ccolumns)).into()
        }
        unsafe extern "system" fn SetColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgkeyorder: *const PropertiesSystem::PROPERTYKEY, cvisible: u32) -> windows_core::HRESULT
        where
            Identity: IColumnManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IColumnManager_Impl::SetColumns(this, core::mem::transmute_copy(&rgkeyorder), core::mem::transmute_copy(&cvisible)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetColumnInfo: SetColumnInfo::<Identity, OFFSET>,
            GetColumnInfo: GetColumnInfo::<Identity, OFFSET>,
            GetColumnCount: GetColumnCount::<Identity, OFFSET>,
            GetColumns: GetColumns::<Identity, OFFSET>,
            SetColumns: SetColumns::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IColumnManager as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Variant", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IColumnProvider_Impl: Sized {
    fn Initialize(&self, psci: *const SHCOLUMNINIT) -> windows_core::Result<()>;
    fn GetColumnInfo(&self, dwindex: u32, psci: *mut SHCOLUMNINFO) -> windows_core::Result<()>;
    fn GetItemData(&self, pscid: *const PropertiesSystem::PROPERTYKEY, pscd: *const SHCOLUMNDATA) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Variant", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IColumnProvider {}
#[cfg(all(feature = "Win32_System_Variant", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IColumnProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IColumnProvider_Vtbl
    where
        Identity: IColumnProvider_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psci: *const SHCOLUMNINIT) -> windows_core::HRESULT
        where
            Identity: IColumnProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IColumnProvider_Impl::Initialize(this, core::mem::transmute_copy(&psci)).into()
        }
        unsafe extern "system" fn GetColumnInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, psci: *mut SHCOLUMNINFO) -> windows_core::HRESULT
        where
            Identity: IColumnProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IColumnProvider_Impl::GetColumnInfo(this, core::mem::transmute_copy(&dwindex), core::mem::transmute_copy(&psci)).into()
        }
        unsafe extern "system" fn GetItemData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pscid: *const PropertiesSystem::PROPERTYKEY, pscd: *const SHCOLUMNDATA, pvardata: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IColumnProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IColumnProvider_Impl::GetItemData(this, core::mem::transmute_copy(&pscid), core::mem::transmute_copy(&pscd)) {
                Ok(ok__) => {
                    pvardata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetColumnInfo: GetColumnInfo::<Identity, OFFSET>,
            GetItemData: GetItemData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IColumnProvider as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait ICommDlgBrowser_Impl: Sized {
    fn OnDefaultCommand(&self, ppshv: Option<&IShellView>) -> windows_core::Result<()>;
    fn OnStateChange(&self, ppshv: Option<&IShellView>, uchange: u32) -> windows_core::Result<()>;
    fn IncludeObject(&self, ppshv: Option<&IShellView>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ICommDlgBrowser {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl ICommDlgBrowser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICommDlgBrowser_Vtbl
    where
        Identity: ICommDlgBrowser_Impl,
    {
        unsafe extern "system" fn OnDefaultCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser_Impl::OnDefaultCommand(this, windows_core::from_raw_borrowed(&ppshv)).into()
        }
        unsafe extern "system" fn OnStateChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, uchange: u32) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser_Impl::OnStateChange(this, windows_core::from_raw_borrowed(&ppshv), core::mem::transmute_copy(&uchange)).into()
        }
        unsafe extern "system" fn IncludeObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser_Impl::IncludeObject(this, windows_core::from_raw_borrowed(&ppshv), core::mem::transmute_copy(&pidl)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnDefaultCommand: OnDefaultCommand::<Identity, OFFSET>,
            OnStateChange: OnStateChange::<Identity, OFFSET>,
            IncludeObject: IncludeObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICommDlgBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait ICommDlgBrowser2_Impl: Sized + ICommDlgBrowser_Impl {
    fn Notify(&self, ppshv: Option<&IShellView>, dwnotifytype: u32) -> windows_core::Result<()>;
    fn GetDefaultMenuText(&self, ppshv: Option<&IShellView>, psztext: windows_core::PWSTR, cchmax: i32) -> windows_core::Result<()>;
    fn GetViewFlags(&self) -> windows_core::Result<u32>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ICommDlgBrowser2 {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl ICommDlgBrowser2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICommDlgBrowser2_Vtbl
    where
        Identity: ICommDlgBrowser2_Impl,
    {
        unsafe extern "system" fn Notify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, dwnotifytype: u32) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser2_Impl::Notify(this, windows_core::from_raw_borrowed(&ppshv), core::mem::transmute_copy(&dwnotifytype)).into()
        }
        unsafe extern "system" fn GetDefaultMenuText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, psztext: windows_core::PWSTR, cchmax: i32) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser2_Impl::GetDefaultMenuText(this, windows_core::from_raw_borrowed(&ppshv), core::mem::transmute_copy(&psztext), core::mem::transmute_copy(&cchmax)).into()
        }
        unsafe extern "system" fn GetViewFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICommDlgBrowser2_Impl::GetViewFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: ICommDlgBrowser_Vtbl::new::<Identity, OFFSET>(),
            Notify: Notify::<Identity, OFFSET>,
            GetDefaultMenuText: GetDefaultMenuText::<Identity, OFFSET>,
            GetViewFlags: GetViewFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICommDlgBrowser2 as windows_core::Interface>::IID || iid == &<ICommDlgBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait ICommDlgBrowser3_Impl: Sized + ICommDlgBrowser2_Impl {
    fn OnColumnClicked(&self, ppshv: Option<&IShellView>, icolumn: i32) -> windows_core::Result<()>;
    fn GetCurrentFilter(&self, pszfilespec: windows_core::PWSTR, cchfilespec: i32) -> windows_core::Result<()>;
    fn OnPreViewCreated(&self, ppshv: Option<&IShellView>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ICommDlgBrowser3 {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl ICommDlgBrowser3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICommDlgBrowser3_Vtbl
    where
        Identity: ICommDlgBrowser3_Impl,
    {
        unsafe extern "system" fn OnColumnClicked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, icolumn: i32) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser3_Impl::OnColumnClicked(this, windows_core::from_raw_borrowed(&ppshv), core::mem::transmute_copy(&icolumn)).into()
        }
        unsafe extern "system" fn GetCurrentFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilespec: windows_core::PWSTR, cchfilespec: i32) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser3_Impl::GetCurrentFilter(this, core::mem::transmute_copy(&pszfilespec), core::mem::transmute_copy(&cchfilespec)).into()
        }
        unsafe extern "system" fn OnPreViewCreated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICommDlgBrowser3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICommDlgBrowser3_Impl::OnPreViewCreated(this, windows_core::from_raw_borrowed(&ppshv)).into()
        }
        Self {
            base__: ICommDlgBrowser2_Vtbl::new::<Identity, OFFSET>(),
            OnColumnClicked: OnColumnClicked::<Identity, OFFSET>,
            GetCurrentFilter: GetCurrentFilter::<Identity, OFFSET>,
            OnPreViewCreated: OnPreViewCreated::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICommDlgBrowser3 as windows_core::Interface>::IID || iid == &<ICommDlgBrowser as windows_core::Interface>::IID || iid == &<ICommDlgBrowser2 as windows_core::Interface>::IID
    }
}
pub trait IComputerInfoChangeNotify_Impl: Sized {
    fn ComputerInfoChanged(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IComputerInfoChangeNotify {}
impl IComputerInfoChangeNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IComputerInfoChangeNotify_Vtbl
    where
        Identity: IComputerInfoChangeNotify_Impl,
    {
        unsafe extern "system" fn ComputerInfoChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComputerInfoChangeNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComputerInfoChangeNotify_Impl::ComputerInfoChanged(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ComputerInfoChanged: ComputerInfoChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComputerInfoChangeNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IConnectableCredentialProviderCredential_Impl: Sized + ICredentialProviderCredential_Impl {
    fn Connect(&self, pqcws: Option<&IQueryContinueWithStatus>) -> windows_core::Result<()>;
    fn Disconnect(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IConnectableCredentialProviderCredential {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IConnectableCredentialProviderCredential_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IConnectableCredentialProviderCredential_Vtbl
    where
        Identity: IConnectableCredentialProviderCredential_Impl,
    {
        unsafe extern "system" fn Connect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqcws: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IConnectableCredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConnectableCredentialProviderCredential_Impl::Connect(this, windows_core::from_raw_borrowed(&pqcws)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IConnectableCredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConnectableCredentialProviderCredential_Impl::Disconnect(this).into()
        }
        Self {
            base__: ICredentialProviderCredential_Vtbl::new::<Identity, OFFSET>(),
            Connect: Connect::<Identity, OFFSET>,
            Disconnect: Disconnect::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IConnectableCredentialProviderCredential as windows_core::Interface>::IID || iid == &<ICredentialProviderCredential as windows_core::Interface>::IID
    }
}
pub trait IContactManagerInterop_Impl: Sized {
    fn ShowContactCardForWindow(&self, appwindow: super::super::Foundation::HWND, contact: Option<&windows_core::IUnknown>, selection: *const super::super::Foundation::RECT, preferredplacement: FLYOUT_PLACEMENT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IContactManagerInterop {}
impl IContactManagerInterop_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IContactManagerInterop_Vtbl
    where
        Identity: IContactManagerInterop_Impl,
    {
        unsafe extern "system" fn ShowContactCardForWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appwindow: super::super::Foundation::HWND, contact: *mut core::ffi::c_void, selection: *const super::super::Foundation::RECT, preferredplacement: FLYOUT_PLACEMENT) -> windows_core::HRESULT
        where
            Identity: IContactManagerInterop_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContactManagerInterop_Impl::ShowContactCardForWindow(this, core::mem::transmute_copy(&appwindow), windows_core::from_raw_borrowed(&contact), core::mem::transmute_copy(&selection), core::mem::transmute_copy(&preferredplacement)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ShowContactCardForWindow: ShowContactCardForWindow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContactManagerInterop as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IContextMenu_Impl: Sized {
    fn QueryContextMenu(&self, hmenu: super::WindowsAndMessaging::HMENU, indexmenu: u32, idcmdfirst: u32, idcmdlast: u32, uflags: u32) -> windows_core::Result<()>;
    fn InvokeCommand(&self, pici: *const CMINVOKECOMMANDINFO) -> windows_core::Result<()>;
    fn GetCommandString(&self, idcmd: usize, utype: u32, preserved: *const u32, pszname: windows_core::PSTR, cchmax: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IContextMenu {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IContextMenu_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IContextMenu_Vtbl
    where
        Identity: IContextMenu_Impl,
    {
        unsafe extern "system" fn QueryContextMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenu: super::WindowsAndMessaging::HMENU, indexmenu: u32, idcmdfirst: u32, idcmdlast: u32, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IContextMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenu_Impl::QueryContextMenu(this, core::mem::transmute_copy(&hmenu), core::mem::transmute_copy(&indexmenu), core::mem::transmute_copy(&idcmdfirst), core::mem::transmute_copy(&idcmdlast), core::mem::transmute_copy(&uflags)).into()
        }
        unsafe extern "system" fn InvokeCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pici: *const CMINVOKECOMMANDINFO) -> windows_core::HRESULT
        where
            Identity: IContextMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenu_Impl::InvokeCommand(this, core::mem::transmute_copy(&pici)).into()
        }
        unsafe extern "system" fn GetCommandString<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idcmd: usize, utype: u32, preserved: *const u32, pszname: windows_core::PSTR, cchmax: u32) -> windows_core::HRESULT
        where
            Identity: IContextMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenu_Impl::GetCommandString(this, core::mem::transmute_copy(&idcmd), core::mem::transmute_copy(&utype), core::mem::transmute_copy(&preserved), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchmax)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryContextMenu: QueryContextMenu::<Identity, OFFSET>,
            InvokeCommand: InvokeCommand::<Identity, OFFSET>,
            GetCommandString: GetCommandString::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenu as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IContextMenu2_Impl: Sized + IContextMenu_Impl {
    fn HandleMenuMsg(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IContextMenu2 {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IContextMenu2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IContextMenu2_Vtbl
    where
        Identity: IContextMenu2_Impl,
    {
        unsafe extern "system" fn HandleMenuMsg<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IContextMenu2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenu2_Impl::HandleMenuMsg(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        Self { base__: IContextMenu_Vtbl::new::<Identity, OFFSET>(), HandleMenuMsg: HandleMenuMsg::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenu2 as windows_core::Interface>::IID || iid == &<IContextMenu as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IContextMenu3_Impl: Sized + IContextMenu2_Impl {
    fn HandleMenuMsg2(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, plresult: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IContextMenu3 {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IContextMenu3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IContextMenu3_Vtbl
    where
        Identity: IContextMenu3_Impl,
    {
        unsafe extern "system" fn HandleMenuMsg2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, plresult: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT
        where
            Identity: IContextMenu3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenu3_Impl::HandleMenuMsg2(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&plresult)).into()
        }
        Self { base__: IContextMenu2_Vtbl::new::<Identity, OFFSET>(), HandleMenuMsg2: HandleMenuMsg2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenu3 as windows_core::Interface>::IID || iid == &<IContextMenu as windows_core::Interface>::IID || iid == &<IContextMenu2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IContextMenuCB_Impl: Sized {
    fn CallBack(&self, psf: Option<&IShellFolder>, hwndowner: super::super::Foundation::HWND, pdtobj: Option<&super::super::System::Com::IDataObject>, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IContextMenuCB {}
#[cfg(feature = "Win32_System_Com")]
impl IContextMenuCB_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IContextMenuCB_Vtbl
    where
        Identity: IContextMenuCB_Impl,
    {
        unsafe extern "system" fn CallBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, pdtobj: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IContextMenuCB_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenuCB_Impl::CallBack(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&hwndowner), windows_core::from_raw_borrowed(&pdtobj), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CallBack: CallBack::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenuCB as windows_core::Interface>::IID
    }
}
pub trait IContextMenuSite_Impl: Sized {
    fn DoContextMenuPopup(&self, punkcontextmenu: Option<&windows_core::IUnknown>, fflags: u32, pt: &super::super::Foundation::POINT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IContextMenuSite {}
impl IContextMenuSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IContextMenuSite_Vtbl
    where
        Identity: IContextMenuSite_Impl,
    {
        unsafe extern "system" fn DoContextMenuPopup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkcontextmenu: *mut core::ffi::c_void, fflags: u32, pt: super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IContextMenuSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IContextMenuSite_Impl::DoContextMenuPopup(this, windows_core::from_raw_borrowed(&punkcontextmenu), core::mem::transmute_copy(&fflags), core::mem::transmute(&pt)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), DoContextMenuPopup: DoContextMenuPopup::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenuSite as windows_core::Interface>::IID
    }
}
pub trait ICopyHookA_Impl: Sized {
    fn CopyCallback(&self, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: &windows_core::PCSTR, dwsrcattribs: u32, pszdestfile: &windows_core::PCSTR, dwdestattribs: u32) -> u32;
}
impl windows_core::RuntimeName for ICopyHookA {}
impl ICopyHookA_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICopyHookA_Vtbl
    where
        Identity: ICopyHookA_Impl,
    {
        unsafe extern "system" fn CopyCallback<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: windows_core::PCSTR, dwsrcattribs: u32, pszdestfile: windows_core::PCSTR, dwdestattribs: u32) -> u32
        where
            Identity: ICopyHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICopyHookA_Impl::CopyCallback(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&wfunc), core::mem::transmute_copy(&wflags), core::mem::transmute(&pszsrcfile), core::mem::transmute_copy(&dwsrcattribs), core::mem::transmute(&pszdestfile), core::mem::transmute_copy(&dwdestattribs))
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CopyCallback: CopyCallback::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICopyHookA as windows_core::Interface>::IID
    }
}
pub trait ICopyHookW_Impl: Sized {
    fn CopyCallback(&self, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: &windows_core::PCWSTR, dwsrcattribs: u32, pszdestfile: &windows_core::PCWSTR, dwdestattribs: u32) -> u32;
}
impl windows_core::RuntimeName for ICopyHookW {}
impl ICopyHookW_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICopyHookW_Vtbl
    where
        Identity: ICopyHookW_Impl,
    {
        unsafe extern "system" fn CopyCallback<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: windows_core::PCWSTR, dwsrcattribs: u32, pszdestfile: windows_core::PCWSTR, dwdestattribs: u32) -> u32
        where
            Identity: ICopyHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICopyHookW_Impl::CopyCallback(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&wfunc), core::mem::transmute_copy(&wflags), core::mem::transmute(&pszsrcfile), core::mem::transmute_copy(&dwsrcattribs), core::mem::transmute(&pszdestfile), core::mem::transmute_copy(&dwdestattribs))
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CopyCallback: CopyCallback::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICopyHookW as windows_core::Interface>::IID
    }
}
pub trait ICreateProcessInputs_Impl: Sized {
    fn GetCreateFlags(&self) -> windows_core::Result<u32>;
    fn SetCreateFlags(&self, dwcreationflags: u32) -> windows_core::Result<()>;
    fn AddCreateFlags(&self, dwcreationflags: u32) -> windows_core::Result<()>;
    fn SetHotKey(&self, whotkey: u16) -> windows_core::Result<()>;
    fn AddStartupFlags(&self, dwstartupinfoflags: u32) -> windows_core::Result<()>;
    fn SetTitle(&self, psztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEnvironmentVariable(&self, pszname: &windows_core::PCWSTR, pszvalue: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICreateProcessInputs {}
impl ICreateProcessInputs_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICreateProcessInputs_Vtbl
    where
        Identity: ICreateProcessInputs_Impl,
    {
        unsafe extern "system" fn GetCreateFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcreationflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICreateProcessInputs_Impl::GetCreateFlags(this) {
                Ok(ok__) => {
                    pdwcreationflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCreateFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcreationflags: u32) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateProcessInputs_Impl::SetCreateFlags(this, core::mem::transmute_copy(&dwcreationflags)).into()
        }
        unsafe extern "system" fn AddCreateFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcreationflags: u32) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateProcessInputs_Impl::AddCreateFlags(this, core::mem::transmute_copy(&dwcreationflags)).into()
        }
        unsafe extern "system" fn SetHotKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, whotkey: u16) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateProcessInputs_Impl::SetHotKey(this, core::mem::transmute_copy(&whotkey)).into()
        }
        unsafe extern "system" fn AddStartupFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstartupinfoflags: u32) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateProcessInputs_Impl::AddStartupFlags(this, core::mem::transmute_copy(&dwstartupinfoflags)).into()
        }
        unsafe extern "system" fn SetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateProcessInputs_Impl::SetTitle(this, core::mem::transmute(&psztitle)).into()
        }
        unsafe extern "system" fn SetEnvironmentVariable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pszvalue: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICreateProcessInputs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateProcessInputs_Impl::SetEnvironmentVariable(this, core::mem::transmute(&pszname), core::mem::transmute(&pszvalue)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCreateFlags: GetCreateFlags::<Identity, OFFSET>,
            SetCreateFlags: SetCreateFlags::<Identity, OFFSET>,
            AddCreateFlags: AddCreateFlags::<Identity, OFFSET>,
            SetHotKey: SetHotKey::<Identity, OFFSET>,
            AddStartupFlags: AddStartupFlags::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            SetEnvironmentVariable: SetEnvironmentVariable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICreateProcessInputs as windows_core::Interface>::IID
    }
}
pub trait ICreatingProcess_Impl: Sized {
    fn OnCreating(&self, pcpi: Option<&ICreateProcessInputs>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICreatingProcess {}
impl ICreatingProcess_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICreatingProcess_Vtbl
    where
        Identity: ICreatingProcess_Impl,
    {
        unsafe extern "system" fn OnCreating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICreatingProcess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreatingProcess_Impl::OnCreating(this, windows_core::from_raw_borrowed(&pcpi)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnCreating: OnCreating::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICreatingProcess as windows_core::Interface>::IID
    }
}
pub trait ICredentialProvider_Impl: Sized {
    fn SetUsageScenario(&self, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32) -> windows_core::Result<()>;
    fn SetSerialization(&self, pcpcs: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::Result<()>;
    fn Advise(&self, pcpe: Option<&ICredentialProviderEvents>, upadvisecontext: usize) -> windows_core::Result<()>;
    fn UnAdvise(&self) -> windows_core::Result<()>;
    fn GetFieldDescriptorCount(&self) -> windows_core::Result<u32>;
    fn GetFieldDescriptorAt(&self, dwindex: u32) -> windows_core::Result<*mut CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR>;
    fn GetCredentialCount(&self, pdwcount: *mut u32, pdwdefault: *mut u32, pbautologonwithdefault: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetCredentialAt(&self, dwindex: u32) -> windows_core::Result<ICredentialProviderCredential>;
}
impl windows_core::RuntimeName for ICredentialProvider {}
impl ICredentialProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProvider_Vtbl
    where
        Identity: ICredentialProvider_Impl,
    {
        unsafe extern "system" fn SetUsageScenario<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProvider_Impl::SetUsageScenario(this, core::mem::transmute_copy(&cpus), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SetSerialization<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpcs: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProvider_Impl::SetSerialization(this, core::mem::transmute_copy(&pcpcs)).into()
        }
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpe: *mut core::ffi::c_void, upadvisecontext: usize) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProvider_Impl::Advise(this, windows_core::from_raw_borrowed(&pcpe), core::mem::transmute_copy(&upadvisecontext)).into()
        }
        unsafe extern "system" fn UnAdvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProvider_Impl::UnAdvise(this).into()
        }
        unsafe extern "system" fn GetFieldDescriptorCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProvider_Impl::GetFieldDescriptorCount(this) {
                Ok(ok__) => {
                    pdwcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFieldDescriptorAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppcpfd: *mut *mut CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProvider_Impl::GetFieldDescriptorAt(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppcpfd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCredentialCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcount: *mut u32, pdwdefault: *mut u32, pbautologonwithdefault: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProvider_Impl::GetCredentialCount(this, core::mem::transmute_copy(&pdwcount), core::mem::transmute_copy(&pdwdefault), core::mem::transmute_copy(&pbautologonwithdefault)).into()
        }
        unsafe extern "system" fn GetCredentialAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppcpc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProvider_Impl::GetCredentialAt(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppcpc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetUsageScenario: SetUsageScenario::<Identity, OFFSET>,
            SetSerialization: SetSerialization::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            UnAdvise: UnAdvise::<Identity, OFFSET>,
            GetFieldDescriptorCount: GetFieldDescriptorCount::<Identity, OFFSET>,
            GetFieldDescriptorAt: GetFieldDescriptorAt::<Identity, OFFSET>,
            GetCredentialCount: GetCredentialCount::<Identity, OFFSET>,
            GetCredentialAt: GetCredentialAt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProvider as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredential_Impl: Sized {
    fn Advise(&self, pcpce: Option<&ICredentialProviderCredentialEvents>) -> windows_core::Result<()>;
    fn UnAdvise(&self) -> windows_core::Result<()>;
    fn SetSelected(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetDeselected(&self) -> windows_core::Result<()>;
    fn GetFieldState(&self, dwfieldid: u32, pcpfs: *mut CREDENTIAL_PROVIDER_FIELD_STATE, pcpfis: *mut CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::Result<()>;
    fn GetStringValue(&self, dwfieldid: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn GetBitmapValue(&self, dwfieldid: u32) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
    fn GetCheckboxValue(&self, dwfieldid: u32, pbchecked: *mut super::super::Foundation::BOOL, ppszlabel: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn GetSubmitButtonValue(&self, dwfieldid: u32) -> windows_core::Result<u32>;
    fn GetComboBoxValueCount(&self, dwfieldid: u32, pcitems: *mut u32, pdwselecteditem: *mut u32) -> windows_core::Result<()>;
    fn GetComboBoxValueAt(&self, dwfieldid: u32, dwitem: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn SetStringValue(&self, dwfieldid: u32, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetCheckboxValue(&self, dwfieldid: u32, bchecked: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetComboBoxSelectedValue(&self, dwfieldid: u32, dwselecteditem: u32) -> windows_core::Result<()>;
    fn CommandLinkClicked(&self, dwfieldid: u32) -> windows_core::Result<()>;
    fn GetSerialization(&self, pcpgsr: *mut CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE, pcpcs: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::Result<()>;
    fn ReportResult(&self, ntsstatus: super::super::Foundation::NTSTATUS, ntssubstatus: super::super::Foundation::NTSTATUS, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredential {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredential_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderCredential_Vtbl
    where
        Identity: ICredentialProviderCredential_Impl,
    {
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpce: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::Advise(this, windows_core::from_raw_borrowed(&pcpce)).into()
        }
        unsafe extern "system" fn UnAdvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::UnAdvise(this).into()
        }
        unsafe extern "system" fn SetSelected<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbautologon: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredential_Impl::SetSelected(this) {
                Ok(ok__) => {
                    pbautologon.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeselected<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::SetDeselected(this).into()
        }
        unsafe extern "system" fn GetFieldState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pcpfs: *mut CREDENTIAL_PROVIDER_FIELD_STATE, pcpfis: *mut CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::GetFieldState(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&pcpfs), core::mem::transmute_copy(&pcpfis)).into()
        }
        unsafe extern "system" fn GetStringValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredential_Impl::GetStringValue(this, core::mem::transmute_copy(&dwfieldid)) {
                Ok(ok__) => {
                    ppsz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBitmapValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredential_Impl::GetBitmapValue(this, core::mem::transmute_copy(&dwfieldid)) {
                Ok(ok__) => {
                    phbmp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCheckboxValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pbchecked: *mut super::super::Foundation::BOOL, ppszlabel: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::GetCheckboxValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&pbchecked), core::mem::transmute_copy(&ppszlabel)).into()
        }
        unsafe extern "system" fn GetSubmitButtonValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pdwadjacentto: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredential_Impl::GetSubmitButtonValue(this, core::mem::transmute_copy(&dwfieldid)) {
                Ok(ok__) => {
                    pdwadjacentto.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComboBoxValueCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pcitems: *mut u32, pdwselecteditem: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::GetComboBoxValueCount(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&pcitems), core::mem::transmute_copy(&pdwselecteditem)).into()
        }
        unsafe extern "system" fn GetComboBoxValueAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, dwitem: u32, ppszitem: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredential_Impl::GetComboBoxValueAt(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwitem)) {
                Ok(ok__) => {
                    ppszitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStringValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, psz: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::SetStringValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute(&psz)).into()
        }
        unsafe extern "system" fn SetCheckboxValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, bchecked: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::SetCheckboxValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&bchecked)).into()
        }
        unsafe extern "system" fn SetComboBoxSelectedValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, dwselecteditem: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::SetComboBoxSelectedValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwselecteditem)).into()
        }
        unsafe extern "system" fn CommandLinkClicked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::CommandLinkClicked(this, core::mem::transmute_copy(&dwfieldid)).into()
        }
        unsafe extern "system" fn GetSerialization<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpgsr: *mut CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE, pcpcs: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::GetSerialization(this, core::mem::transmute_copy(&pcpgsr), core::mem::transmute_copy(&pcpcs), core::mem::transmute_copy(&ppszoptionalstatustext), core::mem::transmute_copy(&pcpsioptionalstatusicon)).into()
        }
        unsafe extern "system" fn ReportResult<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ntsstatus: super::super::Foundation::NTSTATUS, ntssubstatus: super::super::Foundation::NTSTATUS, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredential_Impl::ReportResult(this, core::mem::transmute_copy(&ntsstatus), core::mem::transmute_copy(&ntssubstatus), core::mem::transmute_copy(&ppszoptionalstatustext), core::mem::transmute_copy(&pcpsioptionalstatusicon)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            UnAdvise: UnAdvise::<Identity, OFFSET>,
            SetSelected: SetSelected::<Identity, OFFSET>,
            SetDeselected: SetDeselected::<Identity, OFFSET>,
            GetFieldState: GetFieldState::<Identity, OFFSET>,
            GetStringValue: GetStringValue::<Identity, OFFSET>,
            GetBitmapValue: GetBitmapValue::<Identity, OFFSET>,
            GetCheckboxValue: GetCheckboxValue::<Identity, OFFSET>,
            GetSubmitButtonValue: GetSubmitButtonValue::<Identity, OFFSET>,
            GetComboBoxValueCount: GetComboBoxValueCount::<Identity, OFFSET>,
            GetComboBoxValueAt: GetComboBoxValueAt::<Identity, OFFSET>,
            SetStringValue: SetStringValue::<Identity, OFFSET>,
            SetCheckboxValue: SetCheckboxValue::<Identity, OFFSET>,
            SetComboBoxSelectedValue: SetComboBoxSelectedValue::<Identity, OFFSET>,
            CommandLinkClicked: CommandLinkClicked::<Identity, OFFSET>,
            GetSerialization: GetSerialization::<Identity, OFFSET>,
            ReportResult: ReportResult::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredential as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredential2_Impl: Sized + ICredentialProviderCredential_Impl {
    fn GetUserSid(&self) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredential2 {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredential2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderCredential2_Vtbl
    where
        Identity: ICredentialProviderCredential2_Impl,
    {
        unsafe extern "system" fn GetUserSid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredential2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredential2_Impl::GetUserSid(this) {
                Ok(ok__) => {
                    sid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: ICredentialProviderCredential_Vtbl::new::<Identity, OFFSET>(), GetUserSid: GetUserSid::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredential2 as windows_core::Interface>::IID || iid == &<ICredentialProviderCredential as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredentialEvents_Impl: Sized {
    fn SetFieldState(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, cpfs: CREDENTIAL_PROVIDER_FIELD_STATE) -> windows_core::Result<()>;
    fn SetFieldInteractiveState(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, cpfis: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::Result<()>;
    fn SetFieldString(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFieldCheckbox(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, bchecked: super::super::Foundation::BOOL, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFieldBitmap(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, hbmp: super::super::Graphics::Gdi::HBITMAP) -> windows_core::Result<()>;
    fn SetFieldComboBoxSelectedItem(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, dwselecteditem: u32) -> windows_core::Result<()>;
    fn DeleteFieldComboBoxItem(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, dwitem: u32) -> windows_core::Result<()>;
    fn AppendFieldComboBoxItem(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, pszitem: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFieldSubmitButton(&self, pcpc: Option<&ICredentialProviderCredential>, dwfieldid: u32, dwadjacentto: u32) -> windows_core::Result<()>;
    fn OnCreatingWindow(&self) -> windows_core::Result<super::super::Foundation::HWND>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredentialEvents {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredentialEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderCredentialEvents_Vtbl
    where
        Identity: ICredentialProviderCredentialEvents_Impl,
    {
        unsafe extern "system" fn SetFieldState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, cpfs: CREDENTIAL_PROVIDER_FIELD_STATE) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldState(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&cpfs)).into()
        }
        unsafe extern "system" fn SetFieldInteractiveState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, cpfis: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldInteractiveState(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&cpfis)).into()
        }
        unsafe extern "system" fn SetFieldString<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, psz: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldString(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute(&psz)).into()
        }
        unsafe extern "system" fn SetFieldCheckbox<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, bchecked: super::super::Foundation::BOOL, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldCheckbox(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&bchecked), core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn SetFieldBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, hbmp: super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldBitmap(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&hbmp)).into()
        }
        unsafe extern "system" fn SetFieldComboBoxSelectedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, dwselecteditem: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldComboBoxSelectedItem(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwselecteditem)).into()
        }
        unsafe extern "system" fn DeleteFieldComboBoxItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, dwitem: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::DeleteFieldComboBoxItem(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwitem)).into()
        }
        unsafe extern "system" fn AppendFieldComboBoxItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, pszitem: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::AppendFieldComboBoxItem(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute(&pszitem)).into()
        }
        unsafe extern "system" fn SetFieldSubmitButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, dwadjacentto: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents_Impl::SetFieldSubmitButton(this, windows_core::from_raw_borrowed(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwadjacentto)).into()
        }
        unsafe extern "system" fn OnCreatingWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwndowner: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredentialEvents_Impl::OnCreatingWindow(this) {
                Ok(ok__) => {
                    phwndowner.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFieldState: SetFieldState::<Identity, OFFSET>,
            SetFieldInteractiveState: SetFieldInteractiveState::<Identity, OFFSET>,
            SetFieldString: SetFieldString::<Identity, OFFSET>,
            SetFieldCheckbox: SetFieldCheckbox::<Identity, OFFSET>,
            SetFieldBitmap: SetFieldBitmap::<Identity, OFFSET>,
            SetFieldComboBoxSelectedItem: SetFieldComboBoxSelectedItem::<Identity, OFFSET>,
            DeleteFieldComboBoxItem: DeleteFieldComboBoxItem::<Identity, OFFSET>,
            AppendFieldComboBoxItem: AppendFieldComboBoxItem::<Identity, OFFSET>,
            SetFieldSubmitButton: SetFieldSubmitButton::<Identity, OFFSET>,
            OnCreatingWindow: OnCreatingWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredentialEvents as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredentialEvents2_Impl: Sized + ICredentialProviderCredentialEvents_Impl {
    fn BeginFieldUpdates(&self) -> windows_core::Result<()>;
    fn EndFieldUpdates(&self) -> windows_core::Result<()>;
    fn SetFieldOptions(&self, credential: Option<&ICredentialProviderCredential>, fieldid: u32, options: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredentialEvents2 {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredentialEvents2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderCredentialEvents2_Vtbl
    where
        Identity: ICredentialProviderCredentialEvents2_Impl,
    {
        unsafe extern "system" fn BeginFieldUpdates<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents2_Impl::BeginFieldUpdates(this).into()
        }
        unsafe extern "system" fn EndFieldUpdates<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents2_Impl::EndFieldUpdates(this).into()
        }
        unsafe extern "system" fn SetFieldOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, credential: *mut core::ffi::c_void, fieldid: u32, options: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialEvents2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderCredentialEvents2_Impl::SetFieldOptions(this, windows_core::from_raw_borrowed(&credential), core::mem::transmute_copy(&fieldid), core::mem::transmute_copy(&options)).into()
        }
        Self {
            base__: ICredentialProviderCredentialEvents_Vtbl::new::<Identity, OFFSET>(),
            BeginFieldUpdates: BeginFieldUpdates::<Identity, OFFSET>,
            EndFieldUpdates: EndFieldUpdates::<Identity, OFFSET>,
            SetFieldOptions: SetFieldOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredentialEvents2 as windows_core::Interface>::IID || iid == &<ICredentialProviderCredentialEvents as windows_core::Interface>::IID
    }
}
pub trait ICredentialProviderCredentialWithFieldOptions_Impl: Sized {
    fn GetFieldOptions(&self, fieldid: u32) -> windows_core::Result<CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS>;
}
impl windows_core::RuntimeName for ICredentialProviderCredentialWithFieldOptions {}
impl ICredentialProviderCredentialWithFieldOptions_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderCredentialWithFieldOptions_Vtbl
    where
        Identity: ICredentialProviderCredentialWithFieldOptions_Impl,
    {
        unsafe extern "system" fn GetFieldOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fieldid: u32, options: *mut CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderCredentialWithFieldOptions_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderCredentialWithFieldOptions_Impl::GetFieldOptions(this, core::mem::transmute_copy(&fieldid)) {
                Ok(ok__) => {
                    options.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetFieldOptions: GetFieldOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredentialWithFieldOptions as windows_core::Interface>::IID
    }
}
pub trait ICredentialProviderEvents_Impl: Sized {
    fn CredentialsChanged(&self, upadvisecontext: usize) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICredentialProviderEvents {}
impl ICredentialProviderEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderEvents_Vtbl
    where
        Identity: ICredentialProviderEvents_Impl,
    {
        unsafe extern "system" fn CredentialsChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, upadvisecontext: usize) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderEvents_Impl::CredentialsChanged(this, core::mem::transmute_copy(&upadvisecontext)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CredentialsChanged: CredentialsChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderEvents as windows_core::Interface>::IID
    }
}
pub trait ICredentialProviderFilter_Impl: Sized {
    fn Filter(&self, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32, rgclsidproviders: *const windows_core::GUID, rgballow: *mut super::super::Foundation::BOOL, cproviders: u32) -> windows_core::Result<()>;
    fn UpdateRemoteCredential(&self, pcpcsin: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, pcpcsout: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICredentialProviderFilter {}
impl ICredentialProviderFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderFilter_Vtbl
    where
        Identity: ICredentialProviderFilter_Impl,
    {
        unsafe extern "system" fn Filter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32, rgclsidproviders: *const windows_core::GUID, rgballow: *mut super::super::Foundation::BOOL, cproviders: u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderFilter_Impl::Filter(this, core::mem::transmute_copy(&cpus), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&rgclsidproviders), core::mem::transmute_copy(&rgballow), core::mem::transmute_copy(&cproviders)).into()
        }
        unsafe extern "system" fn UpdateRemoteCredential<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpcsin: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, pcpcsout: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderFilter_Impl::UpdateRemoteCredential(this, core::mem::transmute_copy(&pcpcsin), core::mem::transmute_copy(&pcpcsout)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Filter: Filter::<Identity, OFFSET>,
            UpdateRemoteCredential: UpdateRemoteCredential::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderFilter as windows_core::Interface>::IID
    }
}
pub trait ICredentialProviderSetUserArray_Impl: Sized {
    fn SetUserArray(&self, users: Option<&ICredentialProviderUserArray>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICredentialProviderSetUserArray {}
impl ICredentialProviderSetUserArray_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderSetUserArray_Vtbl
    where
        Identity: ICredentialProviderSetUserArray_Impl,
    {
        unsafe extern "system" fn SetUserArray<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, users: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderSetUserArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderSetUserArray_Impl::SetUserArray(this, windows_core::from_raw_borrowed(&users)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetUserArray: SetUserArray::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderSetUserArray as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait ICredentialProviderUser_Impl: Sized {
    fn GetSid(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetProviderID(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetStringValue(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::PWSTR>;
    fn GetValue(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::PROPVARIANT>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for ICredentialProviderUser {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl ICredentialProviderUser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderUser_Vtbl
    where
        Identity: ICredentialProviderUser_Impl,
    {
        unsafe extern "system" fn GetSid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUser_Impl::GetSid(this) {
                Ok(ok__) => {
                    sid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProviderID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, providerid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUser_Impl::GetProviderID(this) {
                Ok(ok__) => {
                    providerid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStringValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, stringvalue: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUser_Impl::GetStringValue(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    stringvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, value: *mut core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUser_Impl::GetValue(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSid: GetSid::<Identity, OFFSET>,
            GetProviderID: GetProviderID::<Identity, OFFSET>,
            GetStringValue: GetStringValue::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderUser as windows_core::Interface>::IID
    }
}
pub trait ICredentialProviderUserArray_Impl: Sized {
    fn SetProviderFilter(&self, guidprovidertofilterto: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetAccountOptions(&self) -> windows_core::Result<CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS>;
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetAt(&self, userindex: u32) -> windows_core::Result<ICredentialProviderUser>;
}
impl windows_core::RuntimeName for ICredentialProviderUserArray {}
impl ICredentialProviderUserArray_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICredentialProviderUserArray_Vtbl
    where
        Identity: ICredentialProviderUserArray_Impl,
    {
        unsafe extern "system" fn SetProviderFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidprovidertofilterto: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUserArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICredentialProviderUserArray_Impl::SetProviderFilter(this, core::mem::transmute_copy(&guidprovidertofilterto)).into()
        }
        unsafe extern "system" fn GetAccountOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, credentialprovideraccountoptions: *mut CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUserArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUserArray_Impl::GetAccountOptions(this) {
                Ok(ok__) => {
                    credentialprovideraccountoptions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usercount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUserArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUserArray_Impl::GetCount(this) {
                Ok(ok__) => {
                    usercount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, userindex: u32, user: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICredentialProviderUserArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICredentialProviderUserArray_Impl::GetAt(this, core::mem::transmute_copy(&userindex)) {
                Ok(ok__) => {
                    user.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetProviderFilter: SetProviderFilter::<Identity, OFFSET>,
            GetAccountOptions: GetAccountOptions::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
            GetAt: GetAt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderUserArray as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ICurrentItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ICurrentItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ICurrentItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICurrentItem_Vtbl
    where
        Identity: ICurrentItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICurrentItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
pub trait ICurrentWorkingDirectory_Impl: Sized {
    fn GetDirectory(&self, pwzpath: windows_core::PWSTR, cchsize: u32) -> windows_core::Result<()>;
    fn SetDirectory(&self, pwzpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICurrentWorkingDirectory {}
impl ICurrentWorkingDirectory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICurrentWorkingDirectory_Vtbl
    where
        Identity: ICurrentWorkingDirectory_Impl,
    {
        unsafe extern "system" fn GetDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzpath: windows_core::PWSTR, cchsize: u32) -> windows_core::HRESULT
        where
            Identity: ICurrentWorkingDirectory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICurrentWorkingDirectory_Impl::GetDirectory(this, core::mem::transmute_copy(&pwzpath), core::mem::transmute_copy(&cchsize)).into()
        }
        unsafe extern "system" fn SetDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICurrentWorkingDirectory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICurrentWorkingDirectory_Impl::SetDirectory(this, core::mem::transmute(&pwzpath)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDirectory: GetDirectory::<Identity, OFFSET>,
            SetDirectory: SetDirectory::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICurrentWorkingDirectory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ICustomDestinationList_Impl: Sized {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn BeginList(&self, pcminslots: *mut u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn AppendCategory(&self, pszcategory: &windows_core::PCWSTR, poa: Option<&Common::IObjectArray>) -> windows_core::Result<()>;
    fn AppendKnownCategory(&self, category: KNOWNDESTCATEGORY) -> windows_core::Result<()>;
    fn AddUserTasks(&self, poa: Option<&Common::IObjectArray>) -> windows_core::Result<()>;
    fn CommitList(&self) -> windows_core::Result<()>;
    fn GetRemovedDestinations(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn DeleteList(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AbortList(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ICustomDestinationList {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ICustomDestinationList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICustomDestinationList_Vtbl
    where
        Identity: ICustomDestinationList_Impl,
    {
        unsafe extern "system" fn SetAppID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
        }
        unsafe extern "system" fn BeginList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcminslots: *mut u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::BeginList(this, core::mem::transmute_copy(&pcminslots), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn AppendCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcategory: windows_core::PCWSTR, poa: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::AppendCategory(this, core::mem::transmute(&pszcategory), windows_core::from_raw_borrowed(&poa)).into()
        }
        unsafe extern "system" fn AppendKnownCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, category: KNOWNDESTCATEGORY) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::AppendKnownCategory(this, core::mem::transmute_copy(&category)).into()
        }
        unsafe extern "system" fn AddUserTasks<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, poa: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::AddUserTasks(this, windows_core::from_raw_borrowed(&poa)).into()
        }
        unsafe extern "system" fn CommitList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::CommitList(this).into()
        }
        unsafe extern "system" fn GetRemovedDestinations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::GetRemovedDestinations(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn DeleteList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::DeleteList(this, core::mem::transmute(&pszappid)).into()
        }
        unsafe extern "system" fn AbortList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICustomDestinationList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICustomDestinationList_Impl::AbortList(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAppID: SetAppID::<Identity, OFFSET>,
            BeginList: BeginList::<Identity, OFFSET>,
            AppendCategory: AppendCategory::<Identity, OFFSET>,
            AppendKnownCategory: AppendKnownCategory::<Identity, OFFSET>,
            AddUserTasks: AddUserTasks::<Identity, OFFSET>,
            CommitList: CommitList::<Identity, OFFSET>,
            GetRemovedDestinations: GetRemovedDestinations::<Identity, OFFSET>,
            DeleteList: DeleteList::<Identity, OFFSET>,
            AbortList: AbortList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICustomDestinationList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDataObjectAsyncCapability_Impl: Sized {
    fn SetAsyncMode(&self, fdoopasync: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetAsyncMode(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn StartOperation(&self, pbcreserved: Option<&super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn InOperation(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn EndOperation(&self, hresult: windows_core::HRESULT, pbcreserved: Option<&super::super::System::Com::IBindCtx>, dweffects: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDataObjectAsyncCapability {}
#[cfg(feature = "Win32_System_Com")]
impl IDataObjectAsyncCapability_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDataObjectAsyncCapability_Vtbl
    where
        Identity: IDataObjectAsyncCapability_Impl,
    {
        unsafe extern "system" fn SetAsyncMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fdoopasync: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDataObjectAsyncCapability_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDataObjectAsyncCapability_Impl::SetAsyncMode(this, core::mem::transmute_copy(&fdoopasync)).into()
        }
        unsafe extern "system" fn GetAsyncMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfisopasync: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDataObjectAsyncCapability_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDataObjectAsyncCapability_Impl::GetAsyncMode(this) {
                Ok(ok__) => {
                    pfisopasync.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StartOperation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbcreserved: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDataObjectAsyncCapability_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDataObjectAsyncCapability_Impl::StartOperation(this, windows_core::from_raw_borrowed(&pbcreserved)).into()
        }
        unsafe extern "system" fn InOperation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfinasyncop: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDataObjectAsyncCapability_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDataObjectAsyncCapability_Impl::InOperation(this) {
                Ok(ok__) => {
                    pfinasyncop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EndOperation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hresult: windows_core::HRESULT, pbcreserved: *mut core::ffi::c_void, dweffects: u32) -> windows_core::HRESULT
        where
            Identity: IDataObjectAsyncCapability_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDataObjectAsyncCapability_Impl::EndOperation(this, core::mem::transmute_copy(&hresult), windows_core::from_raw_borrowed(&pbcreserved), core::mem::transmute_copy(&dweffects)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAsyncMode: SetAsyncMode::<Identity, OFFSET>,
            GetAsyncMode: GetAsyncMode::<Identity, OFFSET>,
            StartOperation: StartOperation::<Identity, OFFSET>,
            InOperation: InOperation::<Identity, OFFSET>,
            EndOperation: EndOperation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataObjectAsyncCapability as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDataObjectProvider_Impl: Sized {
    fn GetDataObject(&self) -> windows_core::Result<super::super::System::Com::IDataObject>;
    fn SetDataObject(&self, dataobject: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDataObjectProvider {}
#[cfg(feature = "Win32_System_Com")]
impl IDataObjectProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDataObjectProvider_Vtbl
    where
        Identity: IDataObjectProvider_Impl,
    {
        unsafe extern "system" fn GetDataObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dataobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDataObjectProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDataObjectProvider_Impl::GetDataObject(this) {
                Ok(ok__) => {
                    dataobject.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDataObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dataobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDataObjectProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDataObjectProvider_Impl::SetDataObject(this, windows_core::from_raw_borrowed(&dataobject)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDataObject: GetDataObject::<Identity, OFFSET>,
            SetDataObject: SetDataObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataObjectProvider as windows_core::Interface>::IID
    }
}
pub trait IDataTransferManagerInterop_Impl: Sized {
    fn GetForWindow(&self, appwindow: super::super::Foundation::HWND, riid: *const windows_core::GUID, datatransfermanager: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn ShowShareUIForWindow(&self, appwindow: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDataTransferManagerInterop {}
impl IDataTransferManagerInterop_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDataTransferManagerInterop_Vtbl
    where
        Identity: IDataTransferManagerInterop_Impl,
    {
        unsafe extern "system" fn GetForWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appwindow: super::super::Foundation::HWND, riid: *const windows_core::GUID, datatransfermanager: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDataTransferManagerInterop_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDataTransferManagerInterop_Impl::GetForWindow(this, core::mem::transmute_copy(&appwindow), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&datatransfermanager)).into()
        }
        unsafe extern "system" fn ShowShareUIForWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appwindow: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IDataTransferManagerInterop_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDataTransferManagerInterop_Impl::ShowShareUIForWindow(this, core::mem::transmute_copy(&appwindow)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetForWindow: GetForWindow::<Identity, OFFSET>,
            ShowShareUIForWindow: ShowShareUIForWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataTransferManagerInterop as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
pub trait IDefaultExtractIconInit_Impl: Sized {
    fn SetFlags(&self, uflags: u32) -> windows_core::Result<()>;
    fn SetKey(&self, hkey: super::super::System::Registry::HKEY) -> windows_core::Result<()>;
    fn SetNormalIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetOpenIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetShortcutIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetDefaultIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Registry")]
impl windows_core::RuntimeName for IDefaultExtractIconInit {}
#[cfg(feature = "Win32_System_Registry")]
impl IDefaultExtractIconInit_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDefaultExtractIconInit_Vtbl
    where
        Identity: IDefaultExtractIconInit_Impl,
    {
        unsafe extern "system" fn SetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IDefaultExtractIconInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultExtractIconInit_Impl::SetFlags(this, core::mem::transmute_copy(&uflags)).into()
        }
        unsafe extern "system" fn SetKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hkey: super::super::System::Registry::HKEY) -> windows_core::HRESULT
        where
            Identity: IDefaultExtractIconInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultExtractIconInit_Impl::SetKey(this, core::mem::transmute_copy(&hkey)).into()
        }
        unsafe extern "system" fn SetNormalIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IDefaultExtractIconInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultExtractIconInit_Impl::SetNormalIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn SetOpenIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IDefaultExtractIconInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultExtractIconInit_Impl::SetOpenIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn SetShortcutIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IDefaultExtractIconInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultExtractIconInit_Impl::SetShortcutIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn SetDefaultIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IDefaultExtractIconInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultExtractIconInit_Impl::SetDefaultIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFlags: SetFlags::<Identity, OFFSET>,
            SetKey: SetKey::<Identity, OFFSET>,
            SetNormalIcon: SetNormalIcon::<Identity, OFFSET>,
            SetOpenIcon: SetOpenIcon::<Identity, OFFSET>,
            SetShortcutIcon: SetShortcutIcon::<Identity, OFFSET>,
            SetDefaultIcon: SetDefaultIcon::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDefaultExtractIconInit as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
pub trait IDefaultFolderMenuInitialize_Impl: Sized {
    fn Initialize(&self, hwnd: super::super::Foundation::HWND, pcmcb: Option<&IContextMenuCB>, pidlfolder: *const Common::ITEMIDLIST, psf: Option<&IShellFolder>, cidl: u32, apidl: *const *const Common::ITEMIDLIST, punkassociation: Option<&windows_core::IUnknown>, ckeys: u32, akeys: *const super::super::System::Registry::HKEY) -> windows_core::Result<()>;
    fn SetMenuRestrictions(&self, dfmrvalues: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::Result<()>;
    fn GetMenuRestrictions(&self, dfmrmask: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::Result<DEFAULT_FOLDER_MENU_RESTRICTIONS>;
    fn SetHandlerClsid(&self, rclsid: *const windows_core::GUID) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IDefaultFolderMenuInitialize {}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl IDefaultFolderMenuInitialize_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDefaultFolderMenuInitialize_Vtbl
    where
        Identity: IDefaultFolderMenuInitialize_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pcmcb: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, psf: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, punkassociation: *mut core::ffi::c_void, ckeys: u32, akeys: *const super::super::System::Registry::HKEY) -> windows_core::HRESULT
        where
            Identity: IDefaultFolderMenuInitialize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultFolderMenuInitialize_Impl::Initialize(this, core::mem::transmute_copy(&hwnd), windows_core::from_raw_borrowed(&pcmcb), core::mem::transmute_copy(&pidlfolder), windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), windows_core::from_raw_borrowed(&punkassociation), core::mem::transmute_copy(&ckeys), core::mem::transmute_copy(&akeys)).into()
        }
        unsafe extern "system" fn SetMenuRestrictions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dfmrvalues: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::HRESULT
        where
            Identity: IDefaultFolderMenuInitialize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultFolderMenuInitialize_Impl::SetMenuRestrictions(this, core::mem::transmute_copy(&dfmrvalues)).into()
        }
        unsafe extern "system" fn GetMenuRestrictions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dfmrmask: DEFAULT_FOLDER_MENU_RESTRICTIONS, pdfmrvalues: *mut DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::HRESULT
        where
            Identity: IDefaultFolderMenuInitialize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDefaultFolderMenuInitialize_Impl::GetMenuRestrictions(this, core::mem::transmute_copy(&dfmrmask)) {
                Ok(ok__) => {
                    pdfmrvalues.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHandlerClsid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IDefaultFolderMenuInitialize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDefaultFolderMenuInitialize_Impl::SetHandlerClsid(this, core::mem::transmute_copy(&rclsid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            SetMenuRestrictions: SetMenuRestrictions::<Identity, OFFSET>,
            GetMenuRestrictions: GetMenuRestrictions::<Identity, OFFSET>,
            SetHandlerClsid: SetHandlerClsid::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDefaultFolderMenuInitialize as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDelegateFolder_Impl: Sized {
    fn SetItemAlloc(&self, pmalloc: Option<&super::super::System::Com::IMalloc>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDelegateFolder {}
#[cfg(feature = "Win32_System_Com")]
impl IDelegateFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDelegateFolder_Vtbl
    where
        Identity: IDelegateFolder_Impl,
    {
        unsafe extern "system" fn SetItemAlloc<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmalloc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDelegateFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDelegateFolder_Impl::SetItemAlloc(this, windows_core::from_raw_borrowed(&pmalloc)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetItemAlloc: SetItemAlloc::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDelegateFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IDelegateItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IDelegateItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IDelegateItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDelegateItem_Vtbl
    where
        Identity: IDelegateItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDelegateItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBand_Impl: Sized + IDockingWindow_Impl {
    fn GetBandInfo(&self, dwbandid: u32, dwviewmode: u32, pdbi: *mut DESKBANDINFO) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBand {}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDeskBand_Vtbl
    where
        Identity: IDeskBand_Impl,
    {
        unsafe extern "system" fn GetBandInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, dwviewmode: u32, pdbi: *mut DESKBANDINFO) -> windows_core::HRESULT
        where
            Identity: IDeskBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBand_Impl::GetBandInfo(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&dwviewmode), core::mem::transmute_copy(&pdbi)).into()
        }
        Self { base__: IDockingWindow_Vtbl::new::<Identity, OFFSET>(), GetBandInfo: GetBandInfo::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBand as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IDockingWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBand2_Impl: Sized + IDeskBand_Impl {
    fn CanRenderComposited(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetCompositionState(&self, fcompositionenabled: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetCompositionState(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBand2 {}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBand2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDeskBand2_Vtbl
    where
        Identity: IDeskBand2_Impl,
    {
        unsafe extern "system" fn CanRenderComposited<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcanrendercomposited: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDeskBand2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeskBand2_Impl::CanRenderComposited(this) {
                Ok(ok__) => {
                    pfcanrendercomposited.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCompositionState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fcompositionenabled: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDeskBand2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBand2_Impl::SetCompositionState(this, core::mem::transmute_copy(&fcompositionenabled)).into()
        }
        unsafe extern "system" fn GetCompositionState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcompositionenabled: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDeskBand2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeskBand2_Impl::GetCompositionState(this) {
                Ok(ok__) => {
                    pfcompositionenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IDeskBand_Vtbl::new::<Identity, OFFSET>(),
            CanRenderComposited: CanRenderComposited::<Identity, OFFSET>,
            SetCompositionState: SetCompositionState::<Identity, OFFSET>,
            GetCompositionState: GetCompositionState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBand2 as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IDockingWindow as windows_core::Interface>::IID || iid == &<IDeskBand as windows_core::Interface>::IID
    }
}
pub trait IDeskBandInfo_Impl: Sized {
    fn GetDefaultBandWidth(&self, dwbandid: u32, dwviewmode: u32) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IDeskBandInfo {}
impl IDeskBandInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDeskBandInfo_Vtbl
    where
        Identity: IDeskBandInfo_Impl,
    {
        unsafe extern "system" fn GetDefaultBandWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, dwviewmode: u32, pnwidth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDeskBandInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeskBandInfo_Impl::GetDefaultBandWidth(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&dwviewmode)) {
                Ok(ok__) => {
                    pnwidth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDefaultBandWidth: GetDefaultBandWidth::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBandInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBar_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn SetClient(&self, punkclient: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetClient(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn OnPosRectChangeDB(&self, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBar {}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBar_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDeskBar_Vtbl
    where
        Identity: IDeskBar_Impl,
    {
        unsafe extern "system" fn SetClient<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkclient: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDeskBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBar_Impl::SetClient(this, windows_core::from_raw_borrowed(&punkclient)).into()
        }
        unsafe extern "system" fn GetClient<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunkclient: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDeskBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeskBar_Impl::GetClient(this) {
                Ok(ok__) => {
                    ppunkclient.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnPosRectChangeDB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDeskBar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBar_Impl::OnPosRectChangeDB(this, core::mem::transmute_copy(&prc)).into()
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            SetClient: SetClient::<Identity, OFFSET>,
            GetClient: GetClient::<Identity, OFFSET>,
            OnPosRectChangeDB: OnPosRectChangeDB::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBar as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBarClient_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn SetDeskBarSite(&self, punksite: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn SetModeDBC(&self, dwmode: u32) -> windows_core::Result<()>;
    fn UIActivateDBC(&self, dwstate: u32) -> windows_core::Result<()>;
    fn GetSize(&self, dwwhich: u32) -> windows_core::Result<super::super::Foundation::RECT>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBarClient {}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBarClient_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDeskBarClient_Vtbl
    where
        Identity: IDeskBarClient_Impl,
    {
        unsafe extern "system" fn SetDeskBarSite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksite: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDeskBarClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBarClient_Impl::SetDeskBarSite(this, windows_core::from_raw_borrowed(&punksite)).into()
        }
        unsafe extern "system" fn SetModeDBC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmode: u32) -> windows_core::HRESULT
        where
            Identity: IDeskBarClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBarClient_Impl::SetModeDBC(this, core::mem::transmute_copy(&dwmode)).into()
        }
        unsafe extern "system" fn UIActivateDBC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstate: u32) -> windows_core::HRESULT
        where
            Identity: IDeskBarClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeskBarClient_Impl::UIActivateDBC(this, core::mem::transmute_copy(&dwstate)).into()
        }
        unsafe extern "system" fn GetSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwhich: u32, prc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDeskBarClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeskBarClient_Impl::GetSize(this, core::mem::transmute_copy(&dwwhich)) {
                Ok(ok__) => {
                    prc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            SetDeskBarSite: SetDeskBarSite::<Identity, OFFSET>,
            SetModeDBC: SetModeDBC::<Identity, OFFSET>,
            UIActivateDBC: UIActivateDBC::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBarClient as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
pub trait IDesktopGadget_Impl: Sized {
    fn RunGadget(&self, gadgetpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDesktopGadget {}
impl IDesktopGadget_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDesktopGadget_Vtbl
    where
        Identity: IDesktopGadget_Impl,
    {
        unsafe extern "system" fn RunGadget<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, gadgetpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IDesktopGadget_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopGadget_Impl::RunGadget(this, core::mem::transmute(&gadgetpath)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RunGadget: RunGadget::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDesktopGadget as windows_core::Interface>::IID
    }
}
pub trait IDesktopWallpaper_Impl: Sized {
    fn SetWallpaper(&self, monitorid: &windows_core::PCWSTR, wallpaper: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetWallpaper(&self, monitorid: &windows_core::PCWSTR) -> windows_core::Result<windows_core::PWSTR>;
    fn GetMonitorDevicePathAt(&self, monitorindex: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn GetMonitorDevicePathCount(&self) -> windows_core::Result<u32>;
    fn GetMonitorRECT(&self, monitorid: &windows_core::PCWSTR) -> windows_core::Result<super::super::Foundation::RECT>;
    fn SetBackgroundColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetBackgroundColor(&self) -> windows_core::Result<super::super::Foundation::COLORREF>;
    fn SetPosition(&self, position: DESKTOP_WALLPAPER_POSITION) -> windows_core::Result<()>;
    fn GetPosition(&self) -> windows_core::Result<DESKTOP_WALLPAPER_POSITION>;
    fn SetSlideshow(&self, items: Option<&IShellItemArray>) -> windows_core::Result<()>;
    fn GetSlideshow(&self) -> windows_core::Result<IShellItemArray>;
    fn SetSlideshowOptions(&self, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: u32) -> windows_core::Result<()>;
    fn GetSlideshowOptions(&self, options: *mut DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: *mut u32) -> windows_core::Result<()>;
    fn AdvanceSlideshow(&self, monitorid: &windows_core::PCWSTR, direction: DESKTOP_SLIDESHOW_DIRECTION) -> windows_core::Result<()>;
    fn GetStatus(&self) -> windows_core::Result<DESKTOP_SLIDESHOW_STATE>;
    fn Enable(&self, enable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDesktopWallpaper {}
impl IDesktopWallpaper_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDesktopWallpaper_Vtbl
    where
        Identity: IDesktopWallpaper_Impl,
    {
        unsafe extern "system" fn SetWallpaper<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, wallpaper: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::SetWallpaper(this, core::mem::transmute(&monitorid), core::mem::transmute(&wallpaper)).into()
        }
        unsafe extern "system" fn GetWallpaper<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, wallpaper: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetWallpaper(this, core::mem::transmute(&monitorid)) {
                Ok(ok__) => {
                    wallpaper.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMonitorDevicePathAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorindex: u32, monitorid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetMonitorDevicePathAt(this, core::mem::transmute_copy(&monitorindex)) {
                Ok(ok__) => {
                    monitorid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMonitorDevicePathCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetMonitorDevicePathCount(this) {
                Ok(ok__) => {
                    count.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMonitorRECT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, displayrect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetMonitorRECT(this, core::mem::transmute(&monitorid)) {
                Ok(ok__) => {
                    displayrect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::SetBackgroundColor(this, core::mem::transmute_copy(&color)).into()
        }
        unsafe extern "system" fn GetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetBackgroundColor(this) {
                Ok(ok__) => {
                    color.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, position: DESKTOP_WALLPAPER_POSITION) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::SetPosition(this, core::mem::transmute_copy(&position)).into()
        }
        unsafe extern "system" fn GetPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, position: *mut DESKTOP_WALLPAPER_POSITION) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetPosition(this) {
                Ok(ok__) => {
                    position.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSlideshow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, items: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::SetSlideshow(this, windows_core::from_raw_borrowed(&items)).into()
        }
        unsafe extern "system" fn GetSlideshow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, items: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetSlideshow(this) {
                Ok(ok__) => {
                    items.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSlideshowOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: u32) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::SetSlideshowOptions(this, core::mem::transmute_copy(&options), core::mem::transmute_copy(&slideshowtick)).into()
        }
        unsafe extern "system" fn GetSlideshowOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::GetSlideshowOptions(this, core::mem::transmute_copy(&options), core::mem::transmute_copy(&slideshowtick)).into()
        }
        unsafe extern "system" fn AdvanceSlideshow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, direction: DESKTOP_SLIDESHOW_DIRECTION) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::AdvanceSlideshow(this, core::mem::transmute(&monitorid), core::mem::transmute_copy(&direction)).into()
        }
        unsafe extern "system" fn GetStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: *mut DESKTOP_SLIDESHOW_STATE) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDesktopWallpaper_Impl::GetStatus(this) {
                Ok(ok__) => {
                    state.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDesktopWallpaper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDesktopWallpaper_Impl::Enable(this, core::mem::transmute_copy(&enable)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetWallpaper: SetWallpaper::<Identity, OFFSET>,
            GetWallpaper: GetWallpaper::<Identity, OFFSET>,
            GetMonitorDevicePathAt: GetMonitorDevicePathAt::<Identity, OFFSET>,
            GetMonitorDevicePathCount: GetMonitorDevicePathCount::<Identity, OFFSET>,
            GetMonitorRECT: GetMonitorRECT::<Identity, OFFSET>,
            SetBackgroundColor: SetBackgroundColor::<Identity, OFFSET>,
            GetBackgroundColor: GetBackgroundColor::<Identity, OFFSET>,
            SetPosition: SetPosition::<Identity, OFFSET>,
            GetPosition: GetPosition::<Identity, OFFSET>,
            SetSlideshow: SetSlideshow::<Identity, OFFSET>,
            GetSlideshow: GetSlideshow::<Identity, OFFSET>,
            SetSlideshowOptions: SetSlideshowOptions::<Identity, OFFSET>,
            GetSlideshowOptions: GetSlideshowOptions::<Identity, OFFSET>,
            AdvanceSlideshow: AdvanceSlideshow::<Identity, OFFSET>,
            GetStatus: GetStatus::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDesktopWallpaper as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDestinationStreamFactory_Impl: Sized {
    fn GetDestinationStream(&self) -> windows_core::Result<super::super::System::Com::IStream>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDestinationStreamFactory {}
#[cfg(feature = "Win32_System_Com")]
impl IDestinationStreamFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDestinationStreamFactory_Vtbl
    where
        Identity: IDestinationStreamFactory_Impl,
    {
        unsafe extern "system" fn GetDestinationStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstm: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDestinationStreamFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDestinationStreamFactory_Impl::GetDestinationStream(this) {
                Ok(ok__) => {
                    ppstm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDestinationStream: GetDestinationStream::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDestinationStreamFactory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IDisplayItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IDisplayItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IDisplayItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDisplayItem_Vtbl
    where
        Identity: IDisplayItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDisplayItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
pub trait IDocViewSite_Impl: Sized {
    fn OnSetTitle(&self, pvtitle: *const windows_core::VARIANT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDocViewSite {}
impl IDocViewSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDocViewSite_Vtbl
    where
        Identity: IDocViewSite_Impl,
    {
        unsafe extern "system" fn OnSetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvtitle: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IDocViewSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDocViewSite_Impl::OnSetTitle(this, core::mem::transmute_copy(&pvtitle)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnSetTitle: OnSetTitle::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDocViewSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDockingWindow_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn ShowDW(&self, fshow: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CloseDW(&self, dwreserved: u32) -> windows_core::Result<()>;
    fn ResizeBorderDW(&self, prcborder: *const super::super::Foundation::RECT, punktoolbarsite: Option<&windows_core::IUnknown>, freserved: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDockingWindow {}
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindow_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDockingWindow_Vtbl
    where
        Identity: IDockingWindow_Impl,
    {
        unsafe extern "system" fn ShowDW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fshow: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDockingWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindow_Impl::ShowDW(this, core::mem::transmute_copy(&fshow)).into()
        }
        unsafe extern "system" fn CloseDW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: IDockingWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindow_Impl::CloseDW(this, core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn ResizeBorderDW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcborder: *const super::super::Foundation::RECT, punktoolbarsite: *mut core::ffi::c_void, freserved: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDockingWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindow_Impl::ResizeBorderDW(this, core::mem::transmute_copy(&prcborder), windows_core::from_raw_borrowed(&punktoolbarsite), core::mem::transmute_copy(&freserved)).into()
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            ShowDW: ShowDW::<Identity, OFFSET>,
            CloseDW: CloseDW::<Identity, OFFSET>,
            ResizeBorderDW: ResizeBorderDW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDockingWindow as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDockingWindowFrame_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn AddToolbar(&self, punksrc: Option<&windows_core::IUnknown>, pwszitem: &windows_core::PCWSTR, dwaddflags: u32) -> windows_core::Result<()>;
    fn RemoveToolbar(&self, punksrc: Option<&windows_core::IUnknown>, dwremoveflags: u32) -> windows_core::Result<()>;
    fn FindToolbar(&self, pwszitem: &windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDockingWindowFrame {}
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindowFrame_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDockingWindowFrame_Vtbl
    where
        Identity: IDockingWindowFrame_Impl,
    {
        unsafe extern "system" fn AddToolbar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void, pwszitem: windows_core::PCWSTR, dwaddflags: u32) -> windows_core::HRESULT
        where
            Identity: IDockingWindowFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindowFrame_Impl::AddToolbar(this, windows_core::from_raw_borrowed(&punksrc), core::mem::transmute(&pwszitem), core::mem::transmute_copy(&dwaddflags)).into()
        }
        unsafe extern "system" fn RemoveToolbar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void, dwremoveflags: u32) -> windows_core::HRESULT
        where
            Identity: IDockingWindowFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindowFrame_Impl::RemoveToolbar(this, windows_core::from_raw_borrowed(&punksrc), core::mem::transmute_copy(&dwremoveflags)).into()
        }
        unsafe extern "system" fn FindToolbar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszitem: windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDockingWindowFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindowFrame_Impl::FindToolbar(this, core::mem::transmute(&pwszitem), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            AddToolbar: AddToolbar::<Identity, OFFSET>,
            RemoveToolbar: RemoveToolbar::<Identity, OFFSET>,
            FindToolbar: FindToolbar::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDockingWindowFrame as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDockingWindowSite_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn GetBorderDW(&self, punkobj: Option<&windows_core::IUnknown>) -> windows_core::Result<super::super::Foundation::RECT>;
    fn RequestBorderSpaceDW(&self, punkobj: Option<&windows_core::IUnknown>, pbw: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetBorderSpaceDW(&self, punkobj: Option<&windows_core::IUnknown>, pbw: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDockingWindowSite {}
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindowSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDockingWindowSite_Vtbl
    where
        Identity: IDockingWindowSite_Impl,
    {
        unsafe extern "system" fn GetBorderDW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, prcborder: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDockingWindowSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDockingWindowSite_Impl::GetBorderDW(this, windows_core::from_raw_borrowed(&punkobj)) {
                Ok(ok__) => {
                    prcborder.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RequestBorderSpaceDW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, pbw: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDockingWindowSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindowSite_Impl::RequestBorderSpaceDW(this, windows_core::from_raw_borrowed(&punkobj), core::mem::transmute_copy(&pbw)).into()
        }
        unsafe extern "system" fn SetBorderSpaceDW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, pbw: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDockingWindowSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDockingWindowSite_Impl::SetBorderSpaceDW(this, windows_core::from_raw_borrowed(&punkobj), core::mem::transmute_copy(&pbw)).into()
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            GetBorderDW: GetBorderDW::<Identity, OFFSET>,
            RequestBorderSpaceDW: RequestBorderSpaceDW::<Identity, OFFSET>,
            SetBorderSpaceDW: SetBorderSpaceDW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDockingWindowSite as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
pub trait IDragSourceHelper_Impl: Sized {
    fn InitializeFromBitmap(&self, pshdi: *const SHDRAGIMAGE, pdataobject: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn InitializeFromWindow(&self, hwnd: super::super::Foundation::HWND, ppt: *const super::super::Foundation::POINT, pdataobject: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IDragSourceHelper {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl IDragSourceHelper_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDragSourceHelper_Vtbl
    where
        Identity: IDragSourceHelper_Impl,
    {
        unsafe extern "system" fn InitializeFromBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshdi: *const SHDRAGIMAGE, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDragSourceHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDragSourceHelper_Impl::InitializeFromBitmap(this, core::mem::transmute_copy(&pshdi), windows_core::from_raw_borrowed(&pdataobject)).into()
        }
        unsafe extern "system" fn InitializeFromWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ppt: *const super::super::Foundation::POINT, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDragSourceHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDragSourceHelper_Impl::InitializeFromWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ppt), windows_core::from_raw_borrowed(&pdataobject)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeFromBitmap: InitializeFromBitmap::<Identity, OFFSET>,
            InitializeFromWindow: InitializeFromWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDragSourceHelper as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
pub trait IDragSourceHelper2_Impl: Sized + IDragSourceHelper_Impl {
    fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IDragSourceHelper2 {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl IDragSourceHelper2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDragSourceHelper2_Vtbl
    where
        Identity: IDragSourceHelper2_Impl,
    {
        unsafe extern "system" fn SetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IDragSourceHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDragSourceHelper2_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags)).into()
        }
        Self { base__: IDragSourceHelper_Vtbl::new::<Identity, OFFSET>(), SetFlags: SetFlags::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDragSourceHelper2 as windows_core::Interface>::IID || iid == &<IDragSourceHelper as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDropTargetHelper_Impl: Sized {
    fn DragEnter(&self, hwndtarget: super::super::Foundation::HWND, pdataobject: Option<&super::super::System::Com::IDataObject>, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>;
    fn DragLeave(&self) -> windows_core::Result<()>;
    fn DragOver(&self, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>;
    fn Drop(&self, pdataobject: Option<&super::super::System::Com::IDataObject>, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>;
    fn Show(&self, fshow: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IDropTargetHelper {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDropTargetHelper_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDropTargetHelper_Vtbl
    where
        Identity: IDropTargetHelper_Impl,
    {
        unsafe extern "system" fn DragEnter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtarget: super::super::Foundation::HWND, pdataobject: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT
        where
            Identity: IDropTargetHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDropTargetHelper_Impl::DragEnter(this, core::mem::transmute_copy(&hwndtarget), windows_core::from_raw_borrowed(&pdataobject), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&dweffect)).into()
        }
        unsafe extern "system" fn DragLeave<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDropTargetHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDropTargetHelper_Impl::DragLeave(this).into()
        }
        unsafe extern "system" fn DragOver<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT
        where
            Identity: IDropTargetHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDropTargetHelper_Impl::DragOver(this, core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&dweffect)).into()
        }
        unsafe extern "system" fn Drop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataobject: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT
        where
            Identity: IDropTargetHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDropTargetHelper_Impl::Drop(this, windows_core::from_raw_borrowed(&pdataobject), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&dweffect)).into()
        }
        unsafe extern "system" fn Show<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fshow: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDropTargetHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDropTargetHelper_Impl::Show(this, core::mem::transmute_copy(&fshow)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DragEnter: DragEnter::<Identity, OFFSET>,
            DragLeave: DragLeave::<Identity, OFFSET>,
            DragOver: DragOver::<Identity, OFFSET>,
            Drop: Drop::<Identity, OFFSET>,
            Show: Show::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDropTargetHelper as windows_core::Interface>::IID
    }
}
pub trait IDynamicHWHandler_Impl: Sized {
    fn GetDynamicInfo(&self, pszdeviceid: &windows_core::PCWSTR, dwcontenttype: u32) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IDynamicHWHandler {}
impl IDynamicHWHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDynamicHWHandler_Vtbl
    where
        Identity: IDynamicHWHandler_Impl,
    {
        unsafe extern "system" fn GetDynamicInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, dwcontenttype: u32, ppszaction: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IDynamicHWHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDynamicHWHandler_Impl::GetDynamicInfo(this, core::mem::transmute(&pszdeviceid), core::mem::transmute_copy(&dwcontenttype)) {
                Ok(ok__) => {
                    ppszaction.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDynamicInfo: GetDynamicInfo::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDynamicHWHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumACString_Impl: Sized + super::super::System::Com::IEnumString_Impl {
    fn NextItem(&self, pszurl: windows_core::PWSTR, cchmax: u32, pulsortindex: *mut u32) -> windows_core::Result<()>;
    fn SetEnumOptions(&self, dwoptions: u32) -> windows_core::Result<()>;
    fn GetEnumOptions(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumACString {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumACString_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumACString_Vtbl
    where
        Identity: IEnumACString_Impl,
    {
        unsafe extern "system" fn NextItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PWSTR, cchmax: u32, pulsortindex: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumACString_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumACString_Impl::NextItem(this, core::mem::transmute_copy(&pszurl), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&pulsortindex)).into()
        }
        unsafe extern "system" fn SetEnumOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwoptions: u32) -> windows_core::HRESULT
        where
            Identity: IEnumACString_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumACString_Impl::SetEnumOptions(this, core::mem::transmute_copy(&dwoptions)).into()
        }
        unsafe extern "system" fn GetEnumOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwoptions: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumACString_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumACString_Impl::GetEnumOptions(this) {
                Ok(ok__) => {
                    pdwoptions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IEnumString_Vtbl::new::<Identity, OFFSET>(),
            NextItem: NextItem::<Identity, OFFSET>,
            SetEnumOptions: SetEnumOptions::<Identity, OFFSET>,
            GetEnumOptions: GetEnumOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumACString as windows_core::Interface>::IID || iid == &<super::super::System::Com::IEnumString as windows_core::Interface>::IID
    }
}
pub trait IEnumAssocHandlers_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<IAssocHandler>, pceltfetched: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IEnumAssocHandlers {}
impl IEnumAssocHandlers_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumAssocHandlers_Vtbl
    where
        Identity: IEnumAssocHandlers_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumAssocHandlers_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumAssocHandlers_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Next: Next::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumAssocHandlers as windows_core::Interface>::IID
    }
}
pub trait IEnumExplorerCommand_Impl: Sized {
    fn Next(&self, celt: u32, puicommand: *mut Option<IExplorerCommand>, pceltfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumExplorerCommand>;
}
impl windows_core::RuntimeName for IEnumExplorerCommand {}
impl IEnumExplorerCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumExplorerCommand_Vtbl
    where
        Identity: IEnumExplorerCommand_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, puicommand: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumExplorerCommand_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&puicommand), core::mem::transmute_copy(&pceltfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumExplorerCommand_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumExplorerCommand_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumExplorerCommand_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumExplorerCommand as windows_core::Interface>::IID
    }
}
pub trait IEnumExtraSearch_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut EXTRASEARCH, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumExtraSearch>;
}
impl windows_core::RuntimeName for IEnumExtraSearch {}
impl IEnumExtraSearch_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumExtraSearch_Vtbl
    where
        Identity: IEnumExtraSearch_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut EXTRASEARCH, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumExtraSearch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumExtraSearch_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumExtraSearch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumExtraSearch_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumExtraSearch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumExtraSearch_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumExtraSearch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumExtraSearch_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumExtraSearch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IEnumFullIDList_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumFullIDList>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IEnumFullIDList {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IEnumFullIDList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumFullIDList_Vtbl
    where
        Identity: IEnumFullIDList_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumFullIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumFullIDList_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumFullIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumFullIDList_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumFullIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumFullIDList_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumFullIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumFullIDList_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumFullIDList as windows_core::Interface>::IID
    }
}
pub trait IEnumHLITEM_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut HLITEM, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumHLITEM>;
}
impl windows_core::RuntimeName for IEnumHLITEM {}
impl IEnumHLITEM_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumHLITEM_Vtbl
    where
        Identity: IEnumHLITEM_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut HLITEM, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumHLITEM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumHLITEM_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumHLITEM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumHLITEM_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumHLITEM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumHLITEM_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumhlitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumHLITEM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumHLITEM_Impl::Clone(this) {
                Ok(ok__) => {
                    ppienumhlitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumHLITEM as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IEnumIDList_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, celt: u32) -> windows_core::HRESULT;
    fn Reset(&self) -> windows_core::HRESULT;
    fn Clone(&self, ppenum: *mut Option<IEnumIDList>) -> windows_core::HRESULT;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IEnumIDList {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IEnumIDList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumIDList_Vtbl
    where
        Identity: IEnumIDList_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumIDList_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumIDList_Impl::Skip(this, core::mem::transmute_copy(&celt))
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumIDList_Impl::Reset(this)
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumIDList_Impl::Clone(this, core::mem::transmute_copy(&ppenum))
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumIDList as windows_core::Interface>::IID
    }
}
pub trait IEnumObjects_Impl: Sized {
    fn Next(&self, celt: u32, riid: *const windows_core::GUID, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumObjects>;
}
impl windows_core::RuntimeName for IEnumObjects {}
impl IEnumObjects_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumObjects_Vtbl
    where
        Identity: IEnumObjects_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, riid: *const windows_core::GUID, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumObjects_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumObjects_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumObjects_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumObjects_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumObjects_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumObjects_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumObjects_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumObjects_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumObjects as windows_core::Interface>::IID
    }
}
pub trait IEnumPublishedApps_Impl: Sized {
    fn Next(&self) -> windows_core::Result<IPublishedApp>;
    fn Reset(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IEnumPublishedApps {}
impl IEnumPublishedApps_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumPublishedApps_Vtbl
    where
        Identity: IEnumPublishedApps_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pia: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumPublishedApps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumPublishedApps_Impl::Next(this) {
                Ok(ok__) => {
                    pia.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumPublishedApps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPublishedApps_Impl::Reset(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Next: Next::<Identity, OFFSET>, Reset: Reset::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumPublishedApps as windows_core::Interface>::IID
    }
}
pub trait IEnumReadyCallback_Impl: Sized {
    fn EnumReady(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IEnumReadyCallback {}
impl IEnumReadyCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumReadyCallback_Vtbl
    where
        Identity: IEnumReadyCallback_Impl,
    {
        unsafe extern "system" fn EnumReady<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumReadyCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumReadyCallback_Impl::EnumReady(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), EnumReady: EnumReady::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumReadyCallback as windows_core::Interface>::IID
    }
}
pub trait IEnumResources_Impl: Sized {
    fn Next(&self, celt: u32, psir: *mut SHELL_ITEM_RESOURCE, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumResources>;
}
impl windows_core::RuntimeName for IEnumResources {}
impl IEnumResources_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumResources_Vtbl
    where
        Identity: IEnumResources_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, psir: *mut SHELL_ITEM_RESOURCE, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumResources_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&psir), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumResources_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumResources_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumResources_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenumr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumResources as windows_core::Interface>::IID
    }
}
pub trait IEnumShellItems_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<IShellItem>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumShellItems>;
}
impl windows_core::RuntimeName for IEnumShellItems {}
impl IEnumShellItems_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumShellItems_Vtbl
    where
        Identity: IEnumShellItems_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumShellItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumShellItems_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumShellItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumShellItems_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumShellItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumShellItems_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumShellItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumShellItems_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumShellItems as windows_core::Interface>::IID
    }
}
pub trait IEnumSyncMgrConflict_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<ISyncMgrConflict>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumSyncMgrConflict>;
}
impl windows_core::RuntimeName for IEnumSyncMgrConflict {}
impl IEnumSyncMgrConflict_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumSyncMgrConflict_Vtbl
    where
        Identity: IEnumSyncMgrConflict_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrConflict_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrConflict_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrConflict_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumSyncMgrConflict_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumSyncMgrConflict as windows_core::Interface>::IID
    }
}
pub trait IEnumSyncMgrEvents_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<ISyncMgrEvent>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumSyncMgrEvents>;
}
impl windows_core::RuntimeName for IEnumSyncMgrEvents {}
impl IEnumSyncMgrEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumSyncMgrEvents_Vtbl
    where
        Identity: IEnumSyncMgrEvents_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrEvents_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrEvents_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrEvents_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumSyncMgrEvents_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumSyncMgrEvents as windows_core::Interface>::IID
    }
}
pub trait IEnumSyncMgrSyncItems_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<ISyncMgrSyncItem>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumSyncMgrSyncItems>;
}
impl windows_core::RuntimeName for IEnumSyncMgrSyncItems {}
impl IEnumSyncMgrSyncItems_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumSyncMgrSyncItems_Vtbl
    where
        Identity: IEnumSyncMgrSyncItems_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrSyncItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrSyncItems_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrSyncItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrSyncItems_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrSyncItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumSyncMgrSyncItems_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumSyncMgrSyncItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumSyncMgrSyncItems_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumSyncMgrSyncItems as windows_core::Interface>::IID
    }
}
pub trait IEnumTravelLogEntry_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<ITravelLogEntry>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumTravelLogEntry>;
}
impl windows_core::RuntimeName for IEnumTravelLogEntry {}
impl IEnumTravelLogEntry_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumTravelLogEntry_Vtbl
    where
        Identity: IEnumTravelLogEntry_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumTravelLogEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTravelLogEntry_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: IEnumTravelLogEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTravelLogEntry_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumTravelLogEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTravelLogEntry_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumTravelLogEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumTravelLogEntry_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumTravelLogEntry as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IEnumerableView_Impl: Sized {
    fn SetEnumReadyCallback(&self, percb: Option<&IEnumReadyCallback>) -> windows_core::Result<()>;
    fn CreateEnumIDListFromContents(&self, pidlfolder: *const Common::ITEMIDLIST, dwenumflags: u32) -> windows_core::Result<IEnumIDList>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IEnumerableView {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IEnumerableView_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumerableView_Vtbl
    where
        Identity: IEnumerableView_Impl,
    {
        unsafe extern "system" fn SetEnumReadyCallback<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, percb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumerableView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumerableView_Impl::SetEnumReadyCallback(this, windows_core::from_raw_borrowed(&percb)).into()
        }
        unsafe extern "system" fn CreateEnumIDListFromContents<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, dwenumflags: u32, ppenumidlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumerableView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumerableView_Impl::CreateEnumIDListFromContents(this, core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&dwenumflags)) {
                Ok(ok__) => {
                    ppenumidlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetEnumReadyCallback: SetEnumReadyCallback::<Identity, OFFSET>,
            CreateEnumIDListFromContents: CreateEnumIDListFromContents::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumerableView as windows_core::Interface>::IID
    }
}
pub trait IExecuteCommand_Impl: Sized {
    fn SetKeyState(&self, grfkeystate: u32) -> windows_core::Result<()>;
    fn SetParameters(&self, pszparameters: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetPosition(&self, pt: &super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn SetShowWindow(&self, nshow: i32) -> windows_core::Result<()>;
    fn SetNoShowUI(&self, fnoshowui: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetDirectory(&self, pszdirectory: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Execute(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IExecuteCommand {}
impl IExecuteCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExecuteCommand_Vtbl
    where
        Identity: IExecuteCommand_Impl,
    {
        unsafe extern "system" fn SetKeyState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfkeystate: u32) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::SetKeyState(this, core::mem::transmute_copy(&grfkeystate)).into()
        }
        unsafe extern "system" fn SetParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszparameters: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::SetParameters(this, core::mem::transmute(&pszparameters)).into()
        }
        unsafe extern "system" fn SetPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::SetPosition(this, core::mem::transmute(&pt)).into()
        }
        unsafe extern "system" fn SetShowWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nshow: i32) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::SetShowWindow(this, core::mem::transmute_copy(&nshow)).into()
        }
        unsafe extern "system" fn SetNoShowUI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnoshowui: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::SetNoShowUI(this, core::mem::transmute_copy(&fnoshowui)).into()
        }
        unsafe extern "system" fn SetDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdirectory: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::SetDirectory(this, core::mem::transmute(&pszdirectory)).into()
        }
        unsafe extern "system" fn Execute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExecuteCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExecuteCommand_Impl::Execute(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetKeyState: SetKeyState::<Identity, OFFSET>,
            SetParameters: SetParameters::<Identity, OFFSET>,
            SetPosition: SetPosition::<Identity, OFFSET>,
            SetShowWindow: SetShowWindow::<Identity, OFFSET>,
            SetNoShowUI: SetNoShowUI::<Identity, OFFSET>,
            SetDirectory: SetDirectory::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExecuteCommand as windows_core::Interface>::IID
    }
}
pub trait IExecuteCommandApplicationHostEnvironment_Impl: Sized {
    fn GetValue(&self) -> windows_core::Result<AHE_TYPE>;
}
impl windows_core::RuntimeName for IExecuteCommandApplicationHostEnvironment {}
impl IExecuteCommandApplicationHostEnvironment_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExecuteCommandApplicationHostEnvironment_Vtbl
    where
        Identity: IExecuteCommandApplicationHostEnvironment_Impl,
    {
        unsafe extern "system" fn GetValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pahe: *mut AHE_TYPE) -> windows_core::HRESULT
        where
            Identity: IExecuteCommandApplicationHostEnvironment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExecuteCommandApplicationHostEnvironment_Impl::GetValue(this) {
                Ok(ok__) => {
                    pahe.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetValue: GetValue::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExecuteCommandApplicationHostEnvironment as windows_core::Interface>::IID
    }
}
pub trait IExecuteCommandHost_Impl: Sized {
    fn GetUIMode(&self) -> windows_core::Result<EC_HOST_UI_MODE>;
}
impl windows_core::RuntimeName for IExecuteCommandHost {}
impl IExecuteCommandHost_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExecuteCommandHost_Vtbl
    where
        Identity: IExecuteCommandHost_Impl,
    {
        unsafe extern "system" fn GetUIMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puimode: *mut EC_HOST_UI_MODE) -> windows_core::HRESULT
        where
            Identity: IExecuteCommandHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExecuteCommandHost_Impl::GetUIMode(this) {
                Ok(ok__) => {
                    puimode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetUIMode: GetUIMode::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExecuteCommandHost as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IExpDispSupport_Impl: Sized {
    fn FindConnectionPoint(&self, riid: *const windows_core::GUID) -> windows_core::Result<super::super::System::Com::IConnectionPoint>;
    fn OnTranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::Result<()>;
    fn OnInvoke(&self, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut windows_core::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IExpDispSupport {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
impl IExpDispSupport_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExpDispSupport_Vtbl
    where
        Identity: IExpDispSupport_Impl,
    {
        unsafe extern "system" fn FindConnectionPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppccp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExpDispSupport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExpDispSupport_Impl::FindConnectionPoint(this, core::mem::transmute_copy(&riid)) {
                Ok(ok__) => {
                    ppccp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnTranslateAccelerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::HRESULT
        where
            Identity: IExpDispSupport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExpDispSupport_Impl::OnTranslateAccelerator(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&grfmodifiers)).into()
        }
        unsafe extern "system" fn OnInvoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut core::mem::MaybeUninit<windows_core::VARIANT>, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExpDispSupport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExpDispSupport_Impl::OnInvoke(this, core::mem::transmute_copy(&dispidmember), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&lcid), core::mem::transmute_copy(&wflags), core::mem::transmute_copy(&pdispparams), core::mem::transmute_copy(&pvarresult), core::mem::transmute_copy(&pexcepinfo), core::mem::transmute_copy(&puargerr)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindConnectionPoint: FindConnectionPoint::<Identity, OFFSET>,
            OnTranslateAccelerator: OnTranslateAccelerator::<Identity, OFFSET>,
            OnInvoke: OnInvoke::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExpDispSupport as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IExpDispSupportXP_Impl: Sized {
    fn FindCIE4ConnectionPoint(&self, riid: *const windows_core::GUID) -> windows_core::Result<CIE4ConnectionPoint>;
    fn OnTranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::Result<()>;
    fn OnInvoke(&self, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut windows_core::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IExpDispSupportXP {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
impl IExpDispSupportXP_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExpDispSupportXP_Vtbl
    where
        Identity: IExpDispSupportXP_Impl,
    {
        unsafe extern "system" fn FindCIE4ConnectionPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppccp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExpDispSupportXP_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExpDispSupportXP_Impl::FindCIE4ConnectionPoint(this, core::mem::transmute_copy(&riid)) {
                Ok(ok__) => {
                    ppccp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnTranslateAccelerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::HRESULT
        where
            Identity: IExpDispSupportXP_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExpDispSupportXP_Impl::OnTranslateAccelerator(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&grfmodifiers)).into()
        }
        unsafe extern "system" fn OnInvoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut core::mem::MaybeUninit<windows_core::VARIANT>, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExpDispSupportXP_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExpDispSupportXP_Impl::OnInvoke(this, core::mem::transmute_copy(&dispidmember), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&lcid), core::mem::transmute_copy(&wflags), core::mem::transmute_copy(&pdispparams), core::mem::transmute_copy(&pvarresult), core::mem::transmute_copy(&pexcepinfo), core::mem::transmute_copy(&puargerr)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindCIE4ConnectionPoint: FindCIE4ConnectionPoint::<Identity, OFFSET>,
            OnTranslateAccelerator: OnTranslateAccelerator::<Identity, OFFSET>,
            OnInvoke: OnInvoke::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExpDispSupportXP as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IExplorerBrowser_Impl: Sized {
    fn Initialize(&self, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, pfs: *const FOLDERSETTINGS) -> windows_core::Result<()>;
    fn Destroy(&self) -> windows_core::Result<()>;
    fn SetRect(&self, phdwp: *mut super::WindowsAndMessaging::HDWP, rcbrowser: &super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetPropertyBag(&self, pszpropertybag: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEmptyText(&self, pszemptytext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFolderSettings(&self, pfs: *const FOLDERSETTINGS) -> windows_core::Result<()>;
    fn Advise(&self, psbe: Option<&IExplorerBrowserEvents>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetOptions(&self, dwflag: EXPLORER_BROWSER_OPTIONS) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<EXPLORER_BROWSER_OPTIONS>;
    fn BrowseToIDList(&self, pidl: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::Result<()>;
    fn BrowseToObject(&self, punk: Option<&windows_core::IUnknown>, uflags: u32) -> windows_core::Result<()>;
    fn FillFromObject(&self, punk: Option<&windows_core::IUnknown>, dwflags: EXPLORER_BROWSER_FILL_FLAGS) -> windows_core::Result<()>;
    fn RemoveAll(&self) -> windows_core::Result<()>;
    fn GetCurrentView(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IExplorerBrowser {}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IExplorerBrowser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExplorerBrowser_Vtbl
    where
        Identity: IExplorerBrowser_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, pfs: *const FOLDERSETTINGS) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::Initialize(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&pfs)).into()
        }
        unsafe extern "system" fn Destroy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::Destroy(this).into()
        }
        unsafe extern "system" fn SetRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phdwp: *mut super::WindowsAndMessaging::HDWP, rcbrowser: super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::SetRect(this, core::mem::transmute_copy(&phdwp), core::mem::transmute(&rcbrowser)).into()
        }
        unsafe extern "system" fn SetPropertyBag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpropertybag: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::SetPropertyBag(this, core::mem::transmute(&pszpropertybag)).into()
        }
        unsafe extern "system" fn SetEmptyText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszemptytext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::SetEmptyText(this, core::mem::transmute(&pszemptytext)).into()
        }
        unsafe extern "system" fn SetFolderSettings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfs: *const FOLDERSETTINGS) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::SetFolderSettings(this, core::mem::transmute_copy(&pfs)).into()
        }
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psbe: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerBrowser_Impl::Advise(this, windows_core::from_raw_borrowed(&psbe)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn SetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflag: EXPLORER_BROWSER_OPTIONS) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::SetOptions(this, core::mem::transmute_copy(&dwflag)).into()
        }
        unsafe extern "system" fn GetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflag: *mut EXPLORER_BROWSER_OPTIONS) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerBrowser_Impl::GetOptions(this) {
                Ok(ok__) => {
                    pdwflag.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BrowseToIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::BrowseToIDList(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&uflags)).into()
        }
        unsafe extern "system" fn BrowseToObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::BrowseToObject(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&uflags)).into()
        }
        unsafe extern "system" fn FillFromObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, dwflags: EXPLORER_BROWSER_FILL_FLAGS) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::FillFromObject(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn RemoveAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::RemoveAll(this).into()
        }
        unsafe extern "system" fn GetCurrentView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowser_Impl::GetCurrentView(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            Destroy: Destroy::<Identity, OFFSET>,
            SetRect: SetRect::<Identity, OFFSET>,
            SetPropertyBag: SetPropertyBag::<Identity, OFFSET>,
            SetEmptyText: SetEmptyText::<Identity, OFFSET>,
            SetFolderSettings: SetFolderSettings::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetOptions: SetOptions::<Identity, OFFSET>,
            GetOptions: GetOptions::<Identity, OFFSET>,
            BrowseToIDList: BrowseToIDList::<Identity, OFFSET>,
            BrowseToObject: BrowseToObject::<Identity, OFFSET>,
            FillFromObject: FillFromObject::<Identity, OFFSET>,
            RemoveAll: RemoveAll::<Identity, OFFSET>,
            GetCurrentView: GetCurrentView::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait IExplorerBrowserEvents_Impl: Sized {
    fn OnNavigationPending(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn OnViewCreated(&self, psv: Option<&IShellView>) -> windows_core::Result<()>;
    fn OnNavigationComplete(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn OnNavigationFailed(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IExplorerBrowserEvents {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl IExplorerBrowserEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExplorerBrowserEvents_Vtbl
    where
        Identity: IExplorerBrowserEvents_Impl,
    {
        unsafe extern "system" fn OnNavigationPending<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowserEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowserEvents_Impl::OnNavigationPending(this, core::mem::transmute_copy(&pidlfolder)).into()
        }
        unsafe extern "system" fn OnViewCreated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowserEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowserEvents_Impl::OnViewCreated(this, windows_core::from_raw_borrowed(&psv)).into()
        }
        unsafe extern "system" fn OnNavigationComplete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowserEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowserEvents_Impl::OnNavigationComplete(this, core::mem::transmute_copy(&pidlfolder)).into()
        }
        unsafe extern "system" fn OnNavigationFailed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IExplorerBrowserEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerBrowserEvents_Impl::OnNavigationFailed(this, core::mem::transmute_copy(&pidlfolder)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnNavigationPending: OnNavigationPending::<Identity, OFFSET>,
            OnViewCreated: OnViewCreated::<Identity, OFFSET>,
            OnNavigationComplete: OnNavigationComplete::<Identity, OFFSET>,
            OnNavigationFailed: OnNavigationFailed::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerBrowserEvents as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IExplorerCommand_Impl: Sized {
    fn GetTitle(&self, psiitemarray: Option<&IShellItemArray>) -> windows_core::Result<windows_core::PWSTR>;
    fn GetIcon(&self, psiitemarray: Option<&IShellItemArray>) -> windows_core::Result<windows_core::PWSTR>;
    fn GetToolTip(&self, psiitemarray: Option<&IShellItemArray>) -> windows_core::Result<windows_core::PWSTR>;
    fn GetCanonicalName(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetState(&self, psiitemarray: Option<&IShellItemArray>, foktobeslow: super::super::Foundation::BOOL) -> windows_core::Result<u32>;
    fn Invoke(&self, psiitemarray: Option<&IShellItemArray>, pbc: Option<&super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn EnumSubCommands(&self) -> windows_core::Result<IEnumExplorerCommand>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IExplorerCommand {}
#[cfg(feature = "Win32_System_Com")]
impl IExplorerCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExplorerCommand_Vtbl
    where
        Identity: IExplorerCommand_Impl,
    {
        unsafe extern "system" fn GetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::GetTitle(this, windows_core::from_raw_borrowed(&psiitemarray)) {
                Ok(ok__) => {
                    ppszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, ppszicon: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::GetIcon(this, windows_core::from_raw_borrowed(&psiitemarray)) {
                Ok(ok__) => {
                    ppszicon.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetToolTip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, ppszinfotip: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::GetToolTip(this, windows_core::from_raw_borrowed(&psiitemarray)) {
                Ok(ok__) => {
                    ppszinfotip.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCanonicalName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidcommandname: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::GetCanonicalName(this) {
                Ok(ok__) => {
                    pguidcommandname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, foktobeslow: super::super::Foundation::BOOL, pcmdstate: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::GetState(this, windows_core::from_raw_borrowed(&psiitemarray), core::mem::transmute_copy(&foktobeslow)) {
                Ok(ok__) => {
                    pcmdstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Invoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerCommand_Impl::Invoke(this, windows_core::from_raw_borrowed(&psiitemarray), windows_core::from_raw_borrowed(&pbc)).into()
        }
        unsafe extern "system" fn GetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::GetFlags(this) {
                Ok(ok__) => {
                    pflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumSubCommands<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommand_Impl::EnumSubCommands(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTitle: GetTitle::<Identity, OFFSET>,
            GetIcon: GetIcon::<Identity, OFFSET>,
            GetToolTip: GetToolTip::<Identity, OFFSET>,
            GetCanonicalName: GetCanonicalName::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            Invoke: Invoke::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            EnumSubCommands: EnumSubCommands::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerCommand as windows_core::Interface>::IID
    }
}
pub trait IExplorerCommandProvider_Impl: Sized {
    fn GetCommands(&self, punksite: Option<&windows_core::IUnknown>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetCommand(&self, rguidcommandid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IExplorerCommandProvider {}
impl IExplorerCommandProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExplorerCommandProvider_Vtbl
    where
        Identity: IExplorerCommandProvider_Impl,
    {
        unsafe extern "system" fn GetCommands<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksite: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerCommandProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerCommandProvider_Impl::GetCommands(this, windows_core::from_raw_borrowed(&punksite), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguidcommandid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IExplorerCommandProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExplorerCommandProvider_Impl::GetCommand(this, core::mem::transmute_copy(&rguidcommandid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCommands: GetCommands::<Identity, OFFSET>,
            GetCommand: GetCommand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerCommandProvider as windows_core::Interface>::IID
    }
}
pub trait IExplorerCommandState_Impl: Sized {
    fn GetState(&self, psiitemarray: Option<&IShellItemArray>, foktobeslow: super::super::Foundation::BOOL) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IExplorerCommandState {}
impl IExplorerCommandState_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExplorerCommandState_Vtbl
    where
        Identity: IExplorerCommandState_Impl,
    {
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, foktobeslow: super::super::Foundation::BOOL, pcmdstate: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExplorerCommandState_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerCommandState_Impl::GetState(this, windows_core::from_raw_borrowed(&psiitemarray), core::mem::transmute_copy(&foktobeslow)) {
                Ok(ok__) => {
                    pcmdstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetState: GetState::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerCommandState as windows_core::Interface>::IID
    }
}
pub trait IExplorerPaneVisibility_Impl: Sized {
    fn GetPaneState(&self, ep: *const windows_core::GUID) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IExplorerPaneVisibility {}
impl IExplorerPaneVisibility_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExplorerPaneVisibility_Vtbl
    where
        Identity: IExplorerPaneVisibility_Impl,
    {
        unsafe extern "system" fn GetPaneState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ep: *const windows_core::GUID, peps: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExplorerPaneVisibility_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExplorerPaneVisibility_Impl::GetPaneState(this, core::mem::transmute_copy(&ep)) {
                Ok(ok__) => {
                    peps.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetPaneState: GetPaneState::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerPaneVisibility as windows_core::Interface>::IID
    }
}
pub trait IExtensionServices_Impl: Sized {
    fn SetAdditionalHeaders(&self, pwzadditionalheaders: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetAuthenticateData(&self, phwnd: super::super::Foundation::HWND, pwzusername: &windows_core::PCWSTR, pwzpassword: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IExtensionServices {}
impl IExtensionServices_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExtensionServices_Vtbl
    where
        Identity: IExtensionServices_Impl,
    {
        unsafe extern "system" fn SetAdditionalHeaders<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzadditionalheaders: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IExtensionServices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtensionServices_Impl::SetAdditionalHeaders(this, core::mem::transmute(&pwzadditionalheaders)).into()
        }
        unsafe extern "system" fn SetAuthenticateData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: super::super::Foundation::HWND, pwzusername: windows_core::PCWSTR, pwzpassword: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IExtensionServices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtensionServices_Impl::SetAuthenticateData(this, core::mem::transmute_copy(&phwnd), core::mem::transmute(&pwzusername), core::mem::transmute(&pwzpassword)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAdditionalHeaders: SetAdditionalHeaders::<Identity, OFFSET>,
            SetAuthenticateData: SetAuthenticateData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtensionServices as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IExtractIconA_Impl: Sized {
    fn GetIconLocation(&self, uflags: u32, psziconfile: windows_core::PSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::Result<()>;
    fn Extract(&self, pszfile: &windows_core::PCSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IExtractIconA {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IExtractIconA_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExtractIconA_Vtbl
    where
        Identity: IExtractIconA_Impl,
    {
        unsafe extern "system" fn GetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, psziconfile: windows_core::PSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExtractIconA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtractIconA_Impl::GetIconLocation(this, core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&psziconfile), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&piindex), core::mem::transmute_copy(&pwflags)).into()
        }
        unsafe extern "system" fn Extract<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::HRESULT
        where
            Identity: IExtractIconA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtractIconA_Impl::Extract(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&niconindex), core::mem::transmute_copy(&phiconlarge), core::mem::transmute_copy(&phiconsmall), core::mem::transmute_copy(&niconsize)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            Extract: Extract::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractIconA as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IExtractIconW_Impl: Sized {
    fn GetIconLocation(&self, uflags: u32, psziconfile: windows_core::PWSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::Result<()>;
    fn Extract(&self, pszfile: &windows_core::PCWSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IExtractIconW {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IExtractIconW_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExtractIconW_Vtbl
    where
        Identity: IExtractIconW_Impl,
    {
        unsafe extern "system" fn GetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, psziconfile: windows_core::PWSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExtractIconW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtractIconW_Impl::GetIconLocation(this, core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&psziconfile), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&piindex), core::mem::transmute_copy(&pwflags)).into()
        }
        unsafe extern "system" fn Extract<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::HRESULT
        where
            Identity: IExtractIconW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtractIconW_Impl::Extract(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&niconindex), core::mem::transmute_copy(&phiconlarge), core::mem::transmute_copy(&phiconsmall), core::mem::transmute_copy(&niconsize)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            Extract: Extract::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractIconW as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IExtractImage_Impl: Sized {
    fn GetLocation(&self, pszpathbuffer: windows_core::PWSTR, cch: u32, pdwpriority: *mut u32, prgsize: *const super::super::Foundation::SIZE, dwrecclrdepth: u32, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn Extract(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IExtractImage {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IExtractImage_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExtractImage_Vtbl
    where
        Identity: IExtractImage_Impl,
    {
        unsafe extern "system" fn GetLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpathbuffer: windows_core::PWSTR, cch: u32, pdwpriority: *mut u32, prgsize: *const super::super::Foundation::SIZE, dwrecclrdepth: u32, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IExtractImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IExtractImage_Impl::GetLocation(this, core::mem::transmute_copy(&pszpathbuffer), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&pdwpriority), core::mem::transmute_copy(&prgsize), core::mem::transmute_copy(&dwrecclrdepth), core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn Extract<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbmpthumbnail: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: IExtractImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExtractImage_Impl::Extract(this) {
                Ok(ok__) => {
                    phbmpthumbnail.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetLocation: GetLocation::<Identity, OFFSET>,
            Extract: Extract::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractImage as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IExtractImage2_Impl: Sized + IExtractImage_Impl {
    fn GetDateStamp(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IExtractImage2 {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IExtractImage2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IExtractImage2_Vtbl
    where
        Identity: IExtractImage2_Impl,
    {
        unsafe extern "system" fn GetDateStamp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdatestamp: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: IExtractImage2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IExtractImage2_Impl::GetDateStamp(this) {
                Ok(ok__) => {
                    pdatestamp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IExtractImage_Vtbl::new::<Identity, OFFSET>(), GetDateStamp: GetDateStamp::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractImage2 as windows_core::Interface>::IID || iid == &<IExtractImage as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFileDialog_Impl: Sized + IModalWindow_Impl {
    fn SetFileTypes(&self, cfiletypes: u32, rgfilterspec: *const Common::COMDLG_FILTERSPEC) -> windows_core::Result<()>;
    fn SetFileTypeIndex(&self, ifiletype: u32) -> windows_core::Result<()>;
    fn GetFileTypeIndex(&self) -> windows_core::Result<u32>;
    fn Advise(&self, pfde: Option<&IFileDialogEvents>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetOptions(&self, fos: FILEOPENDIALOGOPTIONS) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<FILEOPENDIALOGOPTIONS>;
    fn SetDefaultFolder(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn SetFolder(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn GetFolder(&self) -> windows_core::Result<IShellItem>;
    fn GetCurrentSelection(&self) -> windows_core::Result<IShellItem>;
    fn SetFileName(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetFileName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn SetTitle(&self, psztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetOkButtonLabel(&self, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFileNameLabel(&self, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetResult(&self) -> windows_core::Result<IShellItem>;
    fn AddPlace(&self, psi: Option<&IShellItem>, fdap: FDAP) -> windows_core::Result<()>;
    fn SetDefaultExtension(&self, pszdefaultextension: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Close(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn SetClientGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn ClearClientData(&self) -> windows_core::Result<()>;
    fn SetFilter(&self, pfilter: Option<&IShellItemFilter>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFileDialog {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFileDialog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileDialog_Vtbl
    where
        Identity: IFileDialog_Impl,
    {
        unsafe extern "system" fn SetFileTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cfiletypes: u32, rgfilterspec: *const Common::COMDLG_FILTERSPEC) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetFileTypes(this, core::mem::transmute_copy(&cfiletypes), core::mem::transmute_copy(&rgfilterspec)).into()
        }
        unsafe extern "system" fn SetFileTypeIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ifiletype: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetFileTypeIndex(this, core::mem::transmute_copy(&ifiletype)).into()
        }
        unsafe extern "system" fn GetFileTypeIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pifiletype: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::GetFileTypeIndex(this) {
                Ok(ok__) => {
                    pifiletype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfde: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::Advise(this, windows_core::from_raw_borrowed(&pfde)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn SetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fos: FILEOPENDIALOGOPTIONS) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetOptions(this, core::mem::transmute_copy(&fos)).into()
        }
        unsafe extern "system" fn GetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfos: *mut FILEOPENDIALOGOPTIONS) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::GetOptions(this) {
                Ok(ok__) => {
                    pfos.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetDefaultFolder(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn SetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetFolder(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn GetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::GetFolder(this) {
                Ok(ok__) => {
                    ppsi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::GetCurrentSelection(this) {
                Ok(ok__) => {
                    ppsi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetFileName(this, core::mem::transmute(&pszname)).into()
        }
        unsafe extern "system" fn GetFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::GetFileName(this) {
                Ok(ok__) => {
                    pszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetTitle(this, core::mem::transmute(&psztitle)).into()
        }
        unsafe extern "system" fn SetOkButtonLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetOkButtonLabel(this, core::mem::transmute(&psztext)).into()
        }
        unsafe extern "system" fn SetFileNameLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetFileNameLabel(this, core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn GetResult<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialog_Impl::GetResult(this) {
                Ok(ok__) => {
                    ppsi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddPlace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, fdap: FDAP) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::AddPlace(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&fdap)).into()
        }
        unsafe extern "system" fn SetDefaultExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdefaultextension: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetDefaultExtension(this, core::mem::transmute(&pszdefaultextension)).into()
        }
        unsafe extern "system" fn Close<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::Close(this, core::mem::transmute_copy(&hr)).into()
        }
        unsafe extern "system" fn SetClientGuid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetClientGuid(this, core::mem::transmute_copy(&guid)).into()
        }
        unsafe extern "system" fn ClearClientData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::ClearClientData(this).into()
        }
        unsafe extern "system" fn SetFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog_Impl::SetFilter(this, windows_core::from_raw_borrowed(&pfilter)).into()
        }
        Self {
            base__: IModalWindow_Vtbl::new::<Identity, OFFSET>(),
            SetFileTypes: SetFileTypes::<Identity, OFFSET>,
            SetFileTypeIndex: SetFileTypeIndex::<Identity, OFFSET>,
            GetFileTypeIndex: GetFileTypeIndex::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetOptions: SetOptions::<Identity, OFFSET>,
            GetOptions: GetOptions::<Identity, OFFSET>,
            SetDefaultFolder: SetDefaultFolder::<Identity, OFFSET>,
            SetFolder: SetFolder::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetCurrentSelection: GetCurrentSelection::<Identity, OFFSET>,
            SetFileName: SetFileName::<Identity, OFFSET>,
            GetFileName: GetFileName::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            SetOkButtonLabel: SetOkButtonLabel::<Identity, OFFSET>,
            SetFileNameLabel: SetFileNameLabel::<Identity, OFFSET>,
            GetResult: GetResult::<Identity, OFFSET>,
            AddPlace: AddPlace::<Identity, OFFSET>,
            SetDefaultExtension: SetDefaultExtension::<Identity, OFFSET>,
            Close: Close::<Identity, OFFSET>,
            SetClientGuid: SetClientGuid::<Identity, OFFSET>,
            ClearClientData: ClearClientData::<Identity, OFFSET>,
            SetFilter: SetFilter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialog as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFileDialog2_Impl: Sized + IFileDialog_Impl {
    fn SetCancelButtonLabel(&self, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetNavigationRoot(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFileDialog2 {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFileDialog2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileDialog2_Vtbl
    where
        Identity: IFileDialog2_Impl,
    {
        unsafe extern "system" fn SetCancelButtonLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialog2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog2_Impl::SetCancelButtonLabel(this, core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn SetNavigationRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialog2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialog2_Impl::SetNavigationRoot(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        Self {
            base__: IFileDialog_Vtbl::new::<Identity, OFFSET>(),
            SetCancelButtonLabel: SetCancelButtonLabel::<Identity, OFFSET>,
            SetNavigationRoot: SetNavigationRoot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialog2 as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID || iid == &<IFileDialog as windows_core::Interface>::IID
    }
}
pub trait IFileDialogControlEvents_Impl: Sized {
    fn OnItemSelected(&self, pfdc: Option<&IFileDialogCustomize>, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>;
    fn OnButtonClicked(&self, pfdc: Option<&IFileDialogCustomize>, dwidctl: u32) -> windows_core::Result<()>;
    fn OnCheckButtonToggled(&self, pfdc: Option<&IFileDialogCustomize>, dwidctl: u32, bchecked: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn OnControlActivating(&self, pfdc: Option<&IFileDialogCustomize>, dwidctl: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFileDialogControlEvents {}
impl IFileDialogControlEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileDialogControlEvents_Vtbl
    where
        Identity: IFileDialogControlEvents_Impl,
    {
        unsafe extern "system" fn OnItemSelected<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogControlEvents_Impl::OnItemSelected(this, windows_core::from_raw_borrowed(&pfdc), core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)).into()
        }
        unsafe extern "system" fn OnButtonClicked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogControlEvents_Impl::OnButtonClicked(this, windows_core::from_raw_borrowed(&pfdc), core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn OnCheckButtonToggled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32, bchecked: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFileDialogControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogControlEvents_Impl::OnCheckButtonToggled(this, windows_core::from_raw_borrowed(&pfdc), core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&bchecked)).into()
        }
        unsafe extern "system" fn OnControlActivating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogControlEvents_Impl::OnControlActivating(this, windows_core::from_raw_borrowed(&pfdc), core::mem::transmute_copy(&dwidctl)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnItemSelected: OnItemSelected::<Identity, OFFSET>,
            OnButtonClicked: OnButtonClicked::<Identity, OFFSET>,
            OnCheckButtonToggled: OnCheckButtonToggled::<Identity, OFFSET>,
            OnControlActivating: OnControlActivating::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialogControlEvents as windows_core::Interface>::IID
    }
}
pub trait IFileDialogCustomize_Impl: Sized {
    fn EnableOpenDropDown(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddMenu(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddPushButton(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddComboBox(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddRadioButtonList(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddCheckButton(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR, bchecked: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn AddEditBox(&self, dwidctl: u32, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddSeparator(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddText(&self, dwidctl: u32, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetControlLabel(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetControlState(&self, dwidctl: u32) -> windows_core::Result<CDCONTROLSTATEF>;
    fn SetControlState(&self, dwidctl: u32, dwstate: CDCONTROLSTATEF) -> windows_core::Result<()>;
    fn GetEditBoxText(&self, dwidctl: u32) -> windows_core::Result<*mut u16>;
    fn SetEditBoxText(&self, dwidctl: u32, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetCheckButtonState(&self, dwidctl: u32) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetCheckButtonState(&self, dwidctl: u32, bchecked: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn AddControlItem(&self, dwidctl: u32, dwiditem: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn RemoveControlItem(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>;
    fn RemoveAllControlItems(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn GetControlItemState(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<CDCONTROLSTATEF>;
    fn SetControlItemState(&self, dwidctl: u32, dwiditem: u32, dwstate: CDCONTROLSTATEF) -> windows_core::Result<()>;
    fn GetSelectedControlItem(&self, dwidctl: u32) -> windows_core::Result<u32>;
    fn SetSelectedControlItem(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>;
    fn StartVisualGroup(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EndVisualGroup(&self) -> windows_core::Result<()>;
    fn MakeProminent(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn SetControlItemText(&self, dwidctl: u32, dwiditem: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFileDialogCustomize {}
impl IFileDialogCustomize_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileDialogCustomize_Vtbl
    where
        Identity: IFileDialogCustomize_Impl,
    {
        unsafe extern "system" fn EnableOpenDropDown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::EnableOpenDropDown(this, core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn AddMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddMenu(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn AddPushButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddPushButton(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn AddComboBox<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddComboBox(this, core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn AddRadioButtonList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddRadioButtonList(this, core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn AddCheckButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR, bchecked: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddCheckButton(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel), core::mem::transmute_copy(&bchecked)).into()
        }
        unsafe extern "system" fn AddEditBox<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, psztext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddEditBox(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&psztext)).into()
        }
        unsafe extern "system" fn AddSeparator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddSeparator(this, core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn AddText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, psztext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddText(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&psztext)).into()
        }
        unsafe extern "system" fn SetControlLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetControlLabel(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn GetControlState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pdwstate: *mut CDCONTROLSTATEF) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogCustomize_Impl::GetControlState(this, core::mem::transmute_copy(&dwidctl)) {
                Ok(ok__) => {
                    pdwstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetControlState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwstate: CDCONTROLSTATEF) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetControlState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwstate)).into()
        }
        unsafe extern "system" fn GetEditBoxText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, ppsztext: *mut *mut u16) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogCustomize_Impl::GetEditBoxText(this, core::mem::transmute_copy(&dwidctl)) {
                Ok(ok__) => {
                    ppsztext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditBoxText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, psztext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetEditBoxText(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&psztext)).into()
        }
        unsafe extern "system" fn GetCheckButtonState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pbchecked: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogCustomize_Impl::GetCheckButtonState(this, core::mem::transmute_copy(&dwidctl)) {
                Ok(ok__) => {
                    pbchecked.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCheckButtonState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, bchecked: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetCheckButtonState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&bchecked)).into()
        }
        unsafe extern "system" fn AddControlItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::AddControlItem(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem), core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn RemoveControlItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::RemoveControlItem(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)).into()
        }
        unsafe extern "system" fn RemoveAllControlItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::RemoveAllControlItems(this, core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn GetControlItemState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, pdwstate: *mut CDCONTROLSTATEF) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogCustomize_Impl::GetControlItemState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)) {
                Ok(ok__) => {
                    pdwstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetControlItemState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, dwstate: CDCONTROLSTATEF) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetControlItemState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem), core::mem::transmute_copy(&dwstate)).into()
        }
        unsafe extern "system" fn GetSelectedControlItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pdwiditem: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogCustomize_Impl::GetSelectedControlItem(this, core::mem::transmute_copy(&dwidctl)) {
                Ok(ok__) => {
                    pdwiditem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSelectedControlItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetSelectedControlItem(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)).into()
        }
        unsafe extern "system" fn StartVisualGroup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::StartVisualGroup(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
        }
        unsafe extern "system" fn EndVisualGroup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::EndVisualGroup(this).into()
        }
        unsafe extern "system" fn MakeProminent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::MakeProminent(this, core::mem::transmute_copy(&dwidctl)).into()
        }
        unsafe extern "system" fn SetControlItemText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileDialogCustomize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogCustomize_Impl::SetControlItemText(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem), core::mem::transmute(&pszlabel)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnableOpenDropDown: EnableOpenDropDown::<Identity, OFFSET>,
            AddMenu: AddMenu::<Identity, OFFSET>,
            AddPushButton: AddPushButton::<Identity, OFFSET>,
            AddComboBox: AddComboBox::<Identity, OFFSET>,
            AddRadioButtonList: AddRadioButtonList::<Identity, OFFSET>,
            AddCheckButton: AddCheckButton::<Identity, OFFSET>,
            AddEditBox: AddEditBox::<Identity, OFFSET>,
            AddSeparator: AddSeparator::<Identity, OFFSET>,
            AddText: AddText::<Identity, OFFSET>,
            SetControlLabel: SetControlLabel::<Identity, OFFSET>,
            GetControlState: GetControlState::<Identity, OFFSET>,
            SetControlState: SetControlState::<Identity, OFFSET>,
            GetEditBoxText: GetEditBoxText::<Identity, OFFSET>,
            SetEditBoxText: SetEditBoxText::<Identity, OFFSET>,
            GetCheckButtonState: GetCheckButtonState::<Identity, OFFSET>,
            SetCheckButtonState: SetCheckButtonState::<Identity, OFFSET>,
            AddControlItem: AddControlItem::<Identity, OFFSET>,
            RemoveControlItem: RemoveControlItem::<Identity, OFFSET>,
            RemoveAllControlItems: RemoveAllControlItems::<Identity, OFFSET>,
            GetControlItemState: GetControlItemState::<Identity, OFFSET>,
            SetControlItemState: SetControlItemState::<Identity, OFFSET>,
            GetSelectedControlItem: GetSelectedControlItem::<Identity, OFFSET>,
            SetSelectedControlItem: SetSelectedControlItem::<Identity, OFFSET>,
            StartVisualGroup: StartVisualGroup::<Identity, OFFSET>,
            EndVisualGroup: EndVisualGroup::<Identity, OFFSET>,
            MakeProminent: MakeProminent::<Identity, OFFSET>,
            SetControlItemText: SetControlItemText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialogCustomize as windows_core::Interface>::IID
    }
}
pub trait IFileDialogEvents_Impl: Sized {
    fn OnFileOk(&self, pfd: Option<&IFileDialog>) -> windows_core::Result<()>;
    fn OnFolderChanging(&self, pfd: Option<&IFileDialog>, psifolder: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnFolderChange(&self, pfd: Option<&IFileDialog>) -> windows_core::Result<()>;
    fn OnSelectionChange(&self, pfd: Option<&IFileDialog>) -> windows_core::Result<()>;
    fn OnShareViolation(&self, pfd: Option<&IFileDialog>, psi: Option<&IShellItem>) -> windows_core::Result<FDE_SHAREVIOLATION_RESPONSE>;
    fn OnTypeChange(&self, pfd: Option<&IFileDialog>) -> windows_core::Result<()>;
    fn OnOverwrite(&self, pfd: Option<&IFileDialog>, psi: Option<&IShellItem>) -> windows_core::Result<FDE_OVERWRITE_RESPONSE>;
}
impl windows_core::RuntimeName for IFileDialogEvents {}
impl IFileDialogEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileDialogEvents_Vtbl
    where
        Identity: IFileDialogEvents_Impl,
    {
        unsafe extern "system" fn OnFileOk<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogEvents_Impl::OnFileOk(this, windows_core::from_raw_borrowed(&pfd)).into()
        }
        unsafe extern "system" fn OnFolderChanging<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void, psifolder: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogEvents_Impl::OnFolderChanging(this, windows_core::from_raw_borrowed(&pfd), windows_core::from_raw_borrowed(&psifolder)).into()
        }
        unsafe extern "system" fn OnFolderChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogEvents_Impl::OnFolderChange(this, windows_core::from_raw_borrowed(&pfd)).into()
        }
        unsafe extern "system" fn OnSelectionChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogEvents_Impl::OnSelectionChange(this, windows_core::from_raw_borrowed(&pfd)).into()
        }
        unsafe extern "system" fn OnShareViolation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, presponse: *mut FDE_SHAREVIOLATION_RESPONSE) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogEvents_Impl::OnShareViolation(this, windows_core::from_raw_borrowed(&pfd), windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    presponse.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnTypeChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileDialogEvents_Impl::OnTypeChange(this, windows_core::from_raw_borrowed(&pfd)).into()
        }
        unsafe extern "system" fn OnOverwrite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, presponse: *mut FDE_OVERWRITE_RESPONSE) -> windows_core::HRESULT
        where
            Identity: IFileDialogEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileDialogEvents_Impl::OnOverwrite(this, windows_core::from_raw_borrowed(&pfd), windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    presponse.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnFileOk: OnFileOk::<Identity, OFFSET>,
            OnFolderChanging: OnFolderChanging::<Identity, OFFSET>,
            OnFolderChange: OnFolderChange::<Identity, OFFSET>,
            OnSelectionChange: OnSelectionChange::<Identity, OFFSET>,
            OnShareViolation: OnShareViolation::<Identity, OFFSET>,
            OnTypeChange: OnTypeChange::<Identity, OFFSET>,
            OnOverwrite: OnOverwrite::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialogEvents as windows_core::Interface>::IID
    }
}
pub trait IFileIsInUse_Impl: Sized {
    fn GetAppName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetUsage(&self) -> windows_core::Result<FILE_USAGE_TYPE>;
    fn GetCapabilities(&self) -> windows_core::Result<u32>;
    fn GetSwitchToHWND(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn CloseFile(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFileIsInUse {}
impl IFileIsInUse_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileIsInUse_Vtbl
    where
        Identity: IFileIsInUse_Impl,
    {
        unsafe extern "system" fn GetAppName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IFileIsInUse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileIsInUse_Impl::GetAppName(this) {
                Ok(ok__) => {
                    ppszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetUsage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfut: *mut FILE_USAGE_TYPE) -> windows_core::HRESULT
        where
            Identity: IFileIsInUse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileIsInUse_Impl::GetUsage(this) {
                Ok(ok__) => {
                    pfut.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcapflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFileIsInUse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileIsInUse_Impl::GetCapabilities(this) {
                Ok(ok__) => {
                    pdwcapflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSwitchToHWND<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IFileIsInUse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileIsInUse_Impl::GetSwitchToHWND(this) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CloseFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileIsInUse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileIsInUse_Impl::CloseFile(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAppName: GetAppName::<Identity, OFFSET>,
            GetUsage: GetUsage::<Identity, OFFSET>,
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            GetSwitchToHWND: GetSwitchToHWND::<Identity, OFFSET>,
            CloseFile: CloseFile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileIsInUse as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFileOpenDialog_Impl: Sized + IFileDialog_Impl {
    fn GetResults(&self) -> windows_core::Result<IShellItemArray>;
    fn GetSelectedItems(&self) -> windows_core::Result<IShellItemArray>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFileOpenDialog {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFileOpenDialog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileOpenDialog_Vtbl
    where
        Identity: IFileOpenDialog_Impl,
    {
        unsafe extern "system" fn GetResults<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOpenDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileOpenDialog_Impl::GetResults(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectedItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsai: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOpenDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileOpenDialog_Impl::GetSelectedItems(this) {
                Ok(ok__) => {
                    ppsai.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IFileDialog_Vtbl::new::<Identity, OFFSET>(),
            GetResults: GetResults::<Identity, OFFSET>,
            GetSelectedItems: GetSelectedItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOpenDialog as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID || iid == &<IFileDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IFileOperation_Impl: Sized {
    fn Advise(&self, pfops: Option<&IFileOperationProgressSink>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetOperationFlags(&self, dwoperationflags: FILEOPERATION_FLAGS) -> windows_core::Result<()>;
    fn SetProgressMessage(&self, pszmessage: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetProgressDialog(&self, popd: Option<&IOperationsProgressDialog>) -> windows_core::Result<()>;
    fn SetProperties(&self, pproparray: Option<&PropertiesSystem::IPropertyChangeArray>) -> windows_core::Result<()>;
    fn SetOwnerWindow(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn ApplyPropertiesToItem(&self, psiitem: Option<&IShellItem>) -> windows_core::Result<()>;
    fn ApplyPropertiesToItems(&self, punkitems: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn RenameItem(&self, psiitem: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, pfopsitem: Option<&IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn RenameItems(&self, punkitems: Option<&windows_core::IUnknown>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn MoveItem(&self, psiitem: Option<&IShellItem>, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, pfopsitem: Option<&IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn MoveItems(&self, punkitems: Option<&windows_core::IUnknown>, psidestinationfolder: Option<&IShellItem>) -> windows_core::Result<()>;
    fn CopyItem(&self, psiitem: Option<&IShellItem>, psidestinationfolder: Option<&IShellItem>, pszcopyname: &windows_core::PCWSTR, pfopsitem: Option<&IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn CopyItems(&self, punkitems: Option<&windows_core::IUnknown>, psidestinationfolder: Option<&IShellItem>) -> windows_core::Result<()>;
    fn DeleteItem(&self, psiitem: Option<&IShellItem>, pfopsitem: Option<&IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn DeleteItems(&self, punkitems: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn NewItem(&self, psidestinationfolder: Option<&IShellItem>, dwfileattributes: u32, pszname: &windows_core::PCWSTR, psztemplatename: &windows_core::PCWSTR, pfopsitem: Option<&IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn PerformOperations(&self) -> windows_core::Result<()>;
    fn GetAnyOperationsAborted(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IFileOperation {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IFileOperation_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileOperation_Vtbl
    where
        Identity: IFileOperation_Impl,
    {
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfops: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileOperation_Impl::Advise(this, windows_core::from_raw_borrowed(&pfops)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn SetOperationFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwoperationflags: FILEOPERATION_FLAGS) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::SetOperationFlags(this, core::mem::transmute_copy(&dwoperationflags)).into()
        }
        unsafe extern "system" fn SetProgressMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszmessage: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::SetProgressMessage(this, core::mem::transmute(&pszmessage)).into()
        }
        unsafe extern "system" fn SetProgressDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, popd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::SetProgressDialog(this, windows_core::from_raw_borrowed(&popd)).into()
        }
        unsafe extern "system" fn SetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pproparray: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::SetProperties(this, windows_core::from_raw_borrowed(&pproparray)).into()
        }
        unsafe extern "system" fn SetOwnerWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::SetOwnerWindow(this, core::mem::transmute_copy(&hwndowner)).into()
        }
        unsafe extern "system" fn ApplyPropertiesToItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::ApplyPropertiesToItem(this, windows_core::from_raw_borrowed(&psiitem)).into()
        }
        unsafe extern "system" fn ApplyPropertiesToItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::ApplyPropertiesToItems(this, windows_core::from_raw_borrowed(&punkitems)).into()
        }
        unsafe extern "system" fn RenameItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::RenameItem(this, windows_core::from_raw_borrowed(&psiitem), core::mem::transmute(&psznewname), windows_core::from_raw_borrowed(&pfopsitem)).into()
        }
        unsafe extern "system" fn RenameItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::RenameItems(this, windows_core::from_raw_borrowed(&punkitems), core::mem::transmute(&psznewname)).into()
        }
        unsafe extern "system" fn MoveItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::MoveItem(this, windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname), windows_core::from_raw_borrowed(&pfopsitem)).into()
        }
        unsafe extern "system" fn MoveItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::MoveItems(this, windows_core::from_raw_borrowed(&punkitems), windows_core::from_raw_borrowed(&psidestinationfolder)).into()
        }
        unsafe extern "system" fn CopyItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, pszcopyname: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::CopyItem(this, windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&pszcopyname), windows_core::from_raw_borrowed(&pfopsitem)).into()
        }
        unsafe extern "system" fn CopyItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::CopyItems(this, windows_core::from_raw_borrowed(&punkitems), windows_core::from_raw_borrowed(&psidestinationfolder)).into()
        }
        unsafe extern "system" fn DeleteItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::DeleteItem(this, windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&pfopsitem)).into()
        }
        unsafe extern "system" fn DeleteItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::DeleteItems(this, windows_core::from_raw_borrowed(&punkitems)).into()
        }
        unsafe extern "system" fn NewItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, dwfileattributes: u32, pszname: windows_core::PCWSTR, psztemplatename: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::NewItem(this, windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute_copy(&dwfileattributes), core::mem::transmute(&pszname), core::mem::transmute(&psztemplatename), windows_core::from_raw_borrowed(&pfopsitem)).into()
        }
        unsafe extern "system" fn PerformOperations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation_Impl::PerformOperations(this).into()
        }
        unsafe extern "system" fn GetAnyOperationsAborted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfanyoperationsaborted: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFileOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileOperation_Impl::GetAnyOperationsAborted(this) {
                Ok(ok__) => {
                    pfanyoperationsaborted.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetOperationFlags: SetOperationFlags::<Identity, OFFSET>,
            SetProgressMessage: SetProgressMessage::<Identity, OFFSET>,
            SetProgressDialog: SetProgressDialog::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
            SetOwnerWindow: SetOwnerWindow::<Identity, OFFSET>,
            ApplyPropertiesToItem: ApplyPropertiesToItem::<Identity, OFFSET>,
            ApplyPropertiesToItems: ApplyPropertiesToItems::<Identity, OFFSET>,
            RenameItem: RenameItem::<Identity, OFFSET>,
            RenameItems: RenameItems::<Identity, OFFSET>,
            MoveItem: MoveItem::<Identity, OFFSET>,
            MoveItems: MoveItems::<Identity, OFFSET>,
            CopyItem: CopyItem::<Identity, OFFSET>,
            CopyItems: CopyItems::<Identity, OFFSET>,
            DeleteItem: DeleteItem::<Identity, OFFSET>,
            DeleteItems: DeleteItems::<Identity, OFFSET>,
            NewItem: NewItem::<Identity, OFFSET>,
            PerformOperations: PerformOperations::<Identity, OFFSET>,
            GetAnyOperationsAborted: GetAnyOperationsAborted::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOperation as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IFileOperation2_Impl: Sized + IFileOperation_Impl {
    fn SetOperationFlags2(&self, operationflags2: FILE_OPERATION_FLAGS2) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IFileOperation2 {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IFileOperation2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileOperation2_Vtbl
    where
        Identity: IFileOperation2_Impl,
    {
        unsafe extern "system" fn SetOperationFlags2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, operationflags2: FILE_OPERATION_FLAGS2) -> windows_core::HRESULT
        where
            Identity: IFileOperation2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperation2_Impl::SetOperationFlags2(this, core::mem::transmute_copy(&operationflags2)).into()
        }
        Self { base__: IFileOperation_Vtbl::new::<Identity, OFFSET>(), SetOperationFlags2: SetOperationFlags2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOperation2 as windows_core::Interface>::IID || iid == &<IFileOperation as windows_core::Interface>::IID
    }
}
pub trait IFileOperationProgressSink_Impl: Sized {
    fn StartOperations(&self) -> windows_core::Result<()>;
    fn FinishOperations(&self, hrresult: windows_core::HRESULT) -> windows_core::Result<()>;
    fn PreRenameItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostRenameItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, hrrename: windows_core::HRESULT, psinewlycreated: Option<&IShellItem>) -> windows_core::Result<()>;
    fn PreMoveItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostMoveItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, hrmove: windows_core::HRESULT, psinewlycreated: Option<&IShellItem>) -> windows_core::Result<()>;
    fn PreCopyItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostCopyItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, hrcopy: windows_core::HRESULT, psinewlycreated: Option<&IShellItem>) -> windows_core::Result<()>;
    fn PreDeleteItem(&self, dwflags: u32, psiitem: Option<&IShellItem>) -> windows_core::Result<()>;
    fn PostDeleteItem(&self, dwflags: u32, psiitem: Option<&IShellItem>, hrdelete: windows_core::HRESULT, psinewlycreated: Option<&IShellItem>) -> windows_core::Result<()>;
    fn PreNewItem(&self, dwflags: u32, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostNewItem(&self, dwflags: u32, psidestinationfolder: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, psztemplatename: &windows_core::PCWSTR, dwfileattributes: u32, hrnew: windows_core::HRESULT, psinewitem: Option<&IShellItem>) -> windows_core::Result<()>;
    fn UpdateProgress(&self, iworktotal: u32, iworksofar: u32) -> windows_core::Result<()>;
    fn ResetTimer(&self) -> windows_core::Result<()>;
    fn PauseTimer(&self) -> windows_core::Result<()>;
    fn ResumeTimer(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFileOperationProgressSink {}
impl IFileOperationProgressSink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileOperationProgressSink_Vtbl
    where
        Identity: IFileOperationProgressSink_Impl,
    {
        unsafe extern "system" fn StartOperations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::StartOperations(this).into()
        }
        unsafe extern "system" fn FinishOperations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hrresult: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::FinishOperations(this, core::mem::transmute_copy(&hrresult)).into()
        }
        unsafe extern "system" fn PreRenameItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PreRenameItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), core::mem::transmute(&psznewname)).into()
        }
        unsafe extern "system" fn PostRenameItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, hrrename: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PostRenameItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), core::mem::transmute(&psznewname), core::mem::transmute_copy(&hrrename), windows_core::from_raw_borrowed(&psinewlycreated)).into()
        }
        unsafe extern "system" fn PreMoveItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PreMoveItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname)).into()
        }
        unsafe extern "system" fn PostMoveItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, hrmove: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PostMoveItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute_copy(&hrmove), windows_core::from_raw_borrowed(&psinewlycreated)).into()
        }
        unsafe extern "system" fn PreCopyItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PreCopyItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname)).into()
        }
        unsafe extern "system" fn PostCopyItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, hrcopy: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PostCopyItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute_copy(&hrcopy), windows_core::from_raw_borrowed(&psinewlycreated)).into()
        }
        unsafe extern "system" fn PreDeleteItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PreDeleteItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem)).into()
        }
        unsafe extern "system" fn PostDeleteItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, hrdelete: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PostDeleteItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psiitem), core::mem::transmute_copy(&hrdelete), windows_core::from_raw_borrowed(&psinewlycreated)).into()
        }
        unsafe extern "system" fn PreNewItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PreNewItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname)).into()
        }
        unsafe extern "system" fn PostNewItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, psztemplatename: windows_core::PCWSTR, dwfileattributes: u32, hrnew: windows_core::HRESULT, psinewitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PostNewItem(this, core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute(&psztemplatename), core::mem::transmute_copy(&dwfileattributes), core::mem::transmute_copy(&hrnew), windows_core::from_raw_borrowed(&psinewitem)).into()
        }
        unsafe extern "system" fn UpdateProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iworktotal: u32, iworksofar: u32) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::UpdateProgress(this, core::mem::transmute_copy(&iworktotal), core::mem::transmute_copy(&iworksofar)).into()
        }
        unsafe extern "system" fn ResetTimer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::ResetTimer(this).into()
        }
        unsafe extern "system" fn PauseTimer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::PauseTimer(this).into()
        }
        unsafe extern "system" fn ResumeTimer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileOperationProgressSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileOperationProgressSink_Impl::ResumeTimer(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartOperations: StartOperations::<Identity, OFFSET>,
            FinishOperations: FinishOperations::<Identity, OFFSET>,
            PreRenameItem: PreRenameItem::<Identity, OFFSET>,
            PostRenameItem: PostRenameItem::<Identity, OFFSET>,
            PreMoveItem: PreMoveItem::<Identity, OFFSET>,
            PostMoveItem: PostMoveItem::<Identity, OFFSET>,
            PreCopyItem: PreCopyItem::<Identity, OFFSET>,
            PostCopyItem: PostCopyItem::<Identity, OFFSET>,
            PreDeleteItem: PreDeleteItem::<Identity, OFFSET>,
            PostDeleteItem: PostDeleteItem::<Identity, OFFSET>,
            PreNewItem: PreNewItem::<Identity, OFFSET>,
            PostNewItem: PostNewItem::<Identity, OFFSET>,
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            ResetTimer: ResetTimer::<Identity, OFFSET>,
            PauseTimer: PauseTimer::<Identity, OFFSET>,
            ResumeTimer: ResumeTimer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOperationProgressSink as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IFileSaveDialog_Impl: Sized + IFileDialog_Impl {
    fn SetSaveAsItem(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn SetProperties(&self, pstore: Option<&PropertiesSystem::IPropertyStore>) -> windows_core::Result<()>;
    fn SetCollectedProperties(&self, plist: Option<&PropertiesSystem::IPropertyDescriptionList>, fappenddefault: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetProperties(&self) -> windows_core::Result<PropertiesSystem::IPropertyStore>;
    fn ApplyProperties(&self, psi: Option<&IShellItem>, pstore: Option<&PropertiesSystem::IPropertyStore>, hwnd: super::super::Foundation::HWND, psink: Option<&IFileOperationProgressSink>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IFileSaveDialog {}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IFileSaveDialog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSaveDialog_Vtbl
    where
        Identity: IFileSaveDialog_Impl,
    {
        unsafe extern "system" fn SetSaveAsItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileSaveDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSaveDialog_Impl::SetSaveAsItem(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn SetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstore: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileSaveDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSaveDialog_Impl::SetProperties(this, windows_core::from_raw_borrowed(&pstore)).into()
        }
        unsafe extern "system" fn SetCollectedProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plist: *mut core::ffi::c_void, fappenddefault: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFileSaveDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSaveDialog_Impl::SetCollectedProperties(this, windows_core::from_raw_borrowed(&plist), core::mem::transmute_copy(&fappenddefault)).into()
        }
        unsafe extern "system" fn GetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstore: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileSaveDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSaveDialog_Impl::GetProperties(this) {
                Ok(ok__) => {
                    ppstore.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ApplyProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pstore: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, psink: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileSaveDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSaveDialog_Impl::ApplyProperties(this, windows_core::from_raw_borrowed(&psi), windows_core::from_raw_borrowed(&pstore), core::mem::transmute_copy(&hwnd), windows_core::from_raw_borrowed(&psink)).into()
        }
        Self {
            base__: IFileDialog_Vtbl::new::<Identity, OFFSET>(),
            SetSaveAsItem: SetSaveAsItem::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
            SetCollectedProperties: SetCollectedProperties::<Identity, OFFSET>,
            GetProperties: GetProperties::<Identity, OFFSET>,
            ApplyProperties: ApplyProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSaveDialog as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID || iid == &<IFileDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFileSearchBand_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SetFocus(&self) -> windows_core::Result<()>;
    fn SetSearchParameters(&self, pbstrsearchid: *const windows_core::BSTR, bnavtoresults: super::super::Foundation::VARIANT_BOOL, pvarscope: *const windows_core::VARIANT, pvarqueryfile: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn SearchID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Scope(&self) -> windows_core::Result<windows_core::VARIANT>;
    fn QueryFile(&self) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFileSearchBand {}
#[cfg(feature = "Win32_System_Com")]
impl IFileSearchBand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSearchBand_Vtbl
    where
        Identity: IFileSearchBand_Impl,
    {
        unsafe extern "system" fn SetFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFileSearchBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSearchBand_Impl::SetFocus(this).into()
        }
        unsafe extern "system" fn SetSearchParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchid: *const core::mem::MaybeUninit<windows_core::BSTR>, bnavtoresults: super::super::Foundation::VARIANT_BOOL, pvarscope: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarqueryfile: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IFileSearchBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSearchBand_Impl::SetSearchParameters(this, core::mem::transmute_copy(&pbstrsearchid), core::mem::transmute_copy(&bnavtoresults), core::mem::transmute_copy(&pvarscope), core::mem::transmute_copy(&pvarqueryfile)).into()
        }
        unsafe extern "system" fn SearchID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFileSearchBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSearchBand_Impl::SearchID(this) {
                Ok(ok__) => {
                    pbstrsearchid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Scope<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarscope: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IFileSearchBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSearchBand_Impl::Scope(this) {
                Ok(ok__) => {
                    pvarscope.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarfile: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IFileSearchBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSearchBand_Impl::QueryFile(this) {
                Ok(ok__) => {
                    pvarfile.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            SetFocus: SetFocus::<Identity, OFFSET>,
            SetSearchParameters: SetSearchParameters::<Identity, OFFSET>,
            SearchID: SearchID::<Identity, OFFSET>,
            Scope: Scope::<Identity, OFFSET>,
            QueryFile: QueryFile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSearchBand as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IFileSyncMergeHandler_Impl: Sized {
    fn Merge(&self, localfilepath: &windows_core::PCWSTR, serverfilepath: &windows_core::PCWSTR) -> windows_core::Result<MERGE_UPDATE_STATUS>;
    fn ShowResolveConflictUIAsync(&self, localfilepath: &windows_core::PCWSTR, monitortodisplayon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IFileSyncMergeHandler {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IFileSyncMergeHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSyncMergeHandler_Vtbl
    where
        Identity: IFileSyncMergeHandler_Impl,
    {
        unsafe extern "system" fn Merge<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localfilepath: windows_core::PCWSTR, serverfilepath: windows_core::PCWSTR, updatestatus: *mut MERGE_UPDATE_STATUS) -> windows_core::HRESULT
        where
            Identity: IFileSyncMergeHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSyncMergeHandler_Impl::Merge(this, core::mem::transmute(&localfilepath), core::mem::transmute(&serverfilepath)) {
                Ok(ok__) => {
                    updatestatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowResolveConflictUIAsync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localfilepath: windows_core::PCWSTR, monitortodisplayon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IFileSyncMergeHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSyncMergeHandler_Impl::ShowResolveConflictUIAsync(this, core::mem::transmute(&localfilepath), core::mem::transmute_copy(&monitortodisplayon)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Merge: Merge::<Identity, OFFSET>,
            ShowResolveConflictUIAsync: ShowResolveConflictUIAsync::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSyncMergeHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Storage_FileSystem")]
pub trait IFileSystemBindData_Impl: Sized {
    fn SetFindData(&self, pfd: *const super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::Result<()>;
    fn GetFindData(&self, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl windows_core::RuntimeName for IFileSystemBindData {}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl IFileSystemBindData_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSystemBindData_Vtbl
    where
        Identity: IFileSystemBindData_Impl,
    {
        unsafe extern "system" fn SetFindData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *const super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::HRESULT
        where
            Identity: IFileSystemBindData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSystemBindData_Impl::SetFindData(this, core::mem::transmute_copy(&pfd)).into()
        }
        unsafe extern "system" fn GetFindData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::HRESULT
        where
            Identity: IFileSystemBindData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSystemBindData_Impl::GetFindData(this, core::mem::transmute_copy(&pfd)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFindData: SetFindData::<Identity, OFFSET>,
            GetFindData: GetFindData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSystemBindData as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Storage_FileSystem")]
pub trait IFileSystemBindData2_Impl: Sized + IFileSystemBindData_Impl {
    fn SetFileID(&self, lifileid: i64) -> windows_core::Result<()>;
    fn GetFileID(&self) -> windows_core::Result<i64>;
    fn SetJunctionCLSID(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetJunctionCLSID(&self) -> windows_core::Result<windows_core::GUID>;
}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl windows_core::RuntimeName for IFileSystemBindData2 {}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl IFileSystemBindData2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSystemBindData2_Vtbl
    where
        Identity: IFileSystemBindData2_Impl,
    {
        unsafe extern "system" fn SetFileID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lifileid: i64) -> windows_core::HRESULT
        where
            Identity: IFileSystemBindData2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSystemBindData2_Impl::SetFileID(this, core::mem::transmute_copy(&lifileid)).into()
        }
        unsafe extern "system" fn GetFileID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plifileid: *mut i64) -> windows_core::HRESULT
        where
            Identity: IFileSystemBindData2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSystemBindData2_Impl::GetFileID(this) {
                Ok(ok__) => {
                    plifileid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetJunctionCLSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFileSystemBindData2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSystemBindData2_Impl::SetJunctionCLSID(this, core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn GetJunctionCLSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFileSystemBindData2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSystemBindData2_Impl::GetJunctionCLSID(this) {
                Ok(ok__) => {
                    pclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IFileSystemBindData_Vtbl::new::<Identity, OFFSET>(),
            SetFileID: SetFileID::<Identity, OFFSET>,
            GetFileID: GetFileID::<Identity, OFFSET>,
            SetJunctionCLSID: SetJunctionCLSID::<Identity, OFFSET>,
            GetJunctionCLSID: GetJunctionCLSID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSystemBindData2 as windows_core::Interface>::IID || iid == &<IFileSystemBindData as windows_core::Interface>::IID
    }
}
pub trait IFolderBandPriv_Impl: Sized {
    fn SetCascade(&self, fcascade: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetAccelerators(&self, faccelerators: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetNoIcons(&self, fnoicons: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetNoText(&self, fnotext: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFolderBandPriv {}
impl IFolderBandPriv_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderBandPriv_Vtbl
    where
        Identity: IFolderBandPriv_Impl,
    {
        unsafe extern "system" fn SetCascade<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fcascade: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderBandPriv_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderBandPriv_Impl::SetCascade(this, core::mem::transmute_copy(&fcascade)).into()
        }
        unsafe extern "system" fn SetAccelerators<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, faccelerators: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderBandPriv_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderBandPriv_Impl::SetAccelerators(this, core::mem::transmute_copy(&faccelerators)).into()
        }
        unsafe extern "system" fn SetNoIcons<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnoicons: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderBandPriv_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderBandPriv_Impl::SetNoIcons(this, core::mem::transmute_copy(&fnoicons)).into()
        }
        unsafe extern "system" fn SetNoText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnotext: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderBandPriv_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderBandPriv_Impl::SetNoText(this, core::mem::transmute_copy(&fnotext)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetCascade: SetCascade::<Identity, OFFSET>,
            SetAccelerators: SetAccelerators::<Identity, OFFSET>,
            SetNoIcons: SetNoIcons::<Identity, OFFSET>,
            SetNoText: SetNoText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderBandPriv as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFolderFilter_Impl: Sized {
    fn ShouldShow(&self, psf: Option<&IShellFolder>, pidlfolder: *const Common::ITEMIDLIST, pidlitem: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetEnumFlags(&self, psf: Option<&IShellFolder>, pidlfolder: *const Common::ITEMIDLIST, phwnd: *mut super::super::Foundation::HWND, pgrfflags: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFolderFilter {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFolderFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderFilter_Vtbl
    where
        Identity: IFolderFilter_Impl,
    {
        unsafe extern "system" fn ShouldShow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, pidlitem: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IFolderFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderFilter_Impl::ShouldShow(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&pidlitem)).into()
        }
        unsafe extern "system" fn GetEnumFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, phwnd: *mut super::super::Foundation::HWND, pgrfflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderFilter_Impl::GetEnumFlags(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&pgrfflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShouldShow: ShouldShow::<Identity, OFFSET>,
            GetEnumFlags: GetEnumFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderFilter as windows_core::Interface>::IID
    }
}
pub trait IFolderFilterSite_Impl: Sized {
    fn SetFilter(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFolderFilterSite {}
impl IFolderFilterSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderFilterSite_Vtbl
    where
        Identity: IFolderFilterSite_Impl,
    {
        unsafe extern "system" fn SetFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderFilterSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderFilterSite_Impl::SetFilter(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetFilter: SetFilter::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderFilterSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFolderView_Impl: Sized {
    fn GetCurrentViewMode(&self) -> windows_core::Result<u32>;
    fn SetCurrentViewMode(&self, viewmode: u32) -> windows_core::Result<()>;
    fn GetFolder(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn Item(&self, iitemindex: i32) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn ItemCount(&self, uflags: &_SVGIO) -> windows_core::Result<i32>;
    fn Items(&self, uflags: &_SVGIO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetSelectionMarkedItem(&self) -> windows_core::Result<i32>;
    fn GetFocusedItem(&self) -> windows_core::Result<i32>;
    fn GetItemPosition(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetSpacing(&self, ppt: *mut super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn GetDefaultSpacing(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetAutoArrange(&self) -> windows_core::Result<()>;
    fn SelectItem(&self, iitem: i32, dwflags: u32) -> windows_core::Result<()>;
    fn SelectAndPositionItems(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, apt: *const super::super::Foundation::POINT, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFolderView {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFolderView_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderView_Vtbl
    where
        Identity: IFolderView_Impl,
    {
        unsafe extern "system" fn GetCurrentViewMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pviewmode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::GetCurrentViewMode(this) {
                Ok(ok__) => {
                    pviewmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentViewMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewmode: u32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::SetCurrentViewMode(this, core::mem::transmute_copy(&viewmode)).into()
        }
        unsafe extern "system" fn GetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::GetFolder(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iitemindex: i32, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::Item(this, core::mem::transmute_copy(&iitemindex)) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ItemCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, pcitems: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::ItemCount(this, core::mem::transmute(&uflags)) {
                Ok(ok__) => {
                    pcitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Items<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::Items(this, core::mem::transmute(&uflags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetSelectionMarkedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piitem: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::GetSelectionMarkedItem(this) {
                Ok(ok__) => {
                    piitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFocusedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piitem: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::GetFocusedItem(this) {
                Ok(ok__) => {
                    piitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::GetItemPosition(this, core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    ppt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSpacing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::GetSpacing(this, core::mem::transmute_copy(&ppt)).into()
        }
        unsafe extern "system" fn GetDefaultSpacing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView_Impl::GetDefaultSpacing(this) {
                Ok(ok__) => {
                    ppt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAutoArrange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::GetAutoArrange(this).into()
        }
        unsafe extern "system" fn SelectItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iitem: i32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::SelectItem(this, core::mem::transmute_copy(&iitem), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SelectAndPositionItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, apt: *const super::super::Foundation::POINT, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView_Impl::SelectAndPositionItems(this, core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&apt), core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCurrentViewMode: GetCurrentViewMode::<Identity, OFFSET>,
            SetCurrentViewMode: SetCurrentViewMode::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            ItemCount: ItemCount::<Identity, OFFSET>,
            Items: Items::<Identity, OFFSET>,
            GetSelectionMarkedItem: GetSelectionMarkedItem::<Identity, OFFSET>,
            GetFocusedItem: GetFocusedItem::<Identity, OFFSET>,
            GetItemPosition: GetItemPosition::<Identity, OFFSET>,
            GetSpacing: GetSpacing::<Identity, OFFSET>,
            GetDefaultSpacing: GetDefaultSpacing::<Identity, OFFSET>,
            GetAutoArrange: GetAutoArrange::<Identity, OFFSET>,
            SelectItem: SelectItem::<Identity, OFFSET>,
            SelectAndPositionItems: SelectAndPositionItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderView as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IFolderView2_Impl: Sized + IFolderView_Impl {
    fn SetGroupBy(&self, key: *const PropertiesSystem::PROPERTYKEY, fascending: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetGroupBy(&self, pkey: *mut PropertiesSystem::PROPERTYKEY, pfascending: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetViewProperty(&self, pidl: *const Common::ITEMIDLIST, propkey: *const PropertiesSystem::PROPERTYKEY, propvar: *const windows_core::PROPVARIANT) -> windows_core::Result<()>;
    fn GetViewProperty(&self, pidl: *const Common::ITEMIDLIST, propkey: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::PROPVARIANT>;
    fn SetTileViewProperties(&self, pidl: *const Common::ITEMIDLIST, pszproplist: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetExtendedTileViewProperties(&self, pidl: *const Common::ITEMIDLIST, pszproplist: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetText(&self, itype: FVTEXTTYPE, pwsztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetCurrentFolderFlags(&self, dwmask: u32, dwflags: u32) -> windows_core::Result<()>;
    fn GetCurrentFolderFlags(&self) -> windows_core::Result<u32>;
    fn GetSortColumnCount(&self) -> windows_core::Result<i32>;
    fn SetSortColumns(&self, rgsortcolumns: *const SORTCOLUMN, ccolumns: i32) -> windows_core::Result<()>;
    fn GetSortColumns(&self, rgsortcolumns: *mut SORTCOLUMN, ccolumns: i32) -> windows_core::Result<()>;
    fn GetItem(&self, iitem: i32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetVisibleItem(&self, istart: i32, fprevious: super::super::Foundation::BOOL) -> windows_core::Result<i32>;
    fn GetSelectedItem(&self, istart: i32) -> windows_core::Result<i32>;
    fn GetSelection(&self, fnoneimpliesfolder: super::super::Foundation::BOOL) -> windows_core::Result<IShellItemArray>;
    fn GetSelectionState(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn InvokeVerbOnSelection(&self, pszverb: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn SetViewModeAndIconSize(&self, uviewmode: FOLDERVIEWMODE, iimagesize: i32) -> windows_core::Result<()>;
    fn GetViewModeAndIconSize(&self, puviewmode: *mut FOLDERVIEWMODE, piimagesize: *mut i32) -> windows_core::Result<()>;
    fn SetGroupSubsetCount(&self, cvisiblerows: u32) -> windows_core::Result<()>;
    fn GetGroupSubsetCount(&self) -> windows_core::Result<u32>;
    fn SetRedraw(&self, fredrawon: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn IsMoveInSameFolder(&self) -> windows_core::Result<()>;
    fn DoRename(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IFolderView2 {}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IFolderView2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderView2_Vtbl
    where
        Identity: IFolderView2_Impl,
    {
        unsafe extern "system" fn SetGroupBy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, fascending: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetGroupBy(this, core::mem::transmute_copy(&key), core::mem::transmute_copy(&fascending)).into()
        }
        unsafe extern "system" fn GetGroupBy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkey: *mut PropertiesSystem::PROPERTYKEY, pfascending: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::GetGroupBy(this, core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&pfascending)).into()
        }
        unsafe extern "system" fn SetViewProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, propkey: *const PropertiesSystem::PROPERTYKEY, propvar: *const core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetViewProperty(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&propkey), core::mem::transmute_copy(&propvar)).into()
        }
        unsafe extern "system" fn GetViewProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, propkey: *const PropertiesSystem::PROPERTYKEY, ppropvar: *mut core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetViewProperty(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&propkey)) {
                Ok(ok__) => {
                    ppropvar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTileViewProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pszproplist: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetTileViewProperties(this, core::mem::transmute_copy(&pidl), core::mem::transmute(&pszproplist)).into()
        }
        unsafe extern "system" fn SetExtendedTileViewProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pszproplist: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetExtendedTileViewProperties(this, core::mem::transmute_copy(&pidl), core::mem::transmute(&pszproplist)).into()
        }
        unsafe extern "system" fn SetText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itype: FVTEXTTYPE, pwsztext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetText(this, core::mem::transmute_copy(&itype), core::mem::transmute(&pwsztext)).into()
        }
        unsafe extern "system" fn SetCurrentFolderFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmask: u32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetCurrentFolderFlags(this, core::mem::transmute_copy(&dwmask), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetCurrentFolderFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetCurrentFolderFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSortColumnCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pccolumns: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetSortColumnCount(this) {
                Ok(ok__) => {
                    pccolumns.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSortColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgsortcolumns: *const SORTCOLUMN, ccolumns: i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetSortColumns(this, core::mem::transmute_copy(&rgsortcolumns), core::mem::transmute_copy(&ccolumns)).into()
        }
        unsafe extern "system" fn GetSortColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgsortcolumns: *mut SORTCOLUMN, ccolumns: i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::GetSortColumns(this, core::mem::transmute_copy(&rgsortcolumns), core::mem::transmute_copy(&ccolumns)).into()
        }
        unsafe extern "system" fn GetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iitem: i32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::GetItem(this, core::mem::transmute_copy(&iitem), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetVisibleItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, istart: i32, fprevious: super::super::Foundation::BOOL, piitem: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetVisibleItem(this, core::mem::transmute_copy(&istart), core::mem::transmute_copy(&fprevious)) {
                Ok(ok__) => {
                    piitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, istart: i32, piitem: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetSelectedItem(this, core::mem::transmute_copy(&istart)) {
                Ok(ok__) => {
                    piitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnoneimpliesfolder: super::super::Foundation::BOOL, ppsia: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetSelection(this, core::mem::transmute_copy(&fnoneimpliesfolder)) {
                Ok(ok__) => {
                    ppsia.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectionState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetSelectionState(this, core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InvokeVerbOnSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszverb: windows_core::PCSTR) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::InvokeVerbOnSelection(this, core::mem::transmute(&pszverb)).into()
        }
        unsafe extern "system" fn SetViewModeAndIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uviewmode: FOLDERVIEWMODE, iimagesize: i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetViewModeAndIconSize(this, core::mem::transmute_copy(&uviewmode), core::mem::transmute_copy(&iimagesize)).into()
        }
        unsafe extern "system" fn GetViewModeAndIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puviewmode: *mut FOLDERVIEWMODE, piimagesize: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::GetViewModeAndIconSize(this, core::mem::transmute_copy(&puviewmode), core::mem::transmute_copy(&piimagesize)).into()
        }
        unsafe extern "system" fn SetGroupSubsetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cvisiblerows: u32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetGroupSubsetCount(this, core::mem::transmute_copy(&cvisiblerows)).into()
        }
        unsafe extern "system" fn GetGroupSubsetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcvisiblerows: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderView2_Impl::GetGroupSubsetCount(this) {
                Ok(ok__) => {
                    pcvisiblerows.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRedraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fredrawon: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::SetRedraw(this, core::mem::transmute_copy(&fredrawon)).into()
        }
        unsafe extern "system" fn IsMoveInSameFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::IsMoveInSameFolder(this).into()
        }
        unsafe extern "system" fn DoRename<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderView2_Impl::DoRename(this).into()
        }
        Self {
            base__: IFolderView_Vtbl::new::<Identity, OFFSET>(),
            SetGroupBy: SetGroupBy::<Identity, OFFSET>,
            GetGroupBy: GetGroupBy::<Identity, OFFSET>,
            SetViewProperty: SetViewProperty::<Identity, OFFSET>,
            GetViewProperty: GetViewProperty::<Identity, OFFSET>,
            SetTileViewProperties: SetTileViewProperties::<Identity, OFFSET>,
            SetExtendedTileViewProperties: SetExtendedTileViewProperties::<Identity, OFFSET>,
            SetText: SetText::<Identity, OFFSET>,
            SetCurrentFolderFlags: SetCurrentFolderFlags::<Identity, OFFSET>,
            GetCurrentFolderFlags: GetCurrentFolderFlags::<Identity, OFFSET>,
            GetSortColumnCount: GetSortColumnCount::<Identity, OFFSET>,
            SetSortColumns: SetSortColumns::<Identity, OFFSET>,
            GetSortColumns: GetSortColumns::<Identity, OFFSET>,
            GetItem: GetItem::<Identity, OFFSET>,
            GetVisibleItem: GetVisibleItem::<Identity, OFFSET>,
            GetSelectedItem: GetSelectedItem::<Identity, OFFSET>,
            GetSelection: GetSelection::<Identity, OFFSET>,
            GetSelectionState: GetSelectionState::<Identity, OFFSET>,
            InvokeVerbOnSelection: InvokeVerbOnSelection::<Identity, OFFSET>,
            SetViewModeAndIconSize: SetViewModeAndIconSize::<Identity, OFFSET>,
            GetViewModeAndIconSize: GetViewModeAndIconSize::<Identity, OFFSET>,
            SetGroupSubsetCount: SetGroupSubsetCount::<Identity, OFFSET>,
            GetGroupSubsetCount: GetGroupSubsetCount::<Identity, OFFSET>,
            SetRedraw: SetRedraw::<Identity, OFFSET>,
            IsMoveInSameFolder: IsMoveInSameFolder::<Identity, OFFSET>,
            DoRename: DoRename::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderView2 as windows_core::Interface>::IID || iid == &<IFolderView as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFolderViewHost_Impl: Sized {
    fn Initialize(&self, hwndparent: super::super::Foundation::HWND, pdo: Option<&super::super::System::Com::IDataObject>, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFolderViewHost {}
#[cfg(feature = "Win32_System_Com")]
impl IFolderViewHost_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderViewHost_Vtbl
    where
        Identity: IFolderViewHost_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, pdo: *mut core::ffi::c_void, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IFolderViewHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewHost_Impl::Initialize(this, core::mem::transmute_copy(&hwndparent), windows_core::from_raw_borrowed(&pdo), core::mem::transmute_copy(&prc)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewHost as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFolderViewOC_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SetFolderView(&self, pdisp: Option<&super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFolderViewOC {}
#[cfg(feature = "Win32_System_Com")]
impl IFolderViewOC_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderViewOC_Vtbl
    where
        Identity: IFolderViewOC_Impl,
    {
        unsafe extern "system" fn SetFolderView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdisp: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderViewOC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewOC_Impl::SetFolderView(this, windows_core::from_raw_borrowed(&pdisp)).into()
        }
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), SetFolderView: SetFolderView::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewOC as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IFolderViewOptions_Impl: Sized {
    fn SetFolderViewOptions(&self, fvomask: FOLDERVIEWOPTIONS, fvoflags: FOLDERVIEWOPTIONS) -> windows_core::Result<()>;
    fn GetFolderViewOptions(&self) -> windows_core::Result<FOLDERVIEWOPTIONS>;
}
impl windows_core::RuntimeName for IFolderViewOptions {}
impl IFolderViewOptions_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderViewOptions_Vtbl
    where
        Identity: IFolderViewOptions_Impl,
    {
        unsafe extern "system" fn SetFolderViewOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fvomask: FOLDERVIEWOPTIONS, fvoflags: FOLDERVIEWOPTIONS) -> windows_core::HRESULT
        where
            Identity: IFolderViewOptions_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewOptions_Impl::SetFolderViewOptions(this, core::mem::transmute_copy(&fvomask), core::mem::transmute_copy(&fvoflags)).into()
        }
        unsafe extern "system" fn GetFolderViewOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfvoflags: *mut FOLDERVIEWOPTIONS) -> windows_core::HRESULT
        where
            Identity: IFolderViewOptions_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderViewOptions_Impl::GetFolderViewOptions(this) {
                Ok(ok__) => {
                    pfvoflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFolderViewOptions: SetFolderViewOptions::<Identity, OFFSET>,
            GetFolderViewOptions: GetFolderViewOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewOptions as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IFolderViewSettings_Impl: Sized {
    fn GetColumnPropertyList(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetGroupByProperty(&self, pkey: *mut PropertiesSystem::PROPERTYKEY, pfgroupascending: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetViewMode(&self) -> windows_core::Result<FOLDERLOGICALVIEWMODE>;
    fn GetIconSize(&self) -> windows_core::Result<u32>;
    fn GetFolderFlags(&self, pfoldermask: *mut FOLDERFLAGS, pfolderflags: *mut FOLDERFLAGS) -> windows_core::Result<()>;
    fn GetSortColumns(&self, rgsortcolumns: *mut SORTCOLUMN, ccolumnsin: u32, pccolumnsout: *mut u32) -> windows_core::Result<()>;
    fn GetGroupSubsetCount(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IFolderViewSettings {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IFolderViewSettings_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFolderViewSettings_Vtbl
    where
        Identity: IFolderViewSettings_Impl,
    {
        unsafe extern "system" fn GetColumnPropertyList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewSettings_Impl::GetColumnPropertyList(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetGroupByProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkey: *mut PropertiesSystem::PROPERTYKEY, pfgroupascending: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewSettings_Impl::GetGroupByProperty(this, core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&pfgroupascending)).into()
        }
        unsafe extern "system" fn GetViewMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plvm: *mut FOLDERLOGICALVIEWMODE) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderViewSettings_Impl::GetViewMode(this) {
                Ok(ok__) => {
                    plvm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puiconsize: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderViewSettings_Impl::GetIconSize(this) {
                Ok(ok__) => {
                    puiconsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFolderFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfoldermask: *mut FOLDERFLAGS, pfolderflags: *mut FOLDERFLAGS) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewSettings_Impl::GetFolderFlags(this, core::mem::transmute_copy(&pfoldermask), core::mem::transmute_copy(&pfolderflags)).into()
        }
        unsafe extern "system" fn GetSortColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgsortcolumns: *mut SORTCOLUMN, ccolumnsin: u32, pccolumnsout: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFolderViewSettings_Impl::GetSortColumns(this, core::mem::transmute_copy(&rgsortcolumns), core::mem::transmute_copy(&ccolumnsin), core::mem::transmute_copy(&pccolumnsout)).into()
        }
        unsafe extern "system" fn GetGroupSubsetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcvisiblerows: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFolderViewSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFolderViewSettings_Impl::GetGroupSubsetCount(this) {
                Ok(ok__) => {
                    pcvisiblerows.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetColumnPropertyList: GetColumnPropertyList::<Identity, OFFSET>,
            GetGroupByProperty: GetGroupByProperty::<Identity, OFFSET>,
            GetViewMode: GetViewMode::<Identity, OFFSET>,
            GetIconSize: GetIconSize::<Identity, OFFSET>,
            GetFolderFlags: GetFolderFlags::<Identity, OFFSET>,
            GetSortColumns: GetSortColumns::<Identity, OFFSET>,
            GetGroupSubsetCount: GetGroupSubsetCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewSettings as windows_core::Interface>::IID
    }
}
pub trait IFrameworkInputPane_Impl: Sized {
    fn Advise(&self, pwindow: Option<&windows_core::IUnknown>, phandler: Option<&IFrameworkInputPaneHandler>) -> windows_core::Result<u32>;
    fn AdviseWithHWND(&self, hwnd: super::super::Foundation::HWND, phandler: Option<&IFrameworkInputPaneHandler>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn Location(&self) -> windows_core::Result<super::super::Foundation::RECT>;
}
impl windows_core::RuntimeName for IFrameworkInputPane {}
impl IFrameworkInputPane_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFrameworkInputPane_Vtbl
    where
        Identity: IFrameworkInputPane_Impl,
    {
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwindow: *mut core::ffi::c_void, phandler: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFrameworkInputPane_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFrameworkInputPane_Impl::Advise(this, windows_core::from_raw_borrowed(&pwindow), windows_core::from_raw_borrowed(&phandler)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AdviseWithHWND<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, phandler: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFrameworkInputPane_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFrameworkInputPane_Impl::AdviseWithHWND(this, core::mem::transmute_copy(&hwnd), windows_core::from_raw_borrowed(&phandler)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IFrameworkInputPane_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrameworkInputPane_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn Location<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcinputpanescreenlocation: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IFrameworkInputPane_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFrameworkInputPane_Impl::Location(this) {
                Ok(ok__) => {
                    prcinputpanescreenlocation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            AdviseWithHWND: AdviseWithHWND::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            Location: Location::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFrameworkInputPane as windows_core::Interface>::IID
    }
}
pub trait IFrameworkInputPaneHandler_Impl: Sized {
    fn Showing(&self, prcinputpanescreenlocation: *const super::super::Foundation::RECT, fensurefocusedelementinview: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Hiding(&self, fensurefocusedelementinview: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFrameworkInputPaneHandler {}
impl IFrameworkInputPaneHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFrameworkInputPaneHandler_Vtbl
    where
        Identity: IFrameworkInputPaneHandler_Impl,
    {
        unsafe extern "system" fn Showing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcinputpanescreenlocation: *const super::super::Foundation::RECT, fensurefocusedelementinview: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFrameworkInputPaneHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrameworkInputPaneHandler_Impl::Showing(this, core::mem::transmute_copy(&prcinputpanescreenlocation), core::mem::transmute_copy(&fensurefocusedelementinview)).into()
        }
        unsafe extern "system" fn Hiding<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fensurefocusedelementinview: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IFrameworkInputPaneHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrameworkInputPaneHandler_Impl::Hiding(this, core::mem::transmute_copy(&fensurefocusedelementinview)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Showing: Showing::<Identity, OFFSET>, Hiding: Hiding::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFrameworkInputPaneHandler as windows_core::Interface>::IID
    }
}
pub trait IGetServiceIds_Impl: Sized {
    fn GetServiceIds(&self, serviceidcount: *mut u32, serviceids: *mut *mut windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IGetServiceIds {}
impl IGetServiceIds_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGetServiceIds_Vtbl
    where
        Identity: IGetServiceIds_Impl,
    {
        unsafe extern "system" fn GetServiceIds<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, serviceidcount: *mut u32, serviceids: *mut *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IGetServiceIds_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGetServiceIds_Impl::GetServiceIds(this, core::mem::transmute_copy(&serviceidcount), core::mem::transmute_copy(&serviceids)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetServiceIds: GetServiceIds::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGetServiceIds as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHWEventHandler_Impl: Sized {
    fn Initialize(&self, pszparams: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn HandleEvent(&self, pszdeviceid: &windows_core::PCWSTR, pszaltdeviceid: &windows_core::PCWSTR, pszeventtype: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn HandleEventWithContent(&self, pszdeviceid: &windows_core::PCWSTR, pszaltdeviceid: &windows_core::PCWSTR, pszeventtype: &windows_core::PCWSTR, pszcontenttypehandler: &windows_core::PCWSTR, pdataobject: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHWEventHandler {}
#[cfg(feature = "Win32_System_Com")]
impl IHWEventHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHWEventHandler_Vtbl
    where
        Identity: IHWEventHandler_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszparams: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHWEventHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHWEventHandler_Impl::Initialize(this, core::mem::transmute(&pszparams)).into()
        }
        unsafe extern "system" fn HandleEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, pszaltdeviceid: windows_core::PCWSTR, pszeventtype: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHWEventHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHWEventHandler_Impl::HandleEvent(this, core::mem::transmute(&pszdeviceid), core::mem::transmute(&pszaltdeviceid), core::mem::transmute(&pszeventtype)).into()
        }
        unsafe extern "system" fn HandleEventWithContent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, pszaltdeviceid: windows_core::PCWSTR, pszeventtype: windows_core::PCWSTR, pszcontenttypehandler: windows_core::PCWSTR, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHWEventHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHWEventHandler_Impl::HandleEventWithContent(this, core::mem::transmute(&pszdeviceid), core::mem::transmute(&pszaltdeviceid), core::mem::transmute(&pszeventtype), core::mem::transmute(&pszcontenttypehandler), windows_core::from_raw_borrowed(&pdataobject)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            HandleEvent: HandleEvent::<Identity, OFFSET>,
            HandleEventWithContent: HandleEventWithContent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHWEventHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHWEventHandler2_Impl: Sized + IHWEventHandler_Impl {
    fn HandleEventWithHWND(&self, pszdeviceid: &windows_core::PCWSTR, pszaltdeviceid: &windows_core::PCWSTR, pszeventtype: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHWEventHandler2 {}
#[cfg(feature = "Win32_System_Com")]
impl IHWEventHandler2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHWEventHandler2_Vtbl
    where
        Identity: IHWEventHandler2_Impl,
    {
        unsafe extern "system" fn HandleEventWithHWND<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, pszaltdeviceid: windows_core::PCWSTR, pszeventtype: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IHWEventHandler2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHWEventHandler2_Impl::HandleEventWithHWND(this, core::mem::transmute(&pszdeviceid), core::mem::transmute(&pszaltdeviceid), core::mem::transmute(&pszeventtype), core::mem::transmute_copy(&hwndowner)).into()
        }
        Self { base__: IHWEventHandler_Vtbl::new::<Identity, OFFSET>(), HandleEventWithHWND: HandleEventWithHWND::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHWEventHandler2 as windows_core::Interface>::IID || iid == &<IHWEventHandler as windows_core::Interface>::IID
    }
}
pub trait IHandlerActivationHost_Impl: Sized {
    fn BeforeCoCreateInstance(&self, clsidhandler: *const windows_core::GUID, itemsbeingactivated: Option<&IShellItemArray>, handlerinfo: Option<&IHandlerInfo>) -> windows_core::Result<()>;
    fn BeforeCreateProcess(&self, applicationpath: &windows_core::PCWSTR, commandline: &windows_core::PCWSTR, handlerinfo: Option<&IHandlerInfo>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IHandlerActivationHost {}
impl IHandlerActivationHost_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHandlerActivationHost_Vtbl
    where
        Identity: IHandlerActivationHost_Impl,
    {
        unsafe extern "system" fn BeforeCoCreateInstance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, itemsbeingactivated: *mut core::ffi::c_void, handlerinfo: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHandlerActivationHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHandlerActivationHost_Impl::BeforeCoCreateInstance(this, core::mem::transmute_copy(&clsidhandler), windows_core::from_raw_borrowed(&itemsbeingactivated), windows_core::from_raw_borrowed(&handlerinfo)).into()
        }
        unsafe extern "system" fn BeforeCreateProcess<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, applicationpath: windows_core::PCWSTR, commandline: windows_core::PCWSTR, handlerinfo: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHandlerActivationHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHandlerActivationHost_Impl::BeforeCreateProcess(this, core::mem::transmute(&applicationpath), core::mem::transmute(&commandline), windows_core::from_raw_borrowed(&handlerinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BeforeCoCreateInstance: BeforeCoCreateInstance::<Identity, OFFSET>,
            BeforeCreateProcess: BeforeCreateProcess::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHandlerActivationHost as windows_core::Interface>::IID
    }
}
pub trait IHandlerInfo_Impl: Sized {
    fn GetApplicationDisplayName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetApplicationPublisher(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetApplicationIconReference(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IHandlerInfo {}
impl IHandlerInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHandlerInfo_Vtbl
    where
        Identity: IHandlerInfo_Impl,
    {
        unsafe extern "system" fn GetApplicationDisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHandlerInfo_Impl::GetApplicationDisplayName(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetApplicationPublisher<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHandlerInfo_Impl::GetApplicationPublisher(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetApplicationIconReference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHandlerInfo_Impl::GetApplicationIconReference(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetApplicationDisplayName: GetApplicationDisplayName::<Identity, OFFSET>,
            GetApplicationPublisher: GetApplicationPublisher::<Identity, OFFSET>,
            GetApplicationIconReference: GetApplicationIconReference::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHandlerInfo as windows_core::Interface>::IID
    }
}
pub trait IHandlerInfo2_Impl: Sized + IHandlerInfo_Impl {
    fn GetApplicationId(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IHandlerInfo2 {}
impl IHandlerInfo2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHandlerInfo2_Vtbl
    where
        Identity: IHandlerInfo2_Impl,
    {
        unsafe extern "system" fn GetApplicationId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHandlerInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHandlerInfo2_Impl::GetApplicationId(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IHandlerInfo_Vtbl::new::<Identity, OFFSET>(), GetApplicationId: GetApplicationId::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHandlerInfo2 as windows_core::Interface>::IID || iid == &<IHandlerInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlink_Impl: Sized {
    fn SetHlinkSite(&self, pihlsite: Option<&IHlinkSite>, dwsitedata: u32) -> windows_core::Result<()>;
    fn GetHlinkSite(&self, ppihlsite: *mut Option<IHlinkSite>, pdwsitedata: *mut u32) -> windows_core::Result<()>;
    fn SetMonikerReference(&self, grfhlsetf: u32, pimktarget: Option<&super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetMonikerReference(&self, dwwhichref: u32, ppimktarget: *mut Option<super::super::System::Com::IMoniker>, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn SetStringReference(&self, grfhlsetf: u32, pwztarget: &windows_core::PCWSTR, pwzlocation: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetStringReference(&self, dwwhichref: u32, ppwztarget: *mut windows_core::PWSTR, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn SetFriendlyName(&self, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetFriendlyName(&self, grfhlfnamef: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn SetTargetFrameName(&self, pwztargetframename: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTargetFrameName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetMiscStatus(&self) -> windows_core::Result<u32>;
    fn Navigate(&self, grfhlnf: u32, pibc: Option<&super::super::System::Com::IBindCtx>, pibsc: Option<&super::super::System::Com::IBindStatusCallback>, pihlbc: Option<&IHlinkBrowseContext>) -> windows_core::Result<()>;
    fn SetAdditionalParams(&self, pwzadditionalparams: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetAdditionalParams(&self) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlink {}
#[cfg(feature = "Win32_System_Com")]
impl IHlink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHlink_Vtbl
    where
        Identity: IHlink_Impl,
    {
        unsafe extern "system" fn SetHlinkSite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihlsite: *mut core::ffi::c_void, dwsitedata: u32) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::SetHlinkSite(this, windows_core::from_raw_borrowed(&pihlsite), core::mem::transmute_copy(&dwsitedata)).into()
        }
        unsafe extern "system" fn GetHlinkSite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppihlsite: *mut *mut core::ffi::c_void, pdwsitedata: *mut u32) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::GetHlinkSite(this, core::mem::transmute_copy(&ppihlsite), core::mem::transmute_copy(&pdwsitedata)).into()
        }
        unsafe extern "system" fn SetMonikerReference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlsetf: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::SetMonikerReference(this, core::mem::transmute_copy(&grfhlsetf), windows_core::from_raw_borrowed(&pimktarget), core::mem::transmute(&pwzlocation)).into()
        }
        unsafe extern "system" fn GetMonikerReference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwhichref: u32, ppimktarget: *mut *mut core::ffi::c_void, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::GetMonikerReference(this, core::mem::transmute_copy(&dwwhichref), core::mem::transmute_copy(&ppimktarget), core::mem::transmute_copy(&ppwzlocation)).into()
        }
        unsafe extern "system" fn SetStringReference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlsetf: u32, pwztarget: windows_core::PCWSTR, pwzlocation: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::SetStringReference(this, core::mem::transmute_copy(&grfhlsetf), core::mem::transmute(&pwztarget), core::mem::transmute(&pwzlocation)).into()
        }
        unsafe extern "system" fn GetStringReference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwhichref: u32, ppwztarget: *mut windows_core::PWSTR, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::GetStringReference(this, core::mem::transmute_copy(&dwwhichref), core::mem::transmute_copy(&ppwztarget), core::mem::transmute_copy(&ppwzlocation)).into()
        }
        unsafe extern "system" fn SetFriendlyName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::SetFriendlyName(this, core::mem::transmute(&pwzfriendlyname)).into()
        }
        unsafe extern "system" fn GetFriendlyName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlfnamef: u32, ppwzfriendlyname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlink_Impl::GetFriendlyName(this, core::mem::transmute_copy(&grfhlfnamef)) {
                Ok(ok__) => {
                    ppwzfriendlyname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTargetFrameName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwztargetframename: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::SetTargetFrameName(this, core::mem::transmute(&pwztargetframename)).into()
        }
        unsafe extern "system" fn GetTargetFrameName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwztargetframename: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlink_Impl::GetTargetFrameName(this) {
                Ok(ok__) => {
                    ppwztargetframename.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMiscStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwstatus: *mut u32) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlink_Impl::GetMiscStatus(this) {
                Ok(ok__) => {
                    pdwstatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Navigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pibc: *mut core::ffi::c_void, pibsc: *mut core::ffi::c_void, pihlbc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::Navigate(this, core::mem::transmute_copy(&grfhlnf), windows_core::from_raw_borrowed(&pibc), windows_core::from_raw_borrowed(&pibsc), windows_core::from_raw_borrowed(&pihlbc)).into()
        }
        unsafe extern "system" fn SetAdditionalParams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzadditionalparams: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlink_Impl::SetAdditionalParams(this, core::mem::transmute(&pwzadditionalparams)).into()
        }
        unsafe extern "system" fn GetAdditionalParams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwzadditionalparams: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHlink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlink_Impl::GetAdditionalParams(this) {
                Ok(ok__) => {
                    ppwzadditionalparams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetHlinkSite: SetHlinkSite::<Identity, OFFSET>,
            GetHlinkSite: GetHlinkSite::<Identity, OFFSET>,
            SetMonikerReference: SetMonikerReference::<Identity, OFFSET>,
            GetMonikerReference: GetMonikerReference::<Identity, OFFSET>,
            SetStringReference: SetStringReference::<Identity, OFFSET>,
            GetStringReference: GetStringReference::<Identity, OFFSET>,
            SetFriendlyName: SetFriendlyName::<Identity, OFFSET>,
            GetFriendlyName: GetFriendlyName::<Identity, OFFSET>,
            SetTargetFrameName: SetTargetFrameName::<Identity, OFFSET>,
            GetTargetFrameName: GetTargetFrameName::<Identity, OFFSET>,
            GetMiscStatus: GetMiscStatus::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            SetAdditionalParams: SetAdditionalParams::<Identity, OFFSET>,
            GetAdditionalParams: GetAdditionalParams::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlink as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkBrowseContext_Impl: Sized {
    fn Register(&self, reserved: u32, piunk: Option<&windows_core::IUnknown>, pimk: Option<&super::super::System::Com::IMoniker>) -> windows_core::Result<u32>;
    fn GetObject(&self, pimk: Option<&super::super::System::Com::IMoniker>, fbindifrootregistered: super::super::Foundation::BOOL) -> windows_core::Result<windows_core::IUnknown>;
    fn Revoke(&self, dwregister: u32) -> windows_core::Result<()>;
    fn SetBrowseWindowInfo(&self, phlbwi: *const HLBWINFO) -> windows_core::Result<()>;
    fn GetBrowseWindowInfo(&self, phlbwi: *mut HLBWINFO) -> windows_core::Result<()>;
    fn SetInitialHlink(&self, pimktarget: Option<&super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OnNavigateHlink(&self, grfhlnf: u32, pimktarget: Option<&super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn UpdateHlink(&self, uhlid: u32, pimktarget: Option<&super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EnumNavigationStack(&self, dwreserved: u32, grfhlfnamef: u32) -> windows_core::Result<IEnumHLITEM>;
    fn QueryHlink(&self, grfhlqf: u32, uhlid: u32) -> windows_core::Result<()>;
    fn GetHlink(&self, uhlid: u32) -> windows_core::Result<IHlink>;
    fn SetCurrentHlink(&self, uhlid: u32) -> windows_core::Result<()>;
    fn Clone(&self, piunkouter: Option<&windows_core::IUnknown>, riid: *const windows_core::GUID) -> windows_core::Result<windows_core::IUnknown>;
    fn Close(&self, reserved: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkBrowseContext {}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkBrowseContext_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHlinkBrowseContext_Vtbl
    where
        Identity: IHlinkBrowseContext_Impl,
    {
        unsafe extern "system" fn Register<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, reserved: u32, piunk: *mut core::ffi::c_void, pimk: *mut core::ffi::c_void, pdwregister: *mut u32) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkBrowseContext_Impl::Register(this, core::mem::transmute_copy(&reserved), windows_core::from_raw_borrowed(&piunk), windows_core::from_raw_borrowed(&pimk)) {
                Ok(ok__) => {
                    pdwregister.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pimk: *mut core::ffi::c_void, fbindifrootregistered: super::super::Foundation::BOOL, ppiunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkBrowseContext_Impl::GetObject(this, windows_core::from_raw_borrowed(&pimk), core::mem::transmute_copy(&fbindifrootregistered)) {
                Ok(ok__) => {
                    ppiunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Revoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwregister: u32) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::Revoke(this, core::mem::transmute_copy(&dwregister)).into()
        }
        unsafe extern "system" fn SetBrowseWindowInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phlbwi: *const HLBWINFO) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::SetBrowseWindowInfo(this, core::mem::transmute_copy(&phlbwi)).into()
        }
        unsafe extern "system" fn GetBrowseWindowInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phlbwi: *mut HLBWINFO) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::GetBrowseWindowInfo(this, core::mem::transmute_copy(&phlbwi)).into()
        }
        unsafe extern "system" fn SetInitialHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::SetInitialHlink(this, windows_core::from_raw_borrowed(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)).into()
        }
        unsafe extern "system" fn OnNavigateHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR, puhlid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkBrowseContext_Impl::OnNavigateHlink(this, core::mem::transmute_copy(&grfhlnf), windows_core::from_raw_borrowed(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)) {
                Ok(ok__) => {
                    puhlid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UpdateHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::UpdateHlink(this, core::mem::transmute_copy(&uhlid), windows_core::from_raw_borrowed(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)).into()
        }
        unsafe extern "system" fn EnumNavigationStack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32, grfhlfnamef: u32, ppienumhlitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkBrowseContext_Impl::EnumNavigationStack(this, core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&grfhlfnamef)) {
                Ok(ok__) => {
                    ppienumhlitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlqf: u32, uhlid: u32) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::QueryHlink(this, core::mem::transmute_copy(&grfhlqf), core::mem::transmute_copy(&uhlid)).into()
        }
        unsafe extern "system" fn GetHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32, ppihl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkBrowseContext_Impl::GetHlink(this, core::mem::transmute_copy(&uhlid)) {
                Ok(ok__) => {
                    ppihl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::SetCurrentHlink(this, core::mem::transmute_copy(&uhlid)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piunkouter: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppiunkobj: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkBrowseContext_Impl::Clone(this, windows_core::from_raw_borrowed(&piunkouter), core::mem::transmute_copy(&riid)) {
                Ok(ok__) => {
                    ppiunkobj.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Close<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, reserved: u32) -> windows_core::HRESULT
        where
            Identity: IHlinkBrowseContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkBrowseContext_Impl::Close(this, core::mem::transmute_copy(&reserved)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            Revoke: Revoke::<Identity, OFFSET>,
            SetBrowseWindowInfo: SetBrowseWindowInfo::<Identity, OFFSET>,
            GetBrowseWindowInfo: GetBrowseWindowInfo::<Identity, OFFSET>,
            SetInitialHlink: SetInitialHlink::<Identity, OFFSET>,
            OnNavigateHlink: OnNavigateHlink::<Identity, OFFSET>,
            UpdateHlink: UpdateHlink::<Identity, OFFSET>,
            EnumNavigationStack: EnumNavigationStack::<Identity, OFFSET>,
            QueryHlink: QueryHlink::<Identity, OFFSET>,
            GetHlink: GetHlink::<Identity, OFFSET>,
            SetCurrentHlink: SetCurrentHlink::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
            Close: Close::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkBrowseContext as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkFrame_Impl: Sized {
    fn SetBrowseContext(&self, pihlbc: Option<&IHlinkBrowseContext>) -> windows_core::Result<()>;
    fn GetBrowseContext(&self) -> windows_core::Result<IHlinkBrowseContext>;
    fn Navigate(&self, grfhlnf: u32, pbc: Option<&super::super::System::Com::IBindCtx>, pibsc: Option<&super::super::System::Com::IBindStatusCallback>, pihlnavigate: Option<&IHlink>) -> windows_core::Result<()>;
    fn OnNavigate(&self, grfhlnf: u32, pimktarget: Option<&super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR, dwreserved: u32) -> windows_core::Result<()>;
    fn UpdateHlink(&self, uhlid: u32, pimktarget: Option<&super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkFrame {}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkFrame_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHlinkFrame_Vtbl
    where
        Identity: IHlinkFrame_Impl,
    {
        unsafe extern "system" fn SetBrowseContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihlbc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkFrame_Impl::SetBrowseContext(this, windows_core::from_raw_borrowed(&pihlbc)).into()
        }
        unsafe extern "system" fn GetBrowseContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppihlbc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkFrame_Impl::GetBrowseContext(this) {
                Ok(ok__) => {
                    ppihlbc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Navigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pbc: *mut core::ffi::c_void, pibsc: *mut core::ffi::c_void, pihlnavigate: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkFrame_Impl::Navigate(this, core::mem::transmute_copy(&grfhlnf), windows_core::from_raw_borrowed(&pbc), windows_core::from_raw_borrowed(&pibsc), windows_core::from_raw_borrowed(&pihlnavigate)).into()
        }
        unsafe extern "system" fn OnNavigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: IHlinkFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkFrame_Impl::OnNavigate(this, core::mem::transmute_copy(&grfhlnf), windows_core::from_raw_borrowed(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn UpdateHlink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlinkFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkFrame_Impl::UpdateHlink(this, core::mem::transmute_copy(&uhlid), windows_core::from_raw_borrowed(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBrowseContext: SetBrowseContext::<Identity, OFFSET>,
            GetBrowseContext: GetBrowseContext::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            OnNavigate: OnNavigate::<Identity, OFFSET>,
            UpdateHlink: UpdateHlink::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkFrame as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkSite_Impl: Sized {
    fn QueryService(&self, dwsitedata: u32, guidservice: *const windows_core::GUID, riid: *const windows_core::GUID) -> windows_core::Result<windows_core::IUnknown>;
    fn GetMoniker(&self, dwsitedata: u32, dwassign: u32, dwwhich: u32) -> windows_core::Result<super::super::System::Com::IMoniker>;
    fn ReadyToNavigate(&self, dwsitedata: u32, dwreserved: u32) -> windows_core::Result<()>;
    fn OnNavigationComplete(&self, dwsitedata: u32, dwreserved: u32, hrerror: windows_core::HRESULT, pwzerror: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkSite {}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHlinkSite_Vtbl
    where
        Identity: IHlinkSite_Impl,
    {
        unsafe extern "system" fn QueryService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, guidservice: *const windows_core::GUID, riid: *const windows_core::GUID, ppiunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkSite_Impl::QueryService(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&guidservice), core::mem::transmute_copy(&riid)) {
                Ok(ok__) => {
                    ppiunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMoniker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, dwassign: u32, dwwhich: u32, ppimk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkSite_Impl::GetMoniker(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&dwassign), core::mem::transmute_copy(&dwwhich)) {
                Ok(ok__) => {
                    ppimk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReadyToNavigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: IHlinkSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkSite_Impl::ReadyToNavigate(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn OnNavigationComplete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, dwreserved: u32, hrerror: windows_core::HRESULT, pwzerror: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlinkSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkSite_Impl::OnNavigationComplete(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&hrerror), core::mem::transmute(&pwzerror)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryService: QueryService::<Identity, OFFSET>,
            GetMoniker: GetMoniker::<Identity, OFFSET>,
            ReadyToNavigate: ReadyToNavigate::<Identity, OFFSET>,
            OnNavigationComplete: OnNavigationComplete::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkTarget_Impl: Sized {
    fn SetBrowseContext(&self, pihlbc: Option<&IHlinkBrowseContext>) -> windows_core::Result<()>;
    fn GetBrowseContext(&self) -> windows_core::Result<IHlinkBrowseContext>;
    fn Navigate(&self, grfhlnf: u32, pwzjumplocation: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetMoniker(&self, pwzlocation: &windows_core::PCWSTR, dwassign: u32) -> windows_core::Result<super::super::System::Com::IMoniker>;
    fn GetFriendlyName(&self, pwzlocation: &windows_core::PCWSTR) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkTarget {}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkTarget_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHlinkTarget_Vtbl
    where
        Identity: IHlinkTarget_Impl,
    {
        unsafe extern "system" fn SetBrowseContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihlbc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkTarget_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkTarget_Impl::SetBrowseContext(this, windows_core::from_raw_borrowed(&pihlbc)).into()
        }
        unsafe extern "system" fn GetBrowseContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppihlbc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkTarget_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkTarget_Impl::GetBrowseContext(this) {
                Ok(ok__) => {
                    ppihlbc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Navigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pwzjumplocation: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IHlinkTarget_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IHlinkTarget_Impl::Navigate(this, core::mem::transmute_copy(&grfhlnf), core::mem::transmute(&pwzjumplocation)).into()
        }
        unsafe extern "system" fn GetMoniker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, dwassign: u32, ppimklocation: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IHlinkTarget_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkTarget_Impl::GetMoniker(this, core::mem::transmute(&pwzlocation), core::mem::transmute_copy(&dwassign)) {
                Ok(ok__) => {
                    ppimklocation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFriendlyName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, ppwzfriendlyname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IHlinkTarget_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHlinkTarget_Impl::GetFriendlyName(this, core::mem::transmute(&pwzlocation)) {
                Ok(ok__) => {
                    ppwzfriendlyname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBrowseContext: SetBrowseContext::<Identity, OFFSET>,
            GetBrowseContext: GetBrowseContext::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            GetMoniker: GetMoniker::<Identity, OFFSET>,
            GetFriendlyName: GetFriendlyName::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkTarget as windows_core::Interface>::IID
    }
}
pub trait IHomeGroup_Impl: Sized {
    fn IsMember(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn ShowSharingWizard(&self, owner: super::super::Foundation::HWND) -> windows_core::Result<HOMEGROUPSHARINGCHOICES>;
}
impl windows_core::RuntimeName for IHomeGroup {}
impl IHomeGroup_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IHomeGroup_Vtbl
    where
        Identity: IHomeGroup_Impl,
    {
        unsafe extern "system" fn IsMember<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, member: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IHomeGroup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHomeGroup_Impl::IsMember(this) {
                Ok(ok__) => {
                    member.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowSharingWizard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, owner: super::super::Foundation::HWND, sharingchoices: *mut HOMEGROUPSHARINGCHOICES) -> windows_core::HRESULT
        where
            Identity: IHomeGroup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IHomeGroup_Impl::ShowSharingWizard(this, core::mem::transmute_copy(&owner)) {
                Ok(ok__) => {
                    sharingchoices.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsMember: IsMember::<Identity, OFFSET>,
            ShowSharingWizard: ShowSharingWizard::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHomeGroup as windows_core::Interface>::IID
    }
}
pub trait IIOCancelInformation_Impl: Sized {
    fn SetCancelInformation(&self, dwthreadid: u32, umsgcancel: u32) -> windows_core::Result<()>;
    fn GetCancelInformation(&self, pdwthreadid: *mut u32, pumsgcancel: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIOCancelInformation {}
impl IIOCancelInformation_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIOCancelInformation_Vtbl
    where
        Identity: IIOCancelInformation_Impl,
    {
        unsafe extern "system" fn SetCancelInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwthreadid: u32, umsgcancel: u32) -> windows_core::HRESULT
        where
            Identity: IIOCancelInformation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIOCancelInformation_Impl::SetCancelInformation(this, core::mem::transmute_copy(&dwthreadid), core::mem::transmute_copy(&umsgcancel)).into()
        }
        unsafe extern "system" fn GetCancelInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwthreadid: *mut u32, pumsgcancel: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIOCancelInformation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIOCancelInformation_Impl::GetCancelInformation(this, core::mem::transmute_copy(&pdwthreadid), core::mem::transmute_copy(&pumsgcancel)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetCancelInformation: SetCancelInformation::<Identity, OFFSET>,
            GetCancelInformation: GetCancelInformation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIOCancelInformation as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IIdentityName_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IIdentityName {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IIdentityName_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIdentityName_Vtbl
    where
        Identity: IIdentityName_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIdentityName as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IImageRecompress_Impl: Sized {
    fn RecompressImage(&self, psi: Option<&IShellItem>, cx: i32, cy: i32, iquality: i32, pstg: Option<&super::super::System::Com::StructuredStorage::IStorage>) -> windows_core::Result<super::super::System::Com::IStream>;
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IImageRecompress {}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IImageRecompress_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IImageRecompress_Vtbl
    where
        Identity: IImageRecompress_Impl,
    {
        unsafe extern "system" fn RecompressImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, cx: i32, cy: i32, iquality: i32, pstg: *mut core::ffi::c_void, ppstrmout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IImageRecompress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IImageRecompress_Impl::RecompressImage(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&cx), core::mem::transmute_copy(&cy), core::mem::transmute_copy(&iquality), windows_core::from_raw_borrowed(&pstg)) {
                Ok(ok__) => {
                    ppstrmout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RecompressImage: RecompressImage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IImageRecompress as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IInitializeCommand_Impl: Sized {
    fn Initialize(&self, pszcommandname: &windows_core::PCWSTR, ppb: Option<&super::super::System::Com::StructuredStorage::IPropertyBag>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IInitializeCommand {}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IInitializeCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeCommand_Vtbl
    where
        Identity: IInitializeCommand_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcommandname: windows_core::PCWSTR, ppb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInitializeCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeCommand_Impl::Initialize(this, core::mem::transmute(&pszcommandname), windows_core::from_raw_borrowed(&ppb)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeCommand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IInitializeNetworkFolder_Impl: Sized {
    fn Initialize(&self, pidl: *const Common::ITEMIDLIST, pidltarget: *const Common::ITEMIDLIST, udisplaytype: u32, pszresname: &windows_core::PCWSTR, pszprovider: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IInitializeNetworkFolder {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IInitializeNetworkFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeNetworkFolder_Vtbl
    where
        Identity: IInitializeNetworkFolder_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pidltarget: *const Common::ITEMIDLIST, udisplaytype: u32, pszresname: windows_core::PCWSTR, pszprovider: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IInitializeNetworkFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeNetworkFolder_Impl::Initialize(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pidltarget), core::mem::transmute_copy(&udisplaytype), core::mem::transmute(&pszresname), core::mem::transmute(&pszprovider)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeNetworkFolder as windows_core::Interface>::IID
    }
}
pub trait IInitializeObject_Impl: Sized {
    fn Initialize(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IInitializeObject {}
impl IInitializeObject_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeObject_Vtbl
    where
        Identity: IInitializeObject_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInitializeObject_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeObject_Impl::Initialize(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeObject as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IInitializeWithBindCtx_Impl: Sized {
    fn Initialize(&self, pbc: Option<&super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IInitializeWithBindCtx {}
#[cfg(feature = "Win32_System_Com")]
impl IInitializeWithBindCtx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeWithBindCtx_Vtbl
    where
        Identity: IInitializeWithBindCtx_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInitializeWithBindCtx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeWithBindCtx_Impl::Initialize(this, windows_core::from_raw_borrowed(&pbc)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithBindCtx as windows_core::Interface>::IID
    }
}
pub trait IInitializeWithItem_Impl: Sized {
    fn Initialize(&self, psi: Option<&IShellItem>, grfmode: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IInitializeWithItem {}
impl IInitializeWithItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeWithItem_Vtbl
    where
        Identity: IInitializeWithItem_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, grfmode: u32) -> windows_core::HRESULT
        where
            Identity: IInitializeWithItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeWithItem_Impl::Initialize(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&grfmode)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IInitializeWithPropertyStore_Impl: Sized {
    fn Initialize(&self, pps: Option<&PropertiesSystem::IPropertyStore>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IInitializeWithPropertyStore {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IInitializeWithPropertyStore_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeWithPropertyStore_Vtbl
    where
        Identity: IInitializeWithPropertyStore_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pps: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInitializeWithPropertyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeWithPropertyStore_Impl::Initialize(this, windows_core::from_raw_borrowed(&pps)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithPropertyStore as windows_core::Interface>::IID
    }
}
pub trait IInitializeWithWindow_Impl: Sized {
    fn Initialize(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IInitializeWithWindow {}
impl IInitializeWithWindow_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInitializeWithWindow_Vtbl
    where
        Identity: IInitializeWithWindow_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IInitializeWithWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInitializeWithWindow_Impl::Initialize(this, core::mem::transmute_copy(&hwnd)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IInputObject_Impl: Sized {
    fn UIActivateIO(&self, factivate: super::super::Foundation::BOOL, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn HasFocusIO(&self) -> windows_core::Result<()>;
    fn TranslateAcceleratorIO(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IInputObject {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IInputObject_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInputObject_Vtbl
    where
        Identity: IInputObject_Impl,
    {
        unsafe extern "system" fn UIActivateIO<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, factivate: super::super::Foundation::BOOL, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IInputObject_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputObject_Impl::UIActivateIO(this, core::mem::transmute_copy(&factivate), core::mem::transmute_copy(&pmsg)).into()
        }
        unsafe extern "system" fn HasFocusIO<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInputObject_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputObject_Impl::HasFocusIO(this).into()
        }
        unsafe extern "system" fn TranslateAcceleratorIO<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IInputObject_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputObject_Impl::TranslateAcceleratorIO(this, core::mem::transmute_copy(&pmsg)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            UIActivateIO: UIActivateIO::<Identity, OFFSET>,
            HasFocusIO: HasFocusIO::<Identity, OFFSET>,
            TranslateAcceleratorIO: TranslateAcceleratorIO::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputObject as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IInputObject2_Impl: Sized + IInputObject_Impl {
    fn TranslateAcceleratorGlobal(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IInputObject2 {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IInputObject2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInputObject2_Vtbl
    where
        Identity: IInputObject2_Impl,
    {
        unsafe extern "system" fn TranslateAcceleratorGlobal<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IInputObject2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputObject2_Impl::TranslateAcceleratorGlobal(this, core::mem::transmute_copy(&pmsg)).into()
        }
        Self { base__: IInputObject_Vtbl::new::<Identity, OFFSET>(), TranslateAcceleratorGlobal: TranslateAcceleratorGlobal::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputObject2 as windows_core::Interface>::IID || iid == &<IInputObject as windows_core::Interface>::IID
    }
}
pub trait IInputObjectSite_Impl: Sized {
    fn OnFocusChangeIS(&self, punkobj: Option<&windows_core::IUnknown>, fsetfocus: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IInputObjectSite {}
impl IInputObjectSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInputObjectSite_Vtbl
    where
        Identity: IInputObjectSite_Impl,
    {
        unsafe extern "system" fn OnFocusChangeIS<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, fsetfocus: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IInputObjectSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputObjectSite_Impl::OnFocusChangeIS(this, windows_core::from_raw_borrowed(&punkobj), core::mem::transmute_copy(&fsetfocus)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnFocusChangeIS: OnFocusChangeIS::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputObjectSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectComposition")]
pub trait IInputPaneAnimationCoordinator_Impl: Sized {
    fn AddAnimation(&self, device: Option<&windows_core::IUnknown>, animation: Option<&super::super::Graphics::DirectComposition::IDCompositionAnimation>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectComposition")]
impl windows_core::RuntimeName for IInputPaneAnimationCoordinator {}
#[cfg(feature = "Win32_Graphics_DirectComposition")]
impl IInputPaneAnimationCoordinator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInputPaneAnimationCoordinator_Vtbl
    where
        Identity: IInputPaneAnimationCoordinator_Impl,
    {
        unsafe extern "system" fn AddAnimation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, device: *mut core::ffi::c_void, animation: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInputPaneAnimationCoordinator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputPaneAnimationCoordinator_Impl::AddAnimation(this, windows_core::from_raw_borrowed(&device), windows_core::from_raw_borrowed(&animation)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AddAnimation: AddAnimation::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputPaneAnimationCoordinator as windows_core::Interface>::IID
    }
}
pub trait IInputPanelConfiguration_Impl: Sized {
    fn EnableFocusTracking(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IInputPanelConfiguration {}
impl IInputPanelConfiguration_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInputPanelConfiguration_Vtbl
    where
        Identity: IInputPanelConfiguration_Impl,
    {
        unsafe extern "system" fn EnableFocusTracking<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInputPanelConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputPanelConfiguration_Impl::EnableFocusTracking(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), EnableFocusTracking: EnableFocusTracking::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputPanelConfiguration as windows_core::Interface>::IID
    }
}
pub trait IInputPanelInvocationConfiguration_Impl: Sized {
    fn RequireTouchInEditControl(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IInputPanelInvocationConfiguration {}
impl IInputPanelInvocationConfiguration_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInputPanelInvocationConfiguration_Vtbl
    where
        Identity: IInputPanelInvocationConfiguration_Impl,
    {
        unsafe extern "system" fn RequireTouchInEditControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IInputPanelInvocationConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInputPanelInvocationConfiguration_Impl::RequireTouchInEditControl(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RequireTouchInEditControl: RequireTouchInEditControl::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputPanelInvocationConfiguration as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IInsertItem_Impl: Sized {
    fn InsertItem(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IInsertItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IInsertItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IInsertItem_Vtbl
    where
        Identity: IInsertItem_Impl,
    {
        unsafe extern "system" fn InsertItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IInsertItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IInsertItem_Impl::InsertItem(this, core::mem::transmute_copy(&pidl)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), InsertItem: InsertItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInsertItem as windows_core::Interface>::IID
    }
}
pub trait IItemNameLimits_Impl: Sized {
    fn GetValidCharacters(&self, ppwszvalidchars: *mut windows_core::PWSTR, ppwszinvalidchars: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn GetMaxLength(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IItemNameLimits {}
impl IItemNameLimits_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IItemNameLimits_Vtbl
    where
        Identity: IItemNameLimits_Impl,
    {
        unsafe extern "system" fn GetValidCharacters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwszvalidchars: *mut windows_core::PWSTR, ppwszinvalidchars: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IItemNameLimits_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IItemNameLimits_Impl::GetValidCharacters(this, core::mem::transmute_copy(&ppwszvalidchars), core::mem::transmute_copy(&ppwszinvalidchars)).into()
        }
        unsafe extern "system" fn GetMaxLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pimaxnamelen: *mut i32) -> windows_core::HRESULT
        where
            Identity: IItemNameLimits_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IItemNameLimits_Impl::GetMaxLength(this, core::mem::transmute(&pszname)) {
                Ok(ok__) => {
                    pimaxnamelen.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetValidCharacters: GetValidCharacters::<Identity, OFFSET>,
            GetMaxLength: GetMaxLength::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IItemNameLimits as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IKnownFolder_Impl: Sized {
    fn GetId(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetCategory(&self) -> windows_core::Result<KF_CATEGORY>;
    fn GetShellItem(&self, dwflags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPath(&self, dwflags: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn SetPath(&self, dwflags: u32, pszpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetIDList(&self, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn GetFolderType(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetRedirectionCapabilities(&self) -> windows_core::Result<u32>;
    fn GetFolderDefinition(&self, pkfd: *mut KNOWNFOLDER_DEFINITION) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IKnownFolder {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IKnownFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IKnownFolder_Vtbl
    where
        Identity: IKnownFolder_Impl,
    {
        unsafe extern "system" fn GetId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkfid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolder_Impl::GetId(this) {
                Ok(ok__) => {
                    pkfid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *mut KF_CATEGORY) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolder_Impl::GetCategory(this) {
                Ok(ok__) => {
                    pcategory.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetShellItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolder_Impl::GetShellItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppszpath: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolder_Impl::GetPath(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppszpath.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, pszpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolder_Impl::SetPath(this, core::mem::transmute_copy(&dwflags), core::mem::transmute(&pszpath)).into()
        }
        unsafe extern "system" fn GetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolder_Impl::GetIDList(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFolderType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolder_Impl::GetFolderType(this) {
                Ok(ok__) => {
                    pftid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRedirectionCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcapabilities: *mut u32) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolder_Impl::GetRedirectionCapabilities(this) {
                Ok(ok__) => {
                    pcapabilities.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFolderDefinition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkfd: *mut KNOWNFOLDER_DEFINITION) -> windows_core::HRESULT
        where
            Identity: IKnownFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolder_Impl::GetFolderDefinition(this, core::mem::transmute_copy(&pkfd)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetId: GetId::<Identity, OFFSET>,
            GetCategory: GetCategory::<Identity, OFFSET>,
            GetShellItem: GetShellItem::<Identity, OFFSET>,
            GetPath: GetPath::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            GetFolderType: GetFolderType::<Identity, OFFSET>,
            GetRedirectionCapabilities: GetRedirectionCapabilities::<Identity, OFFSET>,
            GetFolderDefinition: GetFolderDefinition::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IKnownFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IKnownFolderManager_Impl: Sized {
    fn FolderIdFromCsidl(&self, ncsidl: i32) -> windows_core::Result<windows_core::GUID>;
    fn FolderIdToCsidl(&self, rfid: *const windows_core::GUID) -> windows_core::Result<i32>;
    fn GetFolderIds(&self, ppkfid: *mut *mut windows_core::GUID, pcount: *mut u32) -> windows_core::Result<()>;
    fn GetFolder(&self, rfid: *const windows_core::GUID) -> windows_core::Result<IKnownFolder>;
    fn GetFolderByName(&self, pszcanonicalname: &windows_core::PCWSTR) -> windows_core::Result<IKnownFolder>;
    fn RegisterFolder(&self, rfid: *const windows_core::GUID, pkfd: *const KNOWNFOLDER_DEFINITION) -> windows_core::Result<()>;
    fn UnregisterFolder(&self, rfid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn FindFolderFromPath(&self, pszpath: &windows_core::PCWSTR, mode: FFFP_MODE) -> windows_core::Result<IKnownFolder>;
    fn FindFolderFromIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<IKnownFolder>;
    fn Redirect(&self, rfid: *const windows_core::GUID, hwnd: super::super::Foundation::HWND, flags: u32, psztargetpath: &windows_core::PCWSTR, cfolders: u32, pexclusion: *const windows_core::GUID, ppszerror: *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IKnownFolderManager {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IKnownFolderManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IKnownFolderManager_Vtbl
    where
        Identity: IKnownFolderManager_Impl,
    {
        unsafe extern "system" fn FolderIdFromCsidl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ncsidl: i32, pfid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolderManager_Impl::FolderIdFromCsidl(this, core::mem::transmute_copy(&ncsidl)) {
                Ok(ok__) => {
                    pfid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FolderIdToCsidl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, pncsidl: *mut i32) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolderManager_Impl::FolderIdToCsidl(this, core::mem::transmute_copy(&rfid)) {
                Ok(ok__) => {
                    pncsidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFolderIds<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppkfid: *mut *mut windows_core::GUID, pcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolderManager_Impl::GetFolderIds(this, core::mem::transmute_copy(&ppkfid), core::mem::transmute_copy(&pcount)).into()
        }
        unsafe extern "system" fn GetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolderManager_Impl::GetFolder(this, core::mem::transmute_copy(&rfid)) {
                Ok(ok__) => {
                    ppkf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFolderByName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcanonicalname: windows_core::PCWSTR, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolderManager_Impl::GetFolderByName(this, core::mem::transmute(&pszcanonicalname)) {
                Ok(ok__) => {
                    ppkf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, pkfd: *const KNOWNFOLDER_DEFINITION) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolderManager_Impl::RegisterFolder(this, core::mem::transmute_copy(&rfid), core::mem::transmute_copy(&pkfd)).into()
        }
        unsafe extern "system" fn UnregisterFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolderManager_Impl::UnregisterFolder(this, core::mem::transmute_copy(&rfid)).into()
        }
        unsafe extern "system" fn FindFolderFromPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, mode: FFFP_MODE, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolderManager_Impl::FindFolderFromPath(this, core::mem::transmute(&pszpath), core::mem::transmute_copy(&mode)) {
                Ok(ok__) => {
                    ppkf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindFolderFromIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IKnownFolderManager_Impl::FindFolderFromIDList(this, core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    ppkf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Redirect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, hwnd: super::super::Foundation::HWND, flags: u32, psztargetpath: windows_core::PCWSTR, cfolders: u32, pexclusion: *const windows_core::GUID, ppszerror: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IKnownFolderManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IKnownFolderManager_Impl::Redirect(this, core::mem::transmute_copy(&rfid), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&flags), core::mem::transmute(&psztargetpath), core::mem::transmute_copy(&cfolders), core::mem::transmute_copy(&pexclusion), core::mem::transmute_copy(&ppszerror)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FolderIdFromCsidl: FolderIdFromCsidl::<Identity, OFFSET>,
            FolderIdToCsidl: FolderIdToCsidl::<Identity, OFFSET>,
            GetFolderIds: GetFolderIds::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetFolderByName: GetFolderByName::<Identity, OFFSET>,
            RegisterFolder: RegisterFolder::<Identity, OFFSET>,
            UnregisterFolder: UnregisterFolder::<Identity, OFFSET>,
            FindFolderFromPath: FindFolderFromPath::<Identity, OFFSET>,
            FindFolderFromIDList: FindFolderFromIDList::<Identity, OFFSET>,
            Redirect: Redirect::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IKnownFolderManager as windows_core::Interface>::IID
    }
}
pub trait ILaunchSourceAppUserModelId_Impl: Sized {
    fn GetAppUserModelId(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for ILaunchSourceAppUserModelId {}
impl ILaunchSourceAppUserModelId_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILaunchSourceAppUserModelId_Vtbl
    where
        Identity: ILaunchSourceAppUserModelId_Impl,
    {
        unsafe extern "system" fn GetAppUserModelId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, launchingapp: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ILaunchSourceAppUserModelId_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILaunchSourceAppUserModelId_Impl::GetAppUserModelId(this) {
                Ok(ok__) => {
                    launchingapp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetAppUserModelId: GetAppUserModelId::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchSourceAppUserModelId as windows_core::Interface>::IID
    }
}
pub trait ILaunchSourceViewSizePreference_Impl: Sized {
    fn GetSourceViewToPosition(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn GetSourceViewSizePreference(&self) -> windows_core::Result<APPLICATION_VIEW_SIZE_PREFERENCE>;
}
impl windows_core::RuntimeName for ILaunchSourceViewSizePreference {}
impl ILaunchSourceViewSizePreference_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILaunchSourceViewSizePreference_Vtbl
    where
        Identity: ILaunchSourceViewSizePreference_Impl,
    {
        unsafe extern "system" fn GetSourceViewToPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ILaunchSourceViewSizePreference_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILaunchSourceViewSizePreference_Impl::GetSourceViewToPosition(this) {
                Ok(ok__) => {
                    hwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceViewSizePreference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourcesizeafterlaunch: *mut APPLICATION_VIEW_SIZE_PREFERENCE) -> windows_core::HRESULT
        where
            Identity: ILaunchSourceViewSizePreference_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILaunchSourceViewSizePreference_Impl::GetSourceViewSizePreference(this) {
                Ok(ok__) => {
                    sourcesizeafterlaunch.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSourceViewToPosition: GetSourceViewToPosition::<Identity, OFFSET>,
            GetSourceViewSizePreference: GetSourceViewSizePreference::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchSourceViewSizePreference as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ILaunchTargetMonitor_Impl: Sized {
    fn GetMonitor(&self) -> windows_core::Result<super::super::Graphics::Gdi::HMONITOR>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ILaunchTargetMonitor {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ILaunchTargetMonitor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILaunchTargetMonitor_Vtbl
    where
        Identity: ILaunchTargetMonitor_Impl,
    {
        unsafe extern "system" fn GetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitor: *mut super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: ILaunchTargetMonitor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILaunchTargetMonitor_Impl::GetMonitor(this) {
                Ok(ok__) => {
                    monitor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetMonitor: GetMonitor::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchTargetMonitor as windows_core::Interface>::IID
    }
}
pub trait ILaunchTargetViewSizePreference_Impl: Sized {
    fn GetTargetViewSizePreference(&self) -> windows_core::Result<APPLICATION_VIEW_SIZE_PREFERENCE>;
}
impl windows_core::RuntimeName for ILaunchTargetViewSizePreference {}
impl ILaunchTargetViewSizePreference_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILaunchTargetViewSizePreference_Vtbl
    where
        Identity: ILaunchTargetViewSizePreference_Impl,
    {
        unsafe extern "system" fn GetTargetViewSizePreference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, targetsizeonlaunch: *mut APPLICATION_VIEW_SIZE_PREFERENCE) -> windows_core::HRESULT
        where
            Identity: ILaunchTargetViewSizePreference_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILaunchTargetViewSizePreference_Impl::GetTargetViewSizePreference(this) {
                Ok(ok__) => {
                    targetsizeonlaunch.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetTargetViewSizePreference: GetTargetViewSizePreference::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchTargetViewSizePreference as windows_core::Interface>::IID
    }
}
pub trait ILaunchUIContext_Impl: Sized {
    fn SetAssociatedWindow(&self, value: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetTabGroupingPreference(&self, value: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ILaunchUIContext {}
impl ILaunchUIContext_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILaunchUIContext_Vtbl
    where
        Identity: ILaunchUIContext_Impl,
    {
        unsafe extern "system" fn SetAssociatedWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ILaunchUIContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILaunchUIContext_Impl::SetAssociatedWindow(this, core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetTabGroupingPreference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: u32) -> windows_core::HRESULT
        where
            Identity: ILaunchUIContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILaunchUIContext_Impl::SetTabGroupingPreference(this, core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAssociatedWindow: SetAssociatedWindow::<Identity, OFFSET>,
            SetTabGroupingPreference: SetTabGroupingPreference::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchUIContext as windows_core::Interface>::IID
    }
}
pub trait ILaunchUIContextProvider_Impl: Sized {
    fn UpdateContext(&self, context: Option<&ILaunchUIContext>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ILaunchUIContextProvider {}
impl ILaunchUIContextProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILaunchUIContextProvider_Vtbl
    where
        Identity: ILaunchUIContextProvider_Impl,
    {
        unsafe extern "system" fn UpdateContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ILaunchUIContextProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILaunchUIContextProvider_Impl::UpdateContext(this, windows_core::from_raw_borrowed(&context)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), UpdateContext: UpdateContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchUIContextProvider as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IMenuBand_Impl: Sized {
    fn IsMenuMessage(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn TranslateMenuMessage(&self, pmsg: *mut super::WindowsAndMessaging::MSG, plret: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IMenuBand {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IMenuBand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMenuBand_Vtbl
    where
        Identity: IMenuBand_Impl,
    {
        unsafe extern "system" fn IsMenuMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IMenuBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMenuBand_Impl::IsMenuMessage(this, core::mem::transmute_copy(&pmsg)).into()
        }
        unsafe extern "system" fn TranslateMenuMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *mut super::WindowsAndMessaging::MSG, plret: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT
        where
            Identity: IMenuBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMenuBand_Impl::TranslateMenuMessage(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&plret)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsMenuMessage: IsMenuMessage::<Identity, OFFSET>,
            TranslateMenuMessage: TranslateMenuMessage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMenuBand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IMenuPopup_Impl: Sized + IDeskBar_Impl {
    fn Popup(&self, ppt: *const super::super::Foundation::POINTL, prcexclude: *const super::super::Foundation::RECTL, dwflags: i32) -> windows_core::Result<()>;
    fn OnSelect(&self, dwselecttype: u32) -> windows_core::Result<()>;
    fn SetSubMenu(&self, pmp: Option<&IMenuPopup>, fset: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IMenuPopup {}
#[cfg(feature = "Win32_System_Ole")]
impl IMenuPopup_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMenuPopup_Vtbl
    where
        Identity: IMenuPopup_Impl,
    {
        unsafe extern "system" fn Popup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINTL, prcexclude: *const super::super::Foundation::RECTL, dwflags: i32) -> windows_core::HRESULT
        where
            Identity: IMenuPopup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMenuPopup_Impl::Popup(this, core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&prcexclude), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn OnSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwselecttype: u32) -> windows_core::HRESULT
        where
            Identity: IMenuPopup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMenuPopup_Impl::OnSelect(this, core::mem::transmute_copy(&dwselecttype)).into()
        }
        unsafe extern "system" fn SetSubMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmp: *mut core::ffi::c_void, fset: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMenuPopup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMenuPopup_Impl::SetSubMenu(this, windows_core::from_raw_borrowed(&pmp), core::mem::transmute_copy(&fset)).into()
        }
        Self {
            base__: IDeskBar_Vtbl::new::<Identity, OFFSET>(),
            Popup: Popup::<Identity, OFFSET>,
            OnSelect: OnSelect::<Identity, OFFSET>,
            SetSubMenu: SetSubMenu::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMenuPopup as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IDeskBar as windows_core::Interface>::IID
    }
}
pub trait IModalWindow_Impl: Sized {
    fn Show(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IModalWindow {}
impl IModalWindow_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IModalWindow_Vtbl
    where
        Identity: IModalWindow_Impl,
    {
        unsafe extern "system" fn Show<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IModalWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IModalWindow_Impl::Show(this, core::mem::transmute_copy(&hwndowner)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Show: Show::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModalWindow as windows_core::Interface>::IID
    }
}
pub trait INameSpaceTreeAccessible_Impl: Sized {
    fn OnGetDefaultAccessibilityAction(&self, psi: Option<&IShellItem>) -> windows_core::Result<windows_core::BSTR>;
    fn OnDoDefaultAccessibilityAction(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnGetAccessibilityRole(&self, psi: Option<&IShellItem>) -> windows_core::Result<windows_core::VARIANT>;
}
impl windows_core::RuntimeName for INameSpaceTreeAccessible {}
impl INameSpaceTreeAccessible_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeAccessible_Vtbl
    where
        Identity: INameSpaceTreeAccessible_Impl,
    {
        unsafe extern "system" fn OnGetDefaultAccessibilityAction<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pbstrdefaultaction: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeAccessible_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeAccessible_Impl::OnGetDefaultAccessibilityAction(this, windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    pbstrdefaultaction.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnDoDefaultAccessibilityAction<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeAccessible_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeAccessible_Impl::OnDoDefaultAccessibilityAction(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnGetAccessibilityRole<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pvarrole: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeAccessible_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeAccessible_Impl::OnGetAccessibilityRole(this, windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    pvarrole.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnGetDefaultAccessibilityAction: OnGetDefaultAccessibilityAction::<Identity, OFFSET>,
            OnDoDefaultAccessibilityAction: OnDoDefaultAccessibilityAction::<Identity, OFFSET>,
            OnGetAccessibilityRole: OnGetAccessibilityRole::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeAccessible as windows_core::Interface>::IID
    }
}
pub trait INameSpaceTreeControl_Impl: Sized {
    fn Initialize(&self, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, nsctsflags: u32) -> windows_core::Result<()>;
    fn TreeAdvise(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<u32>;
    fn TreeUnadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn AppendRoot(&self, psiroot: Option<&IShellItem>, grfenumflags: u32, grfrootstyle: u32, pif: Option<&IShellItemFilter>) -> windows_core::Result<()>;
    fn InsertRoot(&self, iindex: i32, psiroot: Option<&IShellItem>, grfenumflags: u32, grfrootstyle: u32, pif: Option<&IShellItemFilter>) -> windows_core::Result<()>;
    fn RemoveRoot(&self, psiroot: Option<&IShellItem>) -> windows_core::Result<()>;
    fn RemoveAllRoots(&self) -> windows_core::Result<()>;
    fn GetRootItems(&self) -> windows_core::Result<IShellItemArray>;
    fn SetItemState(&self, psi: Option<&IShellItem>, nstcismask: u32, nstcisflags: u32) -> windows_core::Result<()>;
    fn GetItemState(&self, psi: Option<&IShellItem>, nstcismask: u32) -> windows_core::Result<u32>;
    fn GetSelectedItems(&self) -> windows_core::Result<IShellItemArray>;
    fn GetItemCustomState(&self, psi: Option<&IShellItem>) -> windows_core::Result<i32>;
    fn SetItemCustomState(&self, psi: Option<&IShellItem>, istatenumber: i32) -> windows_core::Result<()>;
    fn EnsureItemVisible(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn SetTheme(&self, psztheme: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetNextItem(&self, psi: Option<&IShellItem>, nstcgi: NSTCGNI) -> windows_core::Result<IShellItem>;
    fn HitTest(&self, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<IShellItem>;
    fn GetItemRect(&self, psi: Option<&IShellItem>) -> windows_core::Result<super::super::Foundation::RECT>;
    fn CollapseAll(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INameSpaceTreeControl {}
impl INameSpaceTreeControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeControl_Vtbl
    where
        Identity: INameSpaceTreeControl_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, nsctsflags: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::Initialize(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&nsctsflags)).into()
        }
        unsafe extern "system" fn TreeAdvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::TreeAdvise(this, windows_core::from_raw_borrowed(&punk)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TreeUnadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::TreeUnadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn AppendRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiroot: *mut core::ffi::c_void, grfenumflags: u32, grfrootstyle: u32, pif: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::AppendRoot(this, windows_core::from_raw_borrowed(&psiroot), core::mem::transmute_copy(&grfenumflags), core::mem::transmute_copy(&grfrootstyle), windows_core::from_raw_borrowed(&pif)).into()
        }
        unsafe extern "system" fn InsertRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: i32, psiroot: *mut core::ffi::c_void, grfenumflags: u32, grfrootstyle: u32, pif: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::InsertRoot(this, core::mem::transmute_copy(&iindex), windows_core::from_raw_borrowed(&psiroot), core::mem::transmute_copy(&grfenumflags), core::mem::transmute_copy(&grfrootstyle), windows_core::from_raw_borrowed(&pif)).into()
        }
        unsafe extern "system" fn RemoveRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiroot: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::RemoveRoot(this, windows_core::from_raw_borrowed(&psiroot)).into()
        }
        unsafe extern "system" fn RemoveAllRoots<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::RemoveAllRoots(this).into()
        }
        unsafe extern "system" fn GetRootItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsiarootitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::GetRootItems(this) {
                Ok(ok__) => {
                    ppsiarootitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetItemState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, nstcisflags: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::SetItemState(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&nstcismask), core::mem::transmute_copy(&nstcisflags)).into()
        }
        unsafe extern "system" fn GetItemState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, pnstcisflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::GetItemState(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&nstcismask)) {
                Ok(ok__) => {
                    pnstcisflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectedItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiaitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::GetSelectedItems(this) {
                Ok(ok__) => {
                    psiaitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemCustomState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pistatenumber: *mut i32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::GetItemCustomState(this, windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    pistatenumber.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetItemCustomState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, istatenumber: i32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::SetItemCustomState(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&istatenumber)).into()
        }
        unsafe extern "system" fn EnsureItemVisible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::EnsureItemVisible(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn SetTheme<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztheme: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::SetTheme(this, core::mem::transmute(&psztheme)).into()
        }
        unsafe extern "system" fn GetNextItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcgi: NSTCGNI, ppsinext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::GetNextItem(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&nstcgi)) {
                Ok(ok__) => {
                    ppsinext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HitTest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, ppsiout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::HitTest(this, core::mem::transmute_copy(&ppt)) {
                Ok(ok__) => {
                    ppsiout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, prect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl_Impl::GetItemRect(this, windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CollapseAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl_Impl::CollapseAll(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            TreeAdvise: TreeAdvise::<Identity, OFFSET>,
            TreeUnadvise: TreeUnadvise::<Identity, OFFSET>,
            AppendRoot: AppendRoot::<Identity, OFFSET>,
            InsertRoot: InsertRoot::<Identity, OFFSET>,
            RemoveRoot: RemoveRoot::<Identity, OFFSET>,
            RemoveAllRoots: RemoveAllRoots::<Identity, OFFSET>,
            GetRootItems: GetRootItems::<Identity, OFFSET>,
            SetItemState: SetItemState::<Identity, OFFSET>,
            GetItemState: GetItemState::<Identity, OFFSET>,
            GetSelectedItems: GetSelectedItems::<Identity, OFFSET>,
            GetItemCustomState: GetItemCustomState::<Identity, OFFSET>,
            SetItemCustomState: SetItemCustomState::<Identity, OFFSET>,
            EnsureItemVisible: EnsureItemVisible::<Identity, OFFSET>,
            SetTheme: SetTheme::<Identity, OFFSET>,
            GetNextItem: GetNextItem::<Identity, OFFSET>,
            HitTest: HitTest::<Identity, OFFSET>,
            GetItemRect: GetItemRect::<Identity, OFFSET>,
            CollapseAll: CollapseAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControl as windows_core::Interface>::IID
    }
}
pub trait INameSpaceTreeControl2_Impl: Sized + INameSpaceTreeControl_Impl {
    fn SetControlStyle(&self, nstcsmask: u32, nstcsstyle: u32) -> windows_core::Result<()>;
    fn GetControlStyle(&self, nstcsmask: u32) -> windows_core::Result<u32>;
    fn SetControlStyle2(&self, nstcsmask: NSTCSTYLE2, nstcsstyle: NSTCSTYLE2) -> windows_core::Result<()>;
    fn GetControlStyle2(&self, nstcsmask: NSTCSTYLE2) -> windows_core::Result<NSTCSTYLE2>;
}
impl windows_core::RuntimeName for INameSpaceTreeControl2 {}
impl INameSpaceTreeControl2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeControl2_Vtbl
    where
        Identity: INameSpaceTreeControl2_Impl,
    {
        unsafe extern "system" fn SetControlStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: u32, nstcsstyle: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl2_Impl::SetControlStyle(this, core::mem::transmute_copy(&nstcsmask), core::mem::transmute_copy(&nstcsstyle)).into()
        }
        unsafe extern "system" fn GetControlStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: u32, pnstcsstyle: *mut u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl2_Impl::GetControlStyle(this, core::mem::transmute_copy(&nstcsmask)) {
                Ok(ok__) => {
                    pnstcsstyle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetControlStyle2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: NSTCSTYLE2, nstcsstyle: NSTCSTYLE2) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControl2_Impl::SetControlStyle2(this, core::mem::transmute_copy(&nstcsmask), core::mem::transmute_copy(&nstcsstyle)).into()
        }
        unsafe extern "system" fn GetControlStyle2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: NSTCSTYLE2, pnstcsstyle: *mut NSTCSTYLE2) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControl2_Impl::GetControlStyle2(this, core::mem::transmute_copy(&nstcsmask)) {
                Ok(ok__) => {
                    pnstcsstyle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: INameSpaceTreeControl_Vtbl::new::<Identity, OFFSET>(),
            SetControlStyle: SetControlStyle::<Identity, OFFSET>,
            GetControlStyle: GetControlStyle::<Identity, OFFSET>,
            SetControlStyle2: SetControlStyle2::<Identity, OFFSET>,
            GetControlStyle2: GetControlStyle2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControl2 as windows_core::Interface>::IID || iid == &<INameSpaceTreeControl as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
pub trait INameSpaceTreeControlCustomDraw_Impl: Sized {
    fn PrePaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::LRESULT>;
    fn PostPaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn ItemPrePaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW, pclrtext: *mut super::super::Foundation::COLORREF, pclrtextbk: *mut super::super::Foundation::COLORREF, plres: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
    fn ItemPostPaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
impl windows_core::RuntimeName for INameSpaceTreeControlCustomDraw {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
impl INameSpaceTreeControlCustomDraw_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeControlCustomDraw_Vtbl
    where
        Identity: INameSpaceTreeControlCustomDraw_Impl,
    {
        unsafe extern "system" fn PrePaint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, plres: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlCustomDraw_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControlCustomDraw_Impl::PrePaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc)) {
                Ok(ok__) => {
                    plres.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PostPaint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlCustomDraw_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlCustomDraw_Impl::PostPaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc)).into()
        }
        unsafe extern "system" fn ItemPrePaint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW, pclrtext: *mut super::super::Foundation::COLORREF, pclrtextbk: *mut super::super::Foundation::COLORREF, plres: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlCustomDraw_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlCustomDraw_Impl::ItemPrePaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&pnstccditem), core::mem::transmute_copy(&pclrtext), core::mem::transmute_copy(&pclrtextbk), core::mem::transmute_copy(&plres)).into()
        }
        unsafe extern "system" fn ItemPostPaint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlCustomDraw_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlCustomDraw_Impl::ItemPostPaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&pnstccditem)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PrePaint: PrePaint::<Identity, OFFSET>,
            PostPaint: PostPaint::<Identity, OFFSET>,
            ItemPrePaint: ItemPrePaint::<Identity, OFFSET>,
            ItemPostPaint: ItemPostPaint::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlCustomDraw as windows_core::Interface>::IID
    }
}
pub trait INameSpaceTreeControlDropHandler_Impl: Sized {
    fn OnDragEnter(&self, psiover: Option<&IShellItem>, psiadata: Option<&IShellItemArray>, foutsidesource: super::super::Foundation::BOOL, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>;
    fn OnDragOver(&self, psiover: Option<&IShellItem>, psiadata: Option<&IShellItemArray>, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>;
    fn OnDragPosition(&self, psiover: Option<&IShellItem>, psiadata: Option<&IShellItemArray>, inewposition: i32, ioldposition: i32) -> windows_core::Result<()>;
    fn OnDrop(&self, psiover: Option<&IShellItem>, psiadata: Option<&IShellItemArray>, iposition: i32, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>;
    fn OnDropPosition(&self, psiover: Option<&IShellItem>, psiadata: Option<&IShellItemArray>, inewposition: i32, ioldposition: i32) -> windows_core::Result<()>;
    fn OnDragLeave(&self, psiover: Option<&IShellItem>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INameSpaceTreeControlDropHandler {}
impl INameSpaceTreeControlDropHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeControlDropHandler_Vtbl
    where
        Identity: INameSpaceTreeControlDropHandler_Impl,
    {
        unsafe extern "system" fn OnDragEnter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, foutsidesource: super::super::Foundation::BOOL, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlDropHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlDropHandler_Impl::OnDragEnter(this, windows_core::from_raw_borrowed(&psiover), windows_core::from_raw_borrowed(&psiadata), core::mem::transmute_copy(&foutsidesource), core::mem::transmute_copy(&grfkeystate), core::mem::transmute_copy(&pdweffect)).into()
        }
        unsafe extern "system" fn OnDragOver<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlDropHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlDropHandler_Impl::OnDragOver(this, windows_core::from_raw_borrowed(&psiover), windows_core::from_raw_borrowed(&psiadata), core::mem::transmute_copy(&grfkeystate), core::mem::transmute_copy(&pdweffect)).into()
        }
        unsafe extern "system" fn OnDragPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, inewposition: i32, ioldposition: i32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlDropHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlDropHandler_Impl::OnDragPosition(this, windows_core::from_raw_borrowed(&psiover), windows_core::from_raw_borrowed(&psiadata), core::mem::transmute_copy(&inewposition), core::mem::transmute_copy(&ioldposition)).into()
        }
        unsafe extern "system" fn OnDrop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, iposition: i32, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlDropHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlDropHandler_Impl::OnDrop(this, windows_core::from_raw_borrowed(&psiover), windows_core::from_raw_borrowed(&psiadata), core::mem::transmute_copy(&iposition), core::mem::transmute_copy(&grfkeystate), core::mem::transmute_copy(&pdweffect)).into()
        }
        unsafe extern "system" fn OnDropPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, inewposition: i32, ioldposition: i32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlDropHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlDropHandler_Impl::OnDropPosition(this, windows_core::from_raw_borrowed(&psiover), windows_core::from_raw_borrowed(&psiadata), core::mem::transmute_copy(&inewposition), core::mem::transmute_copy(&ioldposition)).into()
        }
        unsafe extern "system" fn OnDragLeave<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlDropHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlDropHandler_Impl::OnDragLeave(this, windows_core::from_raw_borrowed(&psiover)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnDragEnter: OnDragEnter::<Identity, OFFSET>,
            OnDragOver: OnDragOver::<Identity, OFFSET>,
            OnDragPosition: OnDragPosition::<Identity, OFFSET>,
            OnDrop: OnDrop::<Identity, OFFSET>,
            OnDropPosition: OnDropPosition::<Identity, OFFSET>,
            OnDragLeave: OnDragLeave::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlDropHandler as windows_core::Interface>::IID
    }
}
pub trait INameSpaceTreeControlEvents_Impl: Sized {
    fn OnItemClick(&self, psi: Option<&IShellItem>, nstcehittest: u32, nstceclicktype: u32) -> windows_core::Result<()>;
    fn OnPropertyItemCommit(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnItemStateChanging(&self, psi: Option<&IShellItem>, nstcismask: u32, nstcisstate: u32) -> windows_core::Result<()>;
    fn OnItemStateChanged(&self, psi: Option<&IShellItem>, nstcismask: u32, nstcisstate: u32) -> windows_core::Result<()>;
    fn OnSelectionChanged(&self, psiaselection: Option<&IShellItemArray>) -> windows_core::Result<()>;
    fn OnKeyboardInput(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn OnBeforeExpand(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnAfterExpand(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnBeginLabelEdit(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnEndLabelEdit(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnGetToolTip(&self, psi: Option<&IShellItem>, psztip: windows_core::PWSTR, cchtip: i32) -> windows_core::Result<()>;
    fn OnBeforeItemDelete(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnItemAdded(&self, psi: Option<&IShellItem>, fisroot: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn OnItemDeleted(&self, psi: Option<&IShellItem>, fisroot: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn OnBeforeContextMenu(&self, psi: Option<&IShellItem>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn OnAfterContextMenu(&self, psi: Option<&IShellItem>, pcmin: Option<&IContextMenu>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn OnBeforeStateImageChange(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn OnGetDefaultIconIndex(&self, psi: Option<&IShellItem>, pidefaulticon: *mut i32, piopenicon: *mut i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INameSpaceTreeControlEvents {}
impl INameSpaceTreeControlEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeControlEvents_Vtbl
    where
        Identity: INameSpaceTreeControlEvents_Impl,
    {
        unsafe extern "system" fn OnItemClick<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcehittest: u32, nstceclicktype: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnItemClick(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&nstcehittest), core::mem::transmute_copy(&nstceclicktype)).into()
        }
        unsafe extern "system" fn OnPropertyItemCommit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnPropertyItemCommit(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnItemStateChanging<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, nstcisstate: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnItemStateChanging(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&nstcismask), core::mem::transmute_copy(&nstcisstate)).into()
        }
        unsafe extern "system" fn OnItemStateChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, nstcisstate: u32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnItemStateChanged(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&nstcismask), core::mem::transmute_copy(&nstcisstate)).into()
        }
        unsafe extern "system" fn OnSelectionChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiaselection: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnSelectionChanged(this, windows_core::from_raw_borrowed(&psiaselection)).into()
        }
        unsafe extern "system" fn OnKeyboardInput<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnKeyboardInput(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        unsafe extern "system" fn OnBeforeExpand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnBeforeExpand(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnAfterExpand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnAfterExpand(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnBeginLabelEdit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnBeginLabelEdit(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnEndLabelEdit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnEndLabelEdit(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnGetToolTip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, psztip: windows_core::PWSTR, cchtip: i32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnGetToolTip(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&psztip), core::mem::transmute_copy(&cchtip)).into()
        }
        unsafe extern "system" fn OnBeforeItemDelete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnBeforeItemDelete(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnItemAdded<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, fisroot: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnItemAdded(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&fisroot)).into()
        }
        unsafe extern "system" fn OnItemDeleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, fisroot: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnItemDeleted(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&fisroot)).into()
        }
        unsafe extern "system" fn OnBeforeContextMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnBeforeContextMenu(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn OnAfterContextMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pcmin: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnAfterContextMenu(this, windows_core::from_raw_borrowed(&psi), windows_core::from_raw_borrowed(&pcmin), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn OnBeforeStateImageChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnBeforeStateImageChange(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn OnGetDefaultIconIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pidefaulticon: *mut i32, piopenicon: *mut i32) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INameSpaceTreeControlEvents_Impl::OnGetDefaultIconIndex(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&pidefaulticon), core::mem::transmute_copy(&piopenicon)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnItemClick: OnItemClick::<Identity, OFFSET>,
            OnPropertyItemCommit: OnPropertyItemCommit::<Identity, OFFSET>,
            OnItemStateChanging: OnItemStateChanging::<Identity, OFFSET>,
            OnItemStateChanged: OnItemStateChanged::<Identity, OFFSET>,
            OnSelectionChanged: OnSelectionChanged::<Identity, OFFSET>,
            OnKeyboardInput: OnKeyboardInput::<Identity, OFFSET>,
            OnBeforeExpand: OnBeforeExpand::<Identity, OFFSET>,
            OnAfterExpand: OnAfterExpand::<Identity, OFFSET>,
            OnBeginLabelEdit: OnBeginLabelEdit::<Identity, OFFSET>,
            OnEndLabelEdit: OnEndLabelEdit::<Identity, OFFSET>,
            OnGetToolTip: OnGetToolTip::<Identity, OFFSET>,
            OnBeforeItemDelete: OnBeforeItemDelete::<Identity, OFFSET>,
            OnItemAdded: OnItemAdded::<Identity, OFFSET>,
            OnItemDeleted: OnItemDeleted::<Identity, OFFSET>,
            OnBeforeContextMenu: OnBeforeContextMenu::<Identity, OFFSET>,
            OnAfterContextMenu: OnAfterContextMenu::<Identity, OFFSET>,
            OnBeforeStateImageChange: OnBeforeStateImageChange::<Identity, OFFSET>,
            OnGetDefaultIconIndex: OnGetDefaultIconIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlEvents as windows_core::Interface>::IID
    }
}
pub trait INameSpaceTreeControlFolderCapabilities_Impl: Sized {
    fn GetFolderCapabilities(&self, nfcmask: NSTCFOLDERCAPABILITIES) -> windows_core::Result<NSTCFOLDERCAPABILITIES>;
}
impl windows_core::RuntimeName for INameSpaceTreeControlFolderCapabilities {}
impl INameSpaceTreeControlFolderCapabilities_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INameSpaceTreeControlFolderCapabilities_Vtbl
    where
        Identity: INameSpaceTreeControlFolderCapabilities_Impl,
    {
        unsafe extern "system" fn GetFolderCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nfcmask: NSTCFOLDERCAPABILITIES, pnfcvalue: *mut NSTCFOLDERCAPABILITIES) -> windows_core::HRESULT
        where
            Identity: INameSpaceTreeControlFolderCapabilities_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INameSpaceTreeControlFolderCapabilities_Impl::GetFolderCapabilities(this, core::mem::transmute_copy(&nfcmask)) {
                Ok(ok__) => {
                    pnfcvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetFolderCapabilities: GetFolderCapabilities::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlFolderCapabilities as windows_core::Interface>::IID
    }
}
pub trait INamedPropertyBag_Impl: Sized {
    fn ReadPropertyNPB(&self, pszbagname: &windows_core::PCWSTR, pszpropname: &windows_core::PCWSTR, pvar: *mut windows_core::PROPVARIANT) -> windows_core::Result<()>;
    fn WritePropertyNPB(&self, pszbagname: &windows_core::PCWSTR, pszpropname: &windows_core::PCWSTR, pvar: *const windows_core::PROPVARIANT) -> windows_core::Result<()>;
    fn RemovePropertyNPB(&self, pszbagname: &windows_core::PCWSTR, pszpropname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INamedPropertyBag {}
impl INamedPropertyBag_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INamedPropertyBag_Vtbl
    where
        Identity: INamedPropertyBag_Impl,
    {
        unsafe extern "system" fn ReadPropertyNPB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszbagname: windows_core::PCWSTR, pszpropname: windows_core::PCWSTR, pvar: *mut core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: INamedPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamedPropertyBag_Impl::ReadPropertyNPB(this, core::mem::transmute(&pszbagname), core::mem::transmute(&pszpropname), core::mem::transmute_copy(&pvar)).into()
        }
        unsafe extern "system" fn WritePropertyNPB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszbagname: windows_core::PCWSTR, pszpropname: windows_core::PCWSTR, pvar: *const core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: INamedPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamedPropertyBag_Impl::WritePropertyNPB(this, core::mem::transmute(&pszbagname), core::mem::transmute(&pszpropname), core::mem::transmute_copy(&pvar)).into()
        }
        unsafe extern "system" fn RemovePropertyNPB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszbagname: windows_core::PCWSTR, pszpropname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: INamedPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamedPropertyBag_Impl::RemovePropertyNPB(this, core::mem::transmute(&pszbagname), core::mem::transmute(&pszpropname)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadPropertyNPB: ReadPropertyNPB::<Identity, OFFSET>,
            WritePropertyNPB: WritePropertyNPB::<Identity, OFFSET>,
            RemovePropertyNPB: RemovePropertyNPB::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamedPropertyBag as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INamespaceWalk_Impl: Sized {
    fn Walk(&self, punktowalk: Option<&windows_core::IUnknown>, dwflags: u32, cdepth: i32, pnswcb: Option<&INamespaceWalkCB>) -> windows_core::Result<()>;
    fn GetIDArrayResult(&self, pcitems: *mut u32, prgpidl: *mut *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INamespaceWalk {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INamespaceWalk_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INamespaceWalk_Vtbl
    where
        Identity: INamespaceWalk_Impl,
    {
        unsafe extern "system" fn Walk<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punktowalk: *mut core::ffi::c_void, dwflags: u32, cdepth: i32, pnswcb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INamespaceWalk_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalk_Impl::Walk(this, windows_core::from_raw_borrowed(&punktowalk), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&cdepth), windows_core::from_raw_borrowed(&pnswcb)).into()
        }
        unsafe extern "system" fn GetIDArrayResult<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcitems: *mut u32, prgpidl: *mut *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: INamespaceWalk_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalk_Impl::GetIDArrayResult(this, core::mem::transmute_copy(&pcitems), core::mem::transmute_copy(&prgpidl)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Walk: Walk::<Identity, OFFSET>,
            GetIDArrayResult: GetIDArrayResult::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamespaceWalk as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INamespaceWalkCB_Impl: Sized {
    fn FoundItem(&self, psf: Option<&IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn EnterFolder(&self, psf: Option<&IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn LeaveFolder(&self, psf: Option<&IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn InitializeProgressDialog(&self, ppsztitle: *mut windows_core::PWSTR, ppszcancel: *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INamespaceWalkCB {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INamespaceWalkCB_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INamespaceWalkCB_Vtbl
    where
        Identity: INamespaceWalkCB_Impl,
    {
        unsafe extern "system" fn FoundItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: INamespaceWalkCB_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalkCB_Impl::FoundItem(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn EnterFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: INamespaceWalkCB_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalkCB_Impl::EnterFolder(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn LeaveFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: INamespaceWalkCB_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalkCB_Impl::LeaveFolder(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn InitializeProgressDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztitle: *mut windows_core::PWSTR, ppszcancel: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: INamespaceWalkCB_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalkCB_Impl::InitializeProgressDialog(this, core::mem::transmute_copy(&ppsztitle), core::mem::transmute_copy(&ppszcancel)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FoundItem: FoundItem::<Identity, OFFSET>,
            EnterFolder: EnterFolder::<Identity, OFFSET>,
            LeaveFolder: LeaveFolder::<Identity, OFFSET>,
            InitializeProgressDialog: InitializeProgressDialog::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamespaceWalkCB as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INamespaceWalkCB2_Impl: Sized + INamespaceWalkCB_Impl {
    fn WalkComplete(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INamespaceWalkCB2 {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INamespaceWalkCB2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INamespaceWalkCB2_Vtbl
    where
        Identity: INamespaceWalkCB2_Impl,
    {
        unsafe extern "system" fn WalkComplete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: INamespaceWalkCB2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INamespaceWalkCB2_Impl::WalkComplete(this, core::mem::transmute_copy(&hr)).into()
        }
        Self { base__: INamespaceWalkCB_Vtbl::new::<Identity, OFFSET>(), WalkComplete: WalkComplete::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamespaceWalkCB2 as windows_core::Interface>::IID || iid == &<INamespaceWalkCB as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INetworkFolderInternal_Impl: Sized {
    fn GetResourceDisplayType(&self) -> windows_core::Result<u32>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn GetProvider(&self, itemidcount: u32, itemids: *const *const Common::ITEMIDLIST, providermaxlength: u32, provider: windows_core::PWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INetworkFolderInternal {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INetworkFolderInternal_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INetworkFolderInternal_Vtbl
    where
        Identity: INetworkFolderInternal_Impl,
    {
        unsafe extern "system" fn GetResourceDisplayType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, displaytype: *mut u32) -> windows_core::HRESULT
        where
            Identity: INetworkFolderInternal_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INetworkFolderInternal_Impl::GetResourceDisplayType(this) {
                Ok(ok__) => {
                    displaytype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idlist: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: INetworkFolderInternal_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INetworkFolderInternal_Impl::GetIDList(this) {
                Ok(ok__) => {
                    idlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProvider<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itemidcount: u32, itemids: *const *const Common::ITEMIDLIST, providermaxlength: u32, provider: windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: INetworkFolderInternal_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INetworkFolderInternal_Impl::GetProvider(this, core::mem::transmute_copy(&itemidcount), core::mem::transmute_copy(&itemids), core::mem::transmute_copy(&providermaxlength), core::mem::transmute_copy(&provider)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetResourceDisplayType: GetResourceDisplayType::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            GetProvider: GetProvider::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INetworkFolderInternal as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INewMenuClient_Impl: Sized {
    fn IncludeItems(&self) -> windows_core::Result<i32>;
    fn SelectAndEditItem(&self, pidlitem: *const Common::ITEMIDLIST, flags: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INewMenuClient {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INewMenuClient_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INewMenuClient_Vtbl
    where
        Identity: INewMenuClient_Impl,
    {
        unsafe extern "system" fn IncludeItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: INewMenuClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INewMenuClient_Impl::IncludeItems(this) {
                Ok(ok__) => {
                    pflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectAndEditItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlitem: *const Common::ITEMIDLIST, flags: i32) -> windows_core::HRESULT
        where
            Identity: INewMenuClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewMenuClient_Impl::SelectAndEditItem(this, core::mem::transmute_copy(&pidlitem), core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IncludeItems: IncludeItems::<Identity, OFFSET>,
            SelectAndEditItem: SelectAndEditItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewMenuClient as windows_core::Interface>::IID
    }
}
pub trait INewShortcutHookA_Impl: Sized {
    fn SetReferent(&self, pcszreferent: &windows_core::PCSTR, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetReferent(&self, pszreferent: windows_core::PSTR, cchreferent: i32) -> windows_core::Result<()>;
    fn SetFolder(&self, pcszfolder: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetFolder(&self, pszfolder: windows_core::PSTR, cchfolder: i32) -> windows_core::Result<()>;
    fn GetName(&self, pszname: windows_core::PSTR, cchname: i32) -> windows_core::Result<()>;
    fn GetExtension(&self, pszextension: windows_core::PSTR, cchextension: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INewShortcutHookA {}
impl INewShortcutHookA_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INewShortcutHookA_Vtbl
    where
        Identity: INewShortcutHookA_Impl,
    {
        unsafe extern "system" fn SetReferent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszreferent: windows_core::PCSTR, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookA_Impl::SetReferent(this, core::mem::transmute(&pcszreferent), core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetReferent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszreferent: windows_core::PSTR, cchreferent: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookA_Impl::GetReferent(this, core::mem::transmute_copy(&pszreferent), core::mem::transmute_copy(&cchreferent)).into()
        }
        unsafe extern "system" fn SetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszfolder: windows_core::PCSTR) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookA_Impl::SetFolder(this, core::mem::transmute(&pcszfolder)).into()
        }
        unsafe extern "system" fn GetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfolder: windows_core::PSTR, cchfolder: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookA_Impl::GetFolder(this, core::mem::transmute_copy(&pszfolder), core::mem::transmute_copy(&cchfolder)).into()
        }
        unsafe extern "system" fn GetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PSTR, cchname: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookA_Impl::GetName(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
        }
        unsafe extern "system" fn GetExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszextension: windows_core::PSTR, cchextension: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookA_Impl::GetExtension(this, core::mem::transmute_copy(&pszextension), core::mem::transmute_copy(&cchextension)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetReferent: SetReferent::<Identity, OFFSET>,
            GetReferent: GetReferent::<Identity, OFFSET>,
            SetFolder: SetFolder::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetExtension: GetExtension::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewShortcutHookA as windows_core::Interface>::IID
    }
}
pub trait INewShortcutHookW_Impl: Sized {
    fn SetReferent(&self, pcszreferent: &windows_core::PCWSTR, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetReferent(&self, pszreferent: windows_core::PWSTR, cchreferent: i32) -> windows_core::Result<()>;
    fn SetFolder(&self, pcszfolder: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetFolder(&self, pszfolder: windows_core::PWSTR, cchfolder: i32) -> windows_core::Result<()>;
    fn GetName(&self, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::Result<()>;
    fn GetExtension(&self, pszextension: windows_core::PWSTR, cchextension: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INewShortcutHookW {}
impl INewShortcutHookW_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INewShortcutHookW_Vtbl
    where
        Identity: INewShortcutHookW_Impl,
    {
        unsafe extern "system" fn SetReferent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszreferent: windows_core::PCWSTR, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookW_Impl::SetReferent(this, core::mem::transmute(&pcszreferent), core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetReferent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszreferent: windows_core::PWSTR, cchreferent: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookW_Impl::GetReferent(this, core::mem::transmute_copy(&pszreferent), core::mem::transmute_copy(&cchreferent)).into()
        }
        unsafe extern "system" fn SetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszfolder: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookW_Impl::SetFolder(this, core::mem::transmute(&pcszfolder)).into()
        }
        unsafe extern "system" fn GetFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfolder: windows_core::PWSTR, cchfolder: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookW_Impl::GetFolder(this, core::mem::transmute_copy(&pszfolder), core::mem::transmute_copy(&cchfolder)).into()
        }
        unsafe extern "system" fn GetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookW_Impl::GetName(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
        }
        unsafe extern "system" fn GetExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszextension: windows_core::PWSTR, cchextension: i32) -> windows_core::HRESULT
        where
            Identity: INewShortcutHookW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewShortcutHookW_Impl::GetExtension(this, core::mem::transmute_copy(&pszextension), core::mem::transmute_copy(&cchextension)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetReferent: SetReferent::<Identity, OFFSET>,
            GetReferent: GetReferent::<Identity, OFFSET>,
            SetFolder: SetFolder::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetExtension: GetExtension::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewShortcutHookW as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait INewWDEvents_Impl: Sized + IWebWizardHost_Impl {
    fn PassportAuthenticate(&self, bstrsigninurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for INewWDEvents {}
#[cfg(feature = "Win32_System_Com")]
impl INewWDEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INewWDEvents_Vtbl
    where
        Identity: INewWDEvents_Impl,
    {
        unsafe extern "system" fn PassportAuthenticate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrsigninurl: core::mem::MaybeUninit<windows_core::BSTR>, pvfauthenitcated: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: INewWDEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match INewWDEvents_Impl::PassportAuthenticate(this, core::mem::transmute(&bstrsigninurl)) {
                Ok(ok__) => {
                    pvfauthenitcated.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IWebWizardHost_Vtbl::new::<Identity, OFFSET>(), PassportAuthenticate: PassportAuthenticate::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewWDEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebWizardHost as windows_core::Interface>::IID
    }
}
pub trait INewWindowManager_Impl: Sized {
    fn EvaluateNewWindow(&self, pszurl: &windows_core::PCWSTR, pszname: &windows_core::PCWSTR, pszurlcontext: &windows_core::PCWSTR, pszfeatures: &windows_core::PCWSTR, freplace: super::super::Foundation::BOOL, dwflags: u32, dwuseractiontime: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for INewWindowManager {}
impl INewWindowManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INewWindowManager_Vtbl
    where
        Identity: INewWindowManager_Impl,
    {
        unsafe extern "system" fn EvaluateNewWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PCWSTR, pszname: windows_core::PCWSTR, pszurlcontext: windows_core::PCWSTR, pszfeatures: windows_core::PCWSTR, freplace: super::super::Foundation::BOOL, dwflags: u32, dwuseractiontime: u32) -> windows_core::HRESULT
        where
            Identity: INewWindowManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INewWindowManager_Impl::EvaluateNewWindow(this, core::mem::transmute(&pszurl), core::mem::transmute(&pszname), core::mem::transmute(&pszurlcontext), core::mem::transmute(&pszfeatures), core::mem::transmute_copy(&freplace), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&dwuseractiontime)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), EvaluateNewWindow: EvaluateNewWindow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewWindowManager as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait INotifyReplica_Impl: Sized {
    fn YouAreAReplica(&self, ulcotherreplicas: u32, rgpmkotherreplicas: *mut Option<super::super::System::Com::IMoniker>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for INotifyReplica {}
#[cfg(feature = "Win32_System_Com")]
impl INotifyReplica_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> INotifyReplica_Vtbl
    where
        Identity: INotifyReplica_Impl,
    {
        unsafe extern "system" fn YouAreAReplica<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcotherreplicas: u32, rgpmkotherreplicas: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: INotifyReplica_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            INotifyReplica_Impl::YouAreAReplica(this, core::mem::transmute_copy(&ulcotherreplicas), core::mem::transmute_copy(&rgpmkotherreplicas)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), YouAreAReplica: YouAreAReplica::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INotifyReplica as windows_core::Interface>::IID
    }
}
pub trait IObjMgr_Impl: Sized {
    fn Append(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Remove(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IObjMgr {}
impl IObjMgr_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjMgr_Vtbl
    where
        Identity: IObjMgr_Impl,
    {
        unsafe extern "system" fn Append<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IObjMgr_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjMgr_Impl::Append(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IObjMgr_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjMgr_Impl::Remove(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Append: Append::<Identity, OFFSET>, Remove: Remove::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjMgr as windows_core::Interface>::IID
    }
}
pub trait IObjectProvider_Impl: Sized {
    fn QueryObject(&self, guidobject: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IObjectProvider {}
impl IObjectProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectProvider_Vtbl
    where
        Identity: IObjectProvider_Impl,
    {
        unsafe extern "system" fn QueryObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidobject: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IObjectProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectProvider_Impl::QueryObject(this, core::mem::transmute_copy(&guidobject), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvout)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryObject: QueryObject::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectProvider as windows_core::Interface>::IID
    }
}
pub trait IObjectWithAppUserModelID_Impl: Sized {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetAppID(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IObjectWithAppUserModelID {}
impl IObjectWithAppUserModelID_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectWithAppUserModelID_Vtbl
    where
        Identity: IObjectWithAppUserModelID_Impl,
    {
        unsafe extern "system" fn SetAppID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IObjectWithAppUserModelID_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectWithAppUserModelID_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
        }
        unsafe extern "system" fn GetAppID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszappid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IObjectWithAppUserModelID_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IObjectWithAppUserModelID_Impl::GetAppID(this) {
                Ok(ok__) => {
                    ppszappid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAppID: SetAppID::<Identity, OFFSET>, GetAppID: GetAppID::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithAppUserModelID as windows_core::Interface>::IID
    }
}
pub trait IObjectWithBackReferences_Impl: Sized {
    fn RemoveBackReferences(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IObjectWithBackReferences {}
impl IObjectWithBackReferences_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectWithBackReferences_Vtbl
    where
        Identity: IObjectWithBackReferences_Impl,
    {
        unsafe extern "system" fn RemoveBackReferences<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IObjectWithBackReferences_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectWithBackReferences_Impl::RemoveBackReferences(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RemoveBackReferences: RemoveBackReferences::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithBackReferences as windows_core::Interface>::IID
    }
}
pub trait IObjectWithCancelEvent_Impl: Sized {
    fn GetCancelEvent(&self) -> windows_core::Result<super::super::Foundation::HANDLE>;
}
impl windows_core::RuntimeName for IObjectWithCancelEvent {}
impl IObjectWithCancelEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectWithCancelEvent_Vtbl
    where
        Identity: IObjectWithCancelEvent_Impl,
    {
        unsafe extern "system" fn GetCancelEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phevent: *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IObjectWithCancelEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IObjectWithCancelEvent_Impl::GetCancelEvent(this) {
                Ok(ok__) => {
                    phevent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCancelEvent: GetCancelEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithCancelEvent as windows_core::Interface>::IID
    }
}
pub trait IObjectWithFolderEnumMode_Impl: Sized {
    fn SetMode(&self, femode: FOLDER_ENUM_MODE) -> windows_core::Result<()>;
    fn GetMode(&self) -> windows_core::Result<FOLDER_ENUM_MODE>;
}
impl windows_core::RuntimeName for IObjectWithFolderEnumMode {}
impl IObjectWithFolderEnumMode_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectWithFolderEnumMode_Vtbl
    where
        Identity: IObjectWithFolderEnumMode_Impl,
    {
        unsafe extern "system" fn SetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, femode: FOLDER_ENUM_MODE) -> windows_core::HRESULT
        where
            Identity: IObjectWithFolderEnumMode_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectWithFolderEnumMode_Impl::SetMode(this, core::mem::transmute_copy(&femode)).into()
        }
        unsafe extern "system" fn GetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfemode: *mut FOLDER_ENUM_MODE) -> windows_core::HRESULT
        where
            Identity: IObjectWithFolderEnumMode_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IObjectWithFolderEnumMode_Impl::GetMode(this) {
                Ok(ok__) => {
                    pfemode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetMode: SetMode::<Identity, OFFSET>, GetMode: GetMode::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithFolderEnumMode as windows_core::Interface>::IID
    }
}
pub trait IObjectWithProgID_Impl: Sized {
    fn SetProgID(&self, pszprogid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetProgID(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IObjectWithProgID {}
impl IObjectWithProgID_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectWithProgID_Vtbl
    where
        Identity: IObjectWithProgID_Impl,
    {
        unsafe extern "system" fn SetProgID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszprogid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IObjectWithProgID_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectWithProgID_Impl::SetProgID(this, core::mem::transmute(&pszprogid)).into()
        }
        unsafe extern "system" fn GetProgID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszprogid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IObjectWithProgID_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IObjectWithProgID_Impl::GetProgID(this) {
                Ok(ok__) => {
                    ppszprogid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetProgID: SetProgID::<Identity, OFFSET>,
            GetProgID: GetProgID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithProgID as windows_core::Interface>::IID
    }
}
pub trait IObjectWithSelection_Impl: Sized {
    fn SetSelection(&self, psia: Option<&IShellItemArray>) -> windows_core::Result<()>;
    fn GetSelection(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IObjectWithSelection {}
impl IObjectWithSelection_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IObjectWithSelection_Vtbl
    where
        Identity: IObjectWithSelection_Impl,
    {
        unsafe extern "system" fn SetSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psia: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IObjectWithSelection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectWithSelection_Impl::SetSelection(this, windows_core::from_raw_borrowed(&psia)).into()
        }
        unsafe extern "system" fn GetSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IObjectWithSelection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IObjectWithSelection_Impl::GetSelection(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetSelection: SetSelection::<Identity, OFFSET>,
            GetSelection: GetSelection::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithSelection as windows_core::Interface>::IID
    }
}
pub trait IOpenControlPanel_Impl: Sized {
    fn Open(&self, pszname: &windows_core::PCWSTR, pszpage: &windows_core::PCWSTR, punksite: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetPath(&self, pszname: &windows_core::PCWSTR, pszpath: windows_core::PWSTR, cchpath: u32) -> windows_core::Result<()>;
    fn GetCurrentView(&self) -> windows_core::Result<CPVIEW>;
}
impl windows_core::RuntimeName for IOpenControlPanel {}
impl IOpenControlPanel_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IOpenControlPanel_Vtbl
    where
        Identity: IOpenControlPanel_Impl,
    {
        unsafe extern "system" fn Open<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pszpage: windows_core::PCWSTR, punksite: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOpenControlPanel_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOpenControlPanel_Impl::Open(this, core::mem::transmute(&pszname), core::mem::transmute(&pszpage), windows_core::from_raw_borrowed(&punksite)).into()
        }
        unsafe extern "system" fn GetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pszpath: windows_core::PWSTR, cchpath: u32) -> windows_core::HRESULT
        where
            Identity: IOpenControlPanel_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOpenControlPanel_Impl::GetPath(this, core::mem::transmute(&pszname), core::mem::transmute_copy(&pszpath), core::mem::transmute_copy(&cchpath)).into()
        }
        unsafe extern "system" fn GetCurrentView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pview: *mut CPVIEW) -> windows_core::HRESULT
        where
            Identity: IOpenControlPanel_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IOpenControlPanel_Impl::GetCurrentView(this) {
                Ok(ok__) => {
                    pview.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Open: Open::<Identity, OFFSET>,
            GetPath: GetPath::<Identity, OFFSET>,
            GetCurrentView: GetCurrentView::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOpenControlPanel as windows_core::Interface>::IID
    }
}
pub trait IOpenSearchSource_Impl: Sized {
    fn GetResults(&self, hwnd: super::super::Foundation::HWND, pszquery: &windows_core::PCWSTR, dwstartindex: u32, dwcount: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IOpenSearchSource {}
impl IOpenSearchSource_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IOpenSearchSource_Vtbl
    where
        Identity: IOpenSearchSource_Impl,
    {
        unsafe extern "system" fn GetResults<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pszquery: windows_core::PCWSTR, dwstartindex: u32, dwcount: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOpenSearchSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOpenSearchSource_Impl::GetResults(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&pszquery), core::mem::transmute_copy(&dwstartindex), core::mem::transmute_copy(&dwcount), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetResults: GetResults::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOpenSearchSource as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IOperationsProgressDialog_Impl: Sized {
    fn StartProgressDialog(&self, hwndowner: super::super::Foundation::HWND, flags: u32) -> windows_core::Result<()>;
    fn StopProgressDialog(&self) -> windows_core::Result<()>;
    fn SetOperation(&self, action: SPACTION) -> windows_core::Result<()>;
    fn SetMode(&self, mode: u32) -> windows_core::Result<()>;
    fn UpdateProgress(&self, ullpointscurrent: u64, ullpointstotal: u64, ullsizecurrent: u64, ullsizetotal: u64, ullitemscurrent: u64, ullitemstotal: u64) -> windows_core::Result<()>;
    fn UpdateLocations(&self, psisource: Option<&IShellItem>, psitarget: Option<&IShellItem>, psiitem: Option<&IShellItem>) -> windows_core::Result<()>;
    fn ResetTimer(&self) -> windows_core::Result<()>;
    fn PauseTimer(&self) -> windows_core::Result<()>;
    fn ResumeTimer(&self) -> windows_core::Result<()>;
    fn GetMilliseconds(&self, pullelapsed: *mut u64, pullremaining: *mut u64) -> windows_core::Result<()>;
    fn GetOperationStatus(&self) -> windows_core::Result<PropertiesSystem::PDOPSTATUS>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IOperationsProgressDialog {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IOperationsProgressDialog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IOperationsProgressDialog_Vtbl
    where
        Identity: IOperationsProgressDialog_Impl,
    {
        unsafe extern "system" fn StartProgressDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, flags: u32) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::StartProgressDialog(this, core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn StopProgressDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::StopProgressDialog(this).into()
        }
        unsafe extern "system" fn SetOperation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, action: SPACTION) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::SetOperation(this, core::mem::transmute_copy(&action)).into()
        }
        unsafe extern "system" fn SetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: u32) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::SetMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn UpdateProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullpointscurrent: u64, ullpointstotal: u64, ullsizecurrent: u64, ullsizetotal: u64, ullitemscurrent: u64, ullitemstotal: u64) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::UpdateProgress(this, core::mem::transmute_copy(&ullpointscurrent), core::mem::transmute_copy(&ullpointstotal), core::mem::transmute_copy(&ullsizecurrent), core::mem::transmute_copy(&ullsizetotal), core::mem::transmute_copy(&ullitemscurrent), core::mem::transmute_copy(&ullitemstotal)).into()
        }
        unsafe extern "system" fn UpdateLocations<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psitarget: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::UpdateLocations(this, windows_core::from_raw_borrowed(&psisource), windows_core::from_raw_borrowed(&psitarget), windows_core::from_raw_borrowed(&psiitem)).into()
        }
        unsafe extern "system" fn ResetTimer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::ResetTimer(this).into()
        }
        unsafe extern "system" fn PauseTimer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::PauseTimer(this).into()
        }
        unsafe extern "system" fn ResumeTimer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::ResumeTimer(this).into()
        }
        unsafe extern "system" fn GetMilliseconds<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pullelapsed: *mut u64, pullremaining: *mut u64) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOperationsProgressDialog_Impl::GetMilliseconds(this, core::mem::transmute_copy(&pullelapsed), core::mem::transmute_copy(&pullremaining)).into()
        }
        unsafe extern "system" fn GetOperationStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, popstatus: *mut PropertiesSystem::PDOPSTATUS) -> windows_core::HRESULT
        where
            Identity: IOperationsProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IOperationsProgressDialog_Impl::GetOperationStatus(this) {
                Ok(ok__) => {
                    popstatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartProgressDialog: StartProgressDialog::<Identity, OFFSET>,
            StopProgressDialog: StopProgressDialog::<Identity, OFFSET>,
            SetOperation: SetOperation::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            UpdateLocations: UpdateLocations::<Identity, OFFSET>,
            ResetTimer: ResetTimer::<Identity, OFFSET>,
            PauseTimer: PauseTimer::<Identity, OFFSET>,
            ResumeTimer: ResumeTimer::<Identity, OFFSET>,
            GetMilliseconds: GetMilliseconds::<Identity, OFFSET>,
            GetOperationStatus: GetOperationStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOperationsProgressDialog as windows_core::Interface>::IID
    }
}
pub trait IPackageDebugSettings_Impl: Sized {
    fn EnableDebugging(&self, packagefullname: &windows_core::PCWSTR, debuggercommandline: &windows_core::PCWSTR, environment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn DisableDebugging(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Suspend(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Resume(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn TerminateAllProcesses(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetTargetSessionId(&self, sessionid: u32) -> windows_core::Result<()>;
    fn EnumerateBackgroundTasks(&self, packagefullname: &windows_core::PCWSTR, taskcount: *mut u32, taskids: *mut *mut windows_core::GUID, tasknames: *mut *mut windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ActivateBackgroundTask(&self, taskid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn StartServicing(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StopServicing(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StartSessionRedirection(&self, packagefullname: &windows_core::PCWSTR, sessionid: u32) -> windows_core::Result<()>;
    fn StopSessionRedirection(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetPackageExecutionState(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<PACKAGE_EXECUTION_STATE>;
    fn RegisterForPackageStateChanges(&self, packagefullname: &windows_core::PCWSTR, ppackageexecutionstatechangenotification: Option<&IPackageExecutionStateChangeNotification>) -> windows_core::Result<u32>;
    fn UnregisterForPackageStateChanges(&self, dwcookie: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPackageDebugSettings {}
impl IPackageDebugSettings_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPackageDebugSettings_Vtbl
    where
        Identity: IPackageDebugSettings_Impl,
    {
        unsafe extern "system" fn EnableDebugging<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, debuggercommandline: windows_core::PCWSTR, environment: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::EnableDebugging(this, core::mem::transmute(&packagefullname), core::mem::transmute(&debuggercommandline), core::mem::transmute(&environment)).into()
        }
        unsafe extern "system" fn DisableDebugging<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::DisableDebugging(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn Suspend<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::Suspend(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn Resume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::Resume(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn TerminateAllProcesses<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::TerminateAllProcesses(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn SetTargetSessionId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sessionid: u32) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::SetTargetSessionId(this, core::mem::transmute_copy(&sessionid)).into()
        }
        unsafe extern "system" fn EnumerateBackgroundTasks<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, taskcount: *mut u32, taskids: *mut *mut windows_core::GUID, tasknames: *mut *mut windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::EnumerateBackgroundTasks(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&taskcount), core::mem::transmute_copy(&taskids), core::mem::transmute_copy(&tasknames)).into()
        }
        unsafe extern "system" fn ActivateBackgroundTask<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, taskid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::ActivateBackgroundTask(this, core::mem::transmute_copy(&taskid)).into()
        }
        unsafe extern "system" fn StartServicing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::StartServicing(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn StopServicing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::StopServicing(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn StartSessionRedirection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, sessionid: u32) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::StartSessionRedirection(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&sessionid)).into()
        }
        unsafe extern "system" fn StopSessionRedirection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::StopSessionRedirection(this, core::mem::transmute(&packagefullname)).into()
        }
        unsafe extern "system" fn GetPackageExecutionState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, packageexecutionstate: *mut PACKAGE_EXECUTION_STATE) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPackageDebugSettings_Impl::GetPackageExecutionState(this, core::mem::transmute(&packagefullname)) {
                Ok(ok__) => {
                    packageexecutionstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForPackageStateChanges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, ppackageexecutionstatechangenotification: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPackageDebugSettings_Impl::RegisterForPackageStateChanges(this, core::mem::transmute(&packagefullname), windows_core::from_raw_borrowed(&ppackageexecutionstatechangenotification)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UnregisterForPackageStateChanges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings_Impl::UnregisterForPackageStateChanges(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnableDebugging: EnableDebugging::<Identity, OFFSET>,
            DisableDebugging: DisableDebugging::<Identity, OFFSET>,
            Suspend: Suspend::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            TerminateAllProcesses: TerminateAllProcesses::<Identity, OFFSET>,
            SetTargetSessionId: SetTargetSessionId::<Identity, OFFSET>,
            EnumerateBackgroundTasks: EnumerateBackgroundTasks::<Identity, OFFSET>,
            ActivateBackgroundTask: ActivateBackgroundTask::<Identity, OFFSET>,
            StartServicing: StartServicing::<Identity, OFFSET>,
            StopServicing: StopServicing::<Identity, OFFSET>,
            StartSessionRedirection: StartSessionRedirection::<Identity, OFFSET>,
            StopSessionRedirection: StopSessionRedirection::<Identity, OFFSET>,
            GetPackageExecutionState: GetPackageExecutionState::<Identity, OFFSET>,
            RegisterForPackageStateChanges: RegisterForPackageStateChanges::<Identity, OFFSET>,
            UnregisterForPackageStateChanges: UnregisterForPackageStateChanges::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPackageDebugSettings as windows_core::Interface>::IID
    }
}
pub trait IPackageDebugSettings2_Impl: Sized + IPackageDebugSettings_Impl {
    fn EnumerateApps(&self, packagefullname: &windows_core::PCWSTR, appcount: *mut u32, appusermodelids: *mut *mut windows_core::PWSTR, appdisplaynames: *mut *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPackageDebugSettings2 {}
impl IPackageDebugSettings2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPackageDebugSettings2_Vtbl
    where
        Identity: IPackageDebugSettings2_Impl,
    {
        unsafe extern "system" fn EnumerateApps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, appcount: *mut u32, appusermodelids: *mut *mut windows_core::PWSTR, appdisplaynames: *mut *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IPackageDebugSettings2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageDebugSettings2_Impl::EnumerateApps(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&appcount), core::mem::transmute_copy(&appusermodelids), core::mem::transmute_copy(&appdisplaynames)).into()
        }
        Self { base__: IPackageDebugSettings_Vtbl::new::<Identity, OFFSET>(), EnumerateApps: EnumerateApps::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPackageDebugSettings2 as windows_core::Interface>::IID || iid == &<IPackageDebugSettings as windows_core::Interface>::IID
    }
}
pub trait IPackageExecutionStateChangeNotification_Impl: Sized {
    fn OnStateChanged(&self, pszpackagefullname: &windows_core::PCWSTR, pesnewstate: PACKAGE_EXECUTION_STATE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPackageExecutionStateChangeNotification {}
impl IPackageExecutionStateChangeNotification_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPackageExecutionStateChangeNotification_Vtbl
    where
        Identity: IPackageExecutionStateChangeNotification_Impl,
    {
        unsafe extern "system" fn OnStateChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpackagefullname: windows_core::PCWSTR, pesnewstate: PACKAGE_EXECUTION_STATE) -> windows_core::HRESULT
        where
            Identity: IPackageExecutionStateChangeNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPackageExecutionStateChangeNotification_Impl::OnStateChanged(this, core::mem::transmute(&pszpackagefullname), core::mem::transmute_copy(&pesnewstate)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnStateChanged: OnStateChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPackageExecutionStateChangeNotification as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IParentAndItem_Impl: Sized {
    fn SetParentAndItem(&self, pidlparent: *const Common::ITEMIDLIST, psf: Option<&IShellFolder>, pidlchild: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetParentAndItem(&self, ppidlparent: *mut *mut Common::ITEMIDLIST, ppsf: *mut Option<IShellFolder>, ppidlchild: *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IParentAndItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IParentAndItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IParentAndItem_Vtbl
    where
        Identity: IParentAndItem_Impl,
    {
        unsafe extern "system" fn SetParentAndItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlparent: *const Common::ITEMIDLIST, psf: *mut core::ffi::c_void, pidlchild: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IParentAndItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IParentAndItem_Impl::SetParentAndItem(this, core::mem::transmute_copy(&pidlparent), windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidlchild)).into()
        }
        unsafe extern "system" fn GetParentAndItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidlparent: *mut *mut Common::ITEMIDLIST, ppsf: *mut *mut core::ffi::c_void, ppidlchild: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IParentAndItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IParentAndItem_Impl::GetParentAndItem(this, core::mem::transmute_copy(&ppidlparent), core::mem::transmute_copy(&ppsf), core::mem::transmute_copy(&ppidlchild)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetParentAndItem: SetParentAndItem::<Identity, OFFSET>,
            GetParentAndItem: GetParentAndItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IParentAndItem as windows_core::Interface>::IID
    }
}
pub trait IParseAndCreateItem_Impl: Sized {
    fn SetItem(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn GetItem(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IParseAndCreateItem {}
impl IParseAndCreateItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IParseAndCreateItem_Vtbl
    where
        Identity: IParseAndCreateItem_Impl,
    {
        unsafe extern "system" fn SetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IParseAndCreateItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IParseAndCreateItem_Impl::SetItem(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn GetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IParseAndCreateItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IParseAndCreateItem_Impl::GetItem(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetItem: SetItem::<Identity, OFFSET>, GetItem: GetItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IParseAndCreateItem as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistFolder_Impl: Sized + super::super::System::Com::IPersist_Impl {
    fn Initialize(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistFolder {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistFolder_Vtbl
    where
        Identity: IPersistFolder_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IPersistFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistFolder_Impl::Initialize(this, core::mem::transmute_copy(&pidl)).into()
        }
        Self { base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistFolder as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistFolder2_Impl: Sized + IPersistFolder_Impl {
    fn GetCurFolder(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistFolder2 {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistFolder2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistFolder2_Vtbl
    where
        Identity: IPersistFolder2_Impl,
    {
        unsafe extern "system" fn GetCurFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IPersistFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPersistFolder2_Impl::GetCurFolder(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IPersistFolder_Vtbl::new::<Identity, OFFSET>(), GetCurFolder: GetCurFolder::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistFolder2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IPersistFolder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistFolder3_Impl: Sized + IPersistFolder2_Impl {
    fn InitializeEx(&self, pbc: Option<&super::super::System::Com::IBindCtx>, pidlroot: *const Common::ITEMIDLIST, ppfti: *const PERSIST_FOLDER_TARGET_INFO) -> windows_core::Result<()>;
    fn GetFolderTargetInfo(&self, ppfti: *mut PERSIST_FOLDER_TARGET_INFO) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistFolder3 {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistFolder3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistFolder3_Vtbl
    where
        Identity: IPersistFolder3_Impl,
    {
        unsafe extern "system" fn InitializeEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, pidlroot: *const Common::ITEMIDLIST, ppfti: *const PERSIST_FOLDER_TARGET_INFO) -> windows_core::HRESULT
        where
            Identity: IPersistFolder3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistFolder3_Impl::InitializeEx(this, windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&pidlroot), core::mem::transmute_copy(&ppfti)).into()
        }
        unsafe extern "system" fn GetFolderTargetInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfti: *mut PERSIST_FOLDER_TARGET_INFO) -> windows_core::HRESULT
        where
            Identity: IPersistFolder3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistFolder3_Impl::GetFolderTargetInfo(this, core::mem::transmute_copy(&ppfti)).into()
        }
        Self {
            base__: IPersistFolder2_Vtbl::new::<Identity, OFFSET>(),
            InitializeEx: InitializeEx::<Identity, OFFSET>,
            GetFolderTargetInfo: GetFolderTargetInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistFolder3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IPersistFolder as windows_core::Interface>::IID || iid == &<IPersistFolder2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistIDList_Impl: Sized + super::super::System::Com::IPersist_Impl {
    fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistIDList {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistIDList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistIDList_Vtbl
    where
        Identity: IPersistIDList_Impl,
    {
        unsafe extern "system" fn SetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IPersistIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistIDList_Impl::SetIDList(this, core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn GetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IPersistIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPersistIDList_Impl::GetIDList(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
            SetIDList: SetIDList::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistIDList as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IPreviewHandler_Impl: Sized {
    fn SetWindow(&self, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetRect(&self, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn DoPreview(&self) -> windows_core::Result<()>;
    fn Unload(&self) -> windows_core::Result<()>;
    fn SetFocus(&self) -> windows_core::Result<()>;
    fn QueryFocus(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IPreviewHandler {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IPreviewHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPreviewHandler_Vtbl
    where
        Identity: IPreviewHandler_Impl,
    {
        unsafe extern "system" fn SetWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandler_Impl::SetWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prc)).into()
        }
        unsafe extern "system" fn SetRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandler_Impl::SetRect(this, core::mem::transmute_copy(&prc)).into()
        }
        unsafe extern "system" fn DoPreview<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandler_Impl::DoPreview(this).into()
        }
        unsafe extern "system" fn Unload<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandler_Impl::Unload(this).into()
        }
        unsafe extern "system" fn SetFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandler_Impl::SetFocus(this).into()
        }
        unsafe extern "system" fn QueryFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPreviewHandler_Impl::QueryFocus(this) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TranslateAccelerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IPreviewHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandler_Impl::TranslateAccelerator(this, core::mem::transmute_copy(&pmsg)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetWindow: SetWindow::<Identity, OFFSET>,
            SetRect: SetRect::<Identity, OFFSET>,
            DoPreview: DoPreview::<Identity, OFFSET>,
            Unload: Unload::<Identity, OFFSET>,
            SetFocus: SetFocus::<Identity, OFFSET>,
            QueryFocus: QueryFocus::<Identity, OFFSET>,
            TranslateAccelerator: TranslateAccelerator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IPreviewHandlerFrame_Impl: Sized {
    fn GetWindowContext(&self) -> windows_core::Result<PREVIEWHANDLERFRAMEINFO>;
    fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IPreviewHandlerFrame {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IPreviewHandlerFrame_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPreviewHandlerFrame_Vtbl
    where
        Identity: IPreviewHandlerFrame_Impl,
    {
        unsafe extern "system" fn GetWindowContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut PREVIEWHANDLERFRAMEINFO) -> windows_core::HRESULT
        where
            Identity: IPreviewHandlerFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPreviewHandlerFrame_Impl::GetWindowContext(this) {
                Ok(ok__) => {
                    pinfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TranslateAccelerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IPreviewHandlerFrame_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandlerFrame_Impl::TranslateAccelerator(this, core::mem::transmute_copy(&pmsg)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetWindowContext: GetWindowContext::<Identity, OFFSET>,
            TranslateAccelerator: TranslateAccelerator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewHandlerFrame as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IPreviewHandlerVisuals_Impl: Sized {
    fn SetBackgroundColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn SetFont(&self, plf: *const super::super::Graphics::Gdi::LOGFONTW) -> windows_core::Result<()>;
    fn SetTextColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IPreviewHandlerVisuals {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IPreviewHandlerVisuals_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPreviewHandlerVisuals_Vtbl
    where
        Identity: IPreviewHandlerVisuals_Impl,
    {
        unsafe extern "system" fn SetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IPreviewHandlerVisuals_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandlerVisuals_Impl::SetBackgroundColor(this, core::mem::transmute_copy(&color)).into()
        }
        unsafe extern "system" fn SetFont<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plf: *const super::super::Graphics::Gdi::LOGFONTW) -> windows_core::HRESULT
        where
            Identity: IPreviewHandlerVisuals_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandlerVisuals_Impl::SetFont(this, core::mem::transmute_copy(&plf)).into()
        }
        unsafe extern "system" fn SetTextColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IPreviewHandlerVisuals_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPreviewHandlerVisuals_Impl::SetTextColor(this, core::mem::transmute_copy(&color)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBackgroundColor: SetBackgroundColor::<Identity, OFFSET>,
            SetFont: SetFont::<Identity, OFFSET>,
            SetTextColor: SetTextColor::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewHandlerVisuals as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IPreviewItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IPreviewItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IPreviewItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPreviewItem_Vtbl
    where
        Identity: IPreviewItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
pub trait IPreviousVersionsInfo_Impl: Sized {
    fn AreSnapshotsAvailable(&self, pszpath: &windows_core::PCWSTR, foktobeslow: super::super::Foundation::BOOL) -> windows_core::Result<super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for IPreviousVersionsInfo {}
impl IPreviousVersionsInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPreviousVersionsInfo_Vtbl
    where
        Identity: IPreviousVersionsInfo_Impl,
    {
        unsafe extern "system" fn AreSnapshotsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, foktobeslow: super::super::Foundation::BOOL, pfavailable: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IPreviousVersionsInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPreviousVersionsInfo_Impl::AreSnapshotsAvailable(this, core::mem::transmute(&pszpath), core::mem::transmute_copy(&foktobeslow)) {
                Ok(ok__) => {
                    pfavailable.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AreSnapshotsAvailable: AreSnapshotsAvailable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviousVersionsInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IProfferService_Impl: Sized {
    fn ProfferService(&self, serviceid: *const windows_core::GUID, serviceprovider: Option<&super::super::System::Com::IServiceProvider>) -> windows_core::Result<u32>;
    fn RevokeService(&self, cookie: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IProfferService {}
#[cfg(feature = "Win32_System_Com")]
impl IProfferService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IProfferService_Vtbl
    where
        Identity: IProfferService_Impl,
    {
        unsafe extern "system" fn ProfferService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, serviceid: *const windows_core::GUID, serviceprovider: *mut core::ffi::c_void, cookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: IProfferService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IProfferService_Impl::ProfferService(this, core::mem::transmute_copy(&serviceid), windows_core::from_raw_borrowed(&serviceprovider)) {
                Ok(ok__) => {
                    cookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RevokeService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cookie: u32) -> windows_core::HRESULT
        where
            Identity: IProfferService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProfferService_Impl::RevokeService(this, core::mem::transmute_copy(&cookie)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ProfferService: ProfferService::<Identity, OFFSET>,
            RevokeService: RevokeService::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IProfferService as windows_core::Interface>::IID
    }
}
pub trait IProgressDialog_Impl: Sized {
    fn StartProgressDialog(&self, hwndparent: super::super::Foundation::HWND, punkenablemodless: Option<&windows_core::IUnknown>, dwflags: u32, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn StopProgressDialog(&self) -> windows_core::Result<()>;
    fn SetTitle(&self, pwztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetAnimation(&self, hinstanimation: super::super::Foundation::HINSTANCE, idanimation: u32) -> windows_core::Result<()>;
    fn HasUserCancelled(&self) -> super::super::Foundation::BOOL;
    fn SetProgress(&self, dwcompleted: u32, dwtotal: u32) -> windows_core::Result<()>;
    fn SetProgress64(&self, ullcompleted: u64, ulltotal: u64) -> windows_core::Result<()>;
    fn SetLine(&self, dwlinenum: u32, pwzstring: &windows_core::PCWSTR, fcompactpath: super::super::Foundation::BOOL, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn SetCancelMsg(&self, pwzcancelmsg: &windows_core::PCWSTR, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn Timer(&self, dwtimeraction: u32, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IProgressDialog {}
impl IProgressDialog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IProgressDialog_Vtbl
    where
        Identity: IProgressDialog_Impl,
    {
        unsafe extern "system" fn StartProgressDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, punkenablemodless: *mut core::ffi::c_void, dwflags: u32, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::StartProgressDialog(this, core::mem::transmute_copy(&hwndparent), windows_core::from_raw_borrowed(&punkenablemodless), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&pvresevered)).into()
        }
        unsafe extern "system" fn StopProgressDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::StopProgressDialog(this).into()
        }
        unsafe extern "system" fn SetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwztitle: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::SetTitle(this, core::mem::transmute(&pwztitle)).into()
        }
        unsafe extern "system" fn SetAnimation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hinstanimation: super::super::Foundation::HINSTANCE, idanimation: u32) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::SetAnimation(this, core::mem::transmute_copy(&hinstanimation), core::mem::transmute_copy(&idanimation)).into()
        }
        unsafe extern "system" fn HasUserCancelled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> super::super::Foundation::BOOL
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::HasUserCancelled(this)
        }
        unsafe extern "system" fn SetProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcompleted: u32, dwtotal: u32) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::SetProgress(this, core::mem::transmute_copy(&dwcompleted), core::mem::transmute_copy(&dwtotal)).into()
        }
        unsafe extern "system" fn SetProgress64<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullcompleted: u64, ulltotal: u64) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::SetProgress64(this, core::mem::transmute_copy(&ullcompleted), core::mem::transmute_copy(&ulltotal)).into()
        }
        unsafe extern "system" fn SetLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwlinenum: u32, pwzstring: windows_core::PCWSTR, fcompactpath: super::super::Foundation::BOOL, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::SetLine(this, core::mem::transmute_copy(&dwlinenum), core::mem::transmute(&pwzstring), core::mem::transmute_copy(&fcompactpath), core::mem::transmute_copy(&pvresevered)).into()
        }
        unsafe extern "system" fn SetCancelMsg<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzcancelmsg: windows_core::PCWSTR, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::SetCancelMsg(this, core::mem::transmute(&pwzcancelmsg), core::mem::transmute_copy(&pvresevered)).into()
        }
        unsafe extern "system" fn Timer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeraction: u32, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IProgressDialog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IProgressDialog_Impl::Timer(this, core::mem::transmute_copy(&dwtimeraction), core::mem::transmute_copy(&pvresevered)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartProgressDialog: StartProgressDialog::<Identity, OFFSET>,
            StopProgressDialog: StopProgressDialog::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            SetAnimation: SetAnimation::<Identity, OFFSET>,
            HasUserCancelled: HasUserCancelled::<Identity, OFFSET>,
            SetProgress: SetProgress::<Identity, OFFSET>,
            SetProgress64: SetProgress64::<Identity, OFFSET>,
            SetLine: SetLine::<Identity, OFFSET>,
            SetCancelMsg: SetCancelMsg::<Identity, OFFSET>,
            Timer: Timer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IProgressDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IPropertyKeyStore_Impl: Sized {
    fn GetKeyCount(&self) -> windows_core::Result<i32>;
    fn GetKeyAt(&self, index: i32, pkey: *mut PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn AppendKey(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn DeleteKey(&self, index: i32) -> windows_core::Result<()>;
    fn IsKeyInStore(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn RemoveKey(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IPropertyKeyStore {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IPropertyKeyStore_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPropertyKeyStore_Vtbl
    where
        Identity: IPropertyKeyStore_Impl,
    {
        unsafe extern "system" fn GetKeyCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keycount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IPropertyKeyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPropertyKeyStore_Impl::GetKeyCount(this) {
                Ok(ok__) => {
                    keycount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetKeyAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: i32, pkey: *mut PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: IPropertyKeyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPropertyKeyStore_Impl::GetKeyAt(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&pkey)).into()
        }
        unsafe extern "system" fn AppendKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: IPropertyKeyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPropertyKeyStore_Impl::AppendKey(this, core::mem::transmute_copy(&key)).into()
        }
        unsafe extern "system" fn DeleteKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: i32) -> windows_core::HRESULT
        where
            Identity: IPropertyKeyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPropertyKeyStore_Impl::DeleteKey(this, core::mem::transmute_copy(&index)).into()
        }
        unsafe extern "system" fn IsKeyInStore<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: IPropertyKeyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPropertyKeyStore_Impl::IsKeyInStore(this, core::mem::transmute_copy(&key)).into()
        }
        unsafe extern "system" fn RemoveKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: IPropertyKeyStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPropertyKeyStore_Impl::RemoveKey(this, core::mem::transmute_copy(&key)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetKeyCount: GetKeyCount::<Identity, OFFSET>,
            GetKeyAt: GetKeyAt::<Identity, OFFSET>,
            AppendKey: AppendKey::<Identity, OFFSET>,
            DeleteKey: DeleteKey::<Identity, OFFSET>,
            IsKeyInStore: IsKeyInStore::<Identity, OFFSET>,
            RemoveKey: RemoveKey::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPropertyKeyStore as windows_core::Interface>::IID
    }
}
pub trait IPublishedApp_Impl: Sized + IShellApp_Impl {
    fn Install(&self, pstinstall: *const super::super::Foundation::SYSTEMTIME) -> windows_core::Result<()>;
    fn GetPublishedAppInfo(&self, ppai: *mut PUBAPPINFO) -> windows_core::Result<()>;
    fn Unschedule(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPublishedApp {}
impl IPublishedApp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPublishedApp_Vtbl
    where
        Identity: IPublishedApp_Impl,
    {
        unsafe extern "system" fn Install<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstinstall: *const super::super::Foundation::SYSTEMTIME) -> windows_core::HRESULT
        where
            Identity: IPublishedApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPublishedApp_Impl::Install(this, core::mem::transmute_copy(&pstinstall)).into()
        }
        unsafe extern "system" fn GetPublishedAppInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppai: *mut PUBAPPINFO) -> windows_core::HRESULT
        where
            Identity: IPublishedApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPublishedApp_Impl::GetPublishedAppInfo(this, core::mem::transmute_copy(&ppai)).into()
        }
        unsafe extern "system" fn Unschedule<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPublishedApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPublishedApp_Impl::Unschedule(this).into()
        }
        Self {
            base__: IShellApp_Vtbl::new::<Identity, OFFSET>(),
            Install: Install::<Identity, OFFSET>,
            GetPublishedAppInfo: GetPublishedAppInfo::<Identity, OFFSET>,
            Unschedule: Unschedule::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPublishedApp as windows_core::Interface>::IID || iid == &<IShellApp as windows_core::Interface>::IID
    }
}
pub trait IPublishedApp2_Impl: Sized + IPublishedApp_Impl {
    fn Install2(&self, pstinstall: *const super::super::Foundation::SYSTEMTIME, hwndparent: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPublishedApp2 {}
impl IPublishedApp2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPublishedApp2_Vtbl
    where
        Identity: IPublishedApp2_Impl,
    {
        unsafe extern "system" fn Install2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstinstall: *const super::super::Foundation::SYSTEMTIME, hwndparent: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IPublishedApp2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPublishedApp2_Impl::Install2(this, core::mem::transmute_copy(&pstinstall), core::mem::transmute_copy(&hwndparent)).into()
        }
        Self { base__: IPublishedApp_Vtbl::new::<Identity, OFFSET>(), Install2: Install2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPublishedApp2 as windows_core::Interface>::IID || iid == &<IShellApp as windows_core::Interface>::IID || iid == &<IPublishedApp as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_UI_Controls"))]
pub trait IPublishingWizard_Impl: Sized + IWizardExtension_Impl {
    fn Initialize(&self, pdo: Option<&super::super::System::Com::IDataObject>, dwoptions: u32, pszservicescope: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTransferManifest(&self, phrfromtransfer: *mut windows_core::HRESULT, pdocmanifest: *mut Option<super::super::Data::Xml::MsXml::IXMLDOMDocument>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_UI_Controls"))]
impl windows_core::RuntimeName for IPublishingWizard {}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_UI_Controls"))]
impl IPublishingWizard_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPublishingWizard_Vtbl
    where
        Identity: IPublishingWizard_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdo: *mut core::ffi::c_void, dwoptions: u32, pszservicescope: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IPublishingWizard_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPublishingWizard_Impl::Initialize(this, windows_core::from_raw_borrowed(&pdo), core::mem::transmute_copy(&dwoptions), core::mem::transmute(&pszservicescope)).into()
        }
        unsafe extern "system" fn GetTransferManifest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phrfromtransfer: *mut windows_core::HRESULT, pdocmanifest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPublishingWizard_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPublishingWizard_Impl::GetTransferManifest(this, core::mem::transmute_copy(&phrfromtransfer), core::mem::transmute_copy(&pdocmanifest)).into()
        }
        Self {
            base__: IWizardExtension_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetTransferManifest: GetTransferManifest::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPublishingWizard as windows_core::Interface>::IID || iid == &<IWizardExtension as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
pub trait IQueryAssociations_Impl: Sized {
    fn Init(&self, flags: ASSOCF, pszassoc: &windows_core::PCWSTR, hkprogid: super::super::System::Registry::HKEY, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetString(&self, flags: ASSOCF, str: ASSOCSTR, pszextra: &windows_core::PCWSTR, pszout: windows_core::PWSTR, pcchout: *mut u32) -> windows_core::Result<()>;
    fn GetKey(&self, flags: ASSOCF, key: ASSOCKEY, pszextra: &windows_core::PCWSTR) -> windows_core::Result<super::super::System::Registry::HKEY>;
    fn GetData(&self, flags: ASSOCF, data: ASSOCDATA, pszextra: &windows_core::PCWSTR, pvout: *mut core::ffi::c_void, pcbout: *mut u32) -> windows_core::Result<()>;
    fn GetEnum(&self, flags: ASSOCF, assocenum: ASSOCENUM, pszextra: &windows_core::PCWSTR, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Registry")]
impl windows_core::RuntimeName for IQueryAssociations {}
#[cfg(feature = "Win32_System_Registry")]
impl IQueryAssociations_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueryAssociations_Vtbl
    where
        Identity: IQueryAssociations_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, pszassoc: windows_core::PCWSTR, hkprogid: super::super::System::Registry::HKEY, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IQueryAssociations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryAssociations_Impl::Init(this, core::mem::transmute_copy(&flags), core::mem::transmute(&pszassoc), core::mem::transmute_copy(&hkprogid), core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetString<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, str: ASSOCSTR, pszextra: windows_core::PCWSTR, pszout: windows_core::PWSTR, pcchout: *mut u32) -> windows_core::HRESULT
        where
            Identity: IQueryAssociations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryAssociations_Impl::GetString(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&str), core::mem::transmute(&pszextra), core::mem::transmute_copy(&pszout), core::mem::transmute_copy(&pcchout)).into()
        }
        unsafe extern "system" fn GetKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, key: ASSOCKEY, pszextra: windows_core::PCWSTR, phkeyout: *mut super::super::System::Registry::HKEY) -> windows_core::HRESULT
        where
            Identity: IQueryAssociations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQueryAssociations_Impl::GetKey(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&key), core::mem::transmute(&pszextra)) {
                Ok(ok__) => {
                    phkeyout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, data: ASSOCDATA, pszextra: windows_core::PCWSTR, pvout: *mut core::ffi::c_void, pcbout: *mut u32) -> windows_core::HRESULT
        where
            Identity: IQueryAssociations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryAssociations_Impl::GetData(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&data), core::mem::transmute(&pszextra), core::mem::transmute_copy(&pvout), core::mem::transmute_copy(&pcbout)).into()
        }
        unsafe extern "system" fn GetEnum<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, assocenum: ASSOCENUM, pszextra: windows_core::PCWSTR, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IQueryAssociations_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryAssociations_Impl::GetEnum(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&assocenum), core::mem::transmute(&pszextra), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvout)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Init: Init::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetKey: GetKey::<Identity, OFFSET>,
            GetData: GetData::<Identity, OFFSET>,
            GetEnum: GetEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryAssociations as windows_core::Interface>::IID
    }
}
pub trait IQueryCancelAutoPlay_Impl: Sized {
    fn AllowAutoPlay(&self, pszpath: &windows_core::PCWSTR, dwcontenttype: u32, pszlabel: &windows_core::PCWSTR, dwserialnumber: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IQueryCancelAutoPlay {}
impl IQueryCancelAutoPlay_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueryCancelAutoPlay_Vtbl
    where
        Identity: IQueryCancelAutoPlay_Impl,
    {
        unsafe extern "system" fn AllowAutoPlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, dwcontenttype: u32, pszlabel: windows_core::PCWSTR, dwserialnumber: u32) -> windows_core::HRESULT
        where
            Identity: IQueryCancelAutoPlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryCancelAutoPlay_Impl::AllowAutoPlay(this, core::mem::transmute(&pszpath), core::mem::transmute_copy(&dwcontenttype), core::mem::transmute(&pszlabel), core::mem::transmute_copy(&dwserialnumber)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AllowAutoPlay: AllowAutoPlay::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryCancelAutoPlay as windows_core::Interface>::IID
    }
}
pub trait IQueryCodePage_Impl: Sized {
    fn GetCodePage(&self) -> windows_core::Result<u32>;
    fn SetCodePage(&self, uicodepage: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IQueryCodePage {}
impl IQueryCodePage_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueryCodePage_Vtbl
    where
        Identity: IQueryCodePage_Impl,
    {
        unsafe extern "system" fn GetCodePage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puicodepage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IQueryCodePage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQueryCodePage_Impl::GetCodePage(this) {
                Ok(ok__) => {
                    puicodepage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCodePage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uicodepage: u32) -> windows_core::HRESULT
        where
            Identity: IQueryCodePage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryCodePage_Impl::SetCodePage(this, core::mem::transmute_copy(&uicodepage)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCodePage: GetCodePage::<Identity, OFFSET>,
            SetCodePage: SetCodePage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryCodePage as windows_core::Interface>::IID
    }
}
pub trait IQueryContinue_Impl: Sized {
    fn QueryContinue(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IQueryContinue {}
impl IQueryContinue_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueryContinue_Vtbl
    where
        Identity: IQueryContinue_Impl,
    {
        unsafe extern "system" fn QueryContinue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IQueryContinue_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryContinue_Impl::QueryContinue(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryContinue: QueryContinue::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryContinue as windows_core::Interface>::IID
    }
}
pub trait IQueryContinueWithStatus_Impl: Sized + IQueryContinue_Impl {
    fn SetStatusMessage(&self, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IQueryContinueWithStatus {}
impl IQueryContinueWithStatus_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueryContinueWithStatus_Vtbl
    where
        Identity: IQueryContinueWithStatus_Impl,
    {
        unsafe extern "system" fn SetStatusMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psz: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IQueryContinueWithStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueryContinueWithStatus_Impl::SetStatusMessage(this, core::mem::transmute(&psz)).into()
        }
        Self { base__: IQueryContinue_Vtbl::new::<Identity, OFFSET>(), SetStatusMessage: SetStatusMessage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryContinueWithStatus as windows_core::Interface>::IID || iid == &<IQueryContinue as windows_core::Interface>::IID
    }
}
pub trait IQueryInfo_Impl: Sized {
    fn GetInfoTip(&self, dwflags: &QITIPF_FLAGS) -> windows_core::Result<windows_core::PWSTR>;
    fn GetInfoFlags(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IQueryInfo {}
impl IQueryInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueryInfo_Vtbl
    where
        Identity: IQueryInfo_Impl,
    {
        unsafe extern "system" fn GetInfoTip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppwsztip: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IQueryInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQueryInfo_Impl::GetInfoTip(this, core::mem::transmute(&dwflags)) {
                Ok(ok__) => {
                    ppwsztip.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInfoFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IQueryInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQueryInfo_Impl::GetInfoFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInfoTip: GetInfoTip::<Identity, OFFSET>,
            GetInfoFlags: GetInfoFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryInfo as windows_core::Interface>::IID
    }
}
pub trait IRegTreeItem_Impl: Sized {
    fn GetCheckState(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetCheckState(&self, bcheck: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IRegTreeItem {}
impl IRegTreeItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRegTreeItem_Vtbl
    where
        Identity: IRegTreeItem_Impl,
    {
        unsafe extern "system" fn GetCheckState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbcheck: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IRegTreeItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IRegTreeItem_Impl::GetCheckState(this) {
                Ok(ok__) => {
                    pbcheck.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCheckState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bcheck: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IRegTreeItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRegTreeItem_Impl::SetCheckState(this, core::mem::transmute_copy(&bcheck)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCheckState: GetCheckState::<Identity, OFFSET>,
            SetCheckState: SetCheckState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRegTreeItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IRelatedItem_Impl: Sized {
    fn GetItemIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn GetItem(&self) -> windows_core::Result<IShellItem>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IRelatedItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IRelatedItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRelatedItem_Vtbl
    where
        Identity: IRelatedItem_Impl,
    {
        unsafe extern "system" fn GetItemIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IRelatedItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IRelatedItem_Impl::GetItemIDList(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRelatedItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IRelatedItem_Impl::GetItem(this) {
                Ok(ok__) => {
                    ppsi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetItemIDList: GetItemIDList::<Identity, OFFSET>,
            GetItem: GetItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
pub trait IRemoteComputer_Impl: Sized {
    fn Initialize(&self, pszmachine: &windows_core::PCWSTR, benumerating: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IRemoteComputer {}
impl IRemoteComputer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRemoteComputer_Vtbl
    where
        Identity: IRemoteComputer_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszmachine: windows_core::PCWSTR, benumerating: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IRemoteComputer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRemoteComputer_Impl::Initialize(this, core::mem::transmute(&pszmachine), core::mem::transmute_copy(&benumerating)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRemoteComputer as windows_core::Interface>::IID
    }
}
pub trait IResolveShellLink_Impl: Sized {
    fn ResolveShellLink(&self, punklink: Option<&windows_core::IUnknown>, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IResolveShellLink {}
impl IResolveShellLink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IResolveShellLink_Vtbl
    where
        Identity: IResolveShellLink_Impl,
    {
        unsafe extern "system" fn ResolveShellLink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punklink: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::HRESULT
        where
            Identity: IResolveShellLink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResolveShellLink_Impl::ResolveShellLink(this, windows_core::from_raw_borrowed(&punklink), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&fflags)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ResolveShellLink: ResolveShellLink::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IResolveShellLink as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IResultsFolder_Impl: Sized {
    fn AddItem(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn AddIDList(&self, pidl: *const Common::ITEMIDLIST, ppidladded: *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn RemoveItem(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn RemoveIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn RemoveAll(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IResultsFolder {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IResultsFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IResultsFolder_Vtbl
    where
        Identity: IResultsFolder_Impl,
    {
        unsafe extern "system" fn AddItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResultsFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResultsFolder_Impl::AddItem(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn AddIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppidladded: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IResultsFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResultsFolder_Impl::AddIDList(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&ppidladded)).into()
        }
        unsafe extern "system" fn RemoveItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResultsFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResultsFolder_Impl::RemoveItem(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn RemoveIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IResultsFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResultsFolder_Impl::RemoveIDList(this, core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn RemoveAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResultsFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResultsFolder_Impl::RemoveAll(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddItem: AddItem::<Identity, OFFSET>,
            AddIDList: AddIDList::<Identity, OFFSET>,
            RemoveItem: RemoveItem::<Identity, OFFSET>,
            RemoveIDList: RemoveIDList::<Identity, OFFSET>,
            RemoveAll: RemoveAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IResultsFolder as windows_core::Interface>::IID
    }
}
pub trait IRunnableTask_Impl: Sized {
    fn Run(&self) -> windows_core::Result<()>;
    fn Kill(&self, bwait: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Suspend(&self) -> windows_core::Result<()>;
    fn Resume(&self) -> windows_core::Result<()>;
    fn IsRunning(&self) -> u32;
}
impl windows_core::RuntimeName for IRunnableTask {}
impl IRunnableTask_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRunnableTask_Vtbl
    where
        Identity: IRunnableTask_Impl,
    {
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRunnableTask_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRunnableTask_Impl::Run(this).into()
        }
        unsafe extern "system" fn Kill<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bwait: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IRunnableTask_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRunnableTask_Impl::Kill(this, core::mem::transmute_copy(&bwait)).into()
        }
        unsafe extern "system" fn Suspend<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRunnableTask_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRunnableTask_Impl::Suspend(this).into()
        }
        unsafe extern "system" fn Resume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRunnableTask_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRunnableTask_Impl::Resume(this).into()
        }
        unsafe extern "system" fn IsRunning<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32
        where
            Identity: IRunnableTask_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRunnableTask_Impl::IsRunning(this)
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Run: Run::<Identity, OFFSET>,
            Kill: Kill::<Identity, OFFSET>,
            Suspend: Suspend::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            IsRunning: IsRunning::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRunnableTask as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IScriptErrorList_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn advanceError(&self) -> windows_core::Result<()>;
    fn retreatError(&self) -> windows_core::Result<()>;
    fn canAdvanceError(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn canRetreatError(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn getErrorLine(&self) -> windows_core::Result<i32>;
    fn getErrorChar(&self) -> windows_core::Result<i32>;
    fn getErrorCode(&self) -> windows_core::Result<i32>;
    fn getErrorMsg(&self) -> windows_core::Result<windows_core::BSTR>;
    fn getErrorUrl(&self) -> windows_core::Result<windows_core::BSTR>;
    fn getAlwaysShowLockState(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn getDetailsPaneOpen(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn setDetailsPaneOpen(&self, fdetailspaneopen: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn getPerErrorDisplay(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn setPerErrorDisplay(&self, fpererrordisplay: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IScriptErrorList {}
#[cfg(feature = "Win32_System_Com")]
impl IScriptErrorList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IScriptErrorList_Vtbl
    where
        Identity: IScriptErrorList_Impl,
    {
        unsafe extern "system" fn advanceError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScriptErrorList_Impl::advanceError(this).into()
        }
        unsafe extern "system" fn retreatError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScriptErrorList_Impl::retreatError(this).into()
        }
        unsafe extern "system" fn canAdvanceError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcanadvance: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::canAdvanceError(this) {
                Ok(ok__) => {
                    pfcanadvance.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn canRetreatError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcanretreat: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::canRetreatError(this) {
                Ok(ok__) => {
                    pfcanretreat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getErrorLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plline: *mut i32) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getErrorLine(this) {
                Ok(ok__) => {
                    plline.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getErrorChar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plchar: *mut i32) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getErrorChar(this) {
                Ok(ok__) => {
                    plchar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getErrorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getErrorCode(this) {
                Ok(ok__) => {
                    plcode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getErrorMsg<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstr: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getErrorMsg(this) {
                Ok(ok__) => {
                    pstr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getErrorUrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstr: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getErrorUrl(this) {
                Ok(ok__) => {
                    pstr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getAlwaysShowLockState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfalwaysshowlocked: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getAlwaysShowLockState(this) {
                Ok(ok__) => {
                    pfalwaysshowlocked.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn getDetailsPaneOpen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdetailspaneopen: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getDetailsPaneOpen(this) {
                Ok(ok__) => {
                    pfdetailspaneopen.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn setDetailsPaneOpen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fdetailspaneopen: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScriptErrorList_Impl::setDetailsPaneOpen(this, core::mem::transmute_copy(&fdetailspaneopen)).into()
        }
        unsafe extern "system" fn getPerErrorDisplay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfpererrordisplay: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScriptErrorList_Impl::getPerErrorDisplay(this) {
                Ok(ok__) => {
                    pfpererrordisplay.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn setPerErrorDisplay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpererrordisplay: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IScriptErrorList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScriptErrorList_Impl::setPerErrorDisplay(this, core::mem::transmute_copy(&fpererrordisplay)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            advanceError: advanceError::<Identity, OFFSET>,
            retreatError: retreatError::<Identity, OFFSET>,
            canAdvanceError: canAdvanceError::<Identity, OFFSET>,
            canRetreatError: canRetreatError::<Identity, OFFSET>,
            getErrorLine: getErrorLine::<Identity, OFFSET>,
            getErrorChar: getErrorChar::<Identity, OFFSET>,
            getErrorCode: getErrorCode::<Identity, OFFSET>,
            getErrorMsg: getErrorMsg::<Identity, OFFSET>,
            getErrorUrl: getErrorUrl::<Identity, OFFSET>,
            getAlwaysShowLockState: getAlwaysShowLockState::<Identity, OFFSET>,
            getDetailsPaneOpen: getDetailsPaneOpen::<Identity, OFFSET>,
            setDetailsPaneOpen: setDetailsPaneOpen::<Identity, OFFSET>,
            getPerErrorDisplay: getPerErrorDisplay::<Identity, OFFSET>,
            setPerErrorDisplay: setPerErrorDisplay::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IScriptErrorList as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait ISearchBoxInfo_Impl: Sized {
    fn GetCondition(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetText(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for ISearchBoxInfo {}
impl ISearchBoxInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISearchBoxInfo_Vtbl
    where
        Identity: ISearchBoxInfo_Impl,
    {
        unsafe extern "system" fn GetCondition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISearchBoxInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchBoxInfo_Impl::GetCondition(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISearchBoxInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISearchBoxInfo_Impl::GetText(this) {
                Ok(ok__) => {
                    ppsz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCondition: GetCondition::<Identity, OFFSET>,
            GetText: GetText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISearchBoxInfo as windows_core::Interface>::IID
    }
}
pub trait ISearchContext_Impl: Sized {
    fn GetSearchUrl(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetSearchText(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetSearchStyle(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for ISearchContext {}
impl ISearchContext_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISearchContext_Vtbl
    where
        Identity: ISearchContext_Impl,
    {
        unsafe extern "system" fn GetSearchUrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ISearchContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISearchContext_Impl::GetSearchUrl(this) {
                Ok(ok__) => {
                    pbstrsearchurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSearchText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ISearchContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISearchContext_Impl::GetSearchText(this) {
                Ok(ok__) => {
                    pbstrsearchtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSearchStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwsearchstyle: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISearchContext_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISearchContext_Impl::GetSearchStyle(this) {
                Ok(ok__) => {
                    pdwsearchstyle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSearchUrl: GetSearchUrl::<Identity, OFFSET>,
            GetSearchText: GetSearchText::<Identity, OFFSET>,
            GetSearchStyle: GetSearchStyle::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISearchContext as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait ISearchFolderItemFactory_Impl: Sized {
    fn SetDisplayName(&self, pszdisplayname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFolderTypeID(&self, ftid: &windows_core::GUID) -> windows_core::Result<()>;
    fn SetFolderLogicalViewMode(&self, flvm: FOLDERLOGICALVIEWMODE) -> windows_core::Result<()>;
    fn SetIconSize(&self, iiconsize: i32) -> windows_core::Result<()>;
    fn SetVisibleColumns(&self, cvisiblecolumns: u32, rgkey: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn SetSortColumns(&self, csortcolumns: u32, rgsortcolumns: *const SORTCOLUMN) -> windows_core::Result<()>;
    fn SetGroupColumn(&self, keygroup: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn SetStacks(&self, cstackkeys: u32, rgstackkeys: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
    fn SetScope(&self, psiascope: Option<&IShellItemArray>) -> windows_core::Result<()>;
    fn SetCondition(&self, pcondition: Option<&super::super::System::Search::ICondition>) -> windows_core::Result<()>;
    fn GetShellItem(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for ISearchFolderItemFactory {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl ISearchFolderItemFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISearchFolderItemFactory_Vtbl
    where
        Identity: ISearchFolderItemFactory_Impl,
    {
        unsafe extern "system" fn SetDisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdisplayname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetDisplayName(this, core::mem::transmute(&pszdisplayname)).into()
        }
        unsafe extern "system" fn SetFolderTypeID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ftid: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetFolderTypeID(this, core::mem::transmute(&ftid)).into()
        }
        unsafe extern "system" fn SetFolderLogicalViewMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flvm: FOLDERLOGICALVIEWMODE) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetFolderLogicalViewMode(this, core::mem::transmute_copy(&flvm)).into()
        }
        unsafe extern "system" fn SetIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iiconsize: i32) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetIconSize(this, core::mem::transmute_copy(&iiconsize)).into()
        }
        unsafe extern "system" fn SetVisibleColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cvisiblecolumns: u32, rgkey: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetVisibleColumns(this, core::mem::transmute_copy(&cvisiblecolumns), core::mem::transmute_copy(&rgkey)).into()
        }
        unsafe extern "system" fn SetSortColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, csortcolumns: u32, rgsortcolumns: *const SORTCOLUMN) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetSortColumns(this, core::mem::transmute_copy(&csortcolumns), core::mem::transmute_copy(&rgsortcolumns)).into()
        }
        unsafe extern "system" fn SetGroupColumn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keygroup: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetGroupColumn(this, core::mem::transmute_copy(&keygroup)).into()
        }
        unsafe extern "system" fn SetStacks<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cstackkeys: u32, rgstackkeys: *const PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetStacks(this, core::mem::transmute_copy(&cstackkeys), core::mem::transmute_copy(&rgstackkeys)).into()
        }
        unsafe extern "system" fn SetScope<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiascope: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetScope(this, windows_core::from_raw_borrowed(&psiascope)).into()
        }
        unsafe extern "system" fn SetCondition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcondition: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::SetCondition(this, windows_core::from_raw_borrowed(&pcondition)).into()
        }
        unsafe extern "system" fn GetShellItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISearchFolderItemFactory_Impl::GetShellItem(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: ISearchFolderItemFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISearchFolderItemFactory_Impl::GetIDList(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDisplayName: SetDisplayName::<Identity, OFFSET>,
            SetFolderTypeID: SetFolderTypeID::<Identity, OFFSET>,
            SetFolderLogicalViewMode: SetFolderLogicalViewMode::<Identity, OFFSET>,
            SetIconSize: SetIconSize::<Identity, OFFSET>,
            SetVisibleColumns: SetVisibleColumns::<Identity, OFFSET>,
            SetSortColumns: SetSortColumns::<Identity, OFFSET>,
            SetGroupColumn: SetGroupColumn::<Identity, OFFSET>,
            SetStacks: SetStacks::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            SetCondition: SetCondition::<Identity, OFFSET>,
            GetShellItem: GetShellItem::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISearchFolderItemFactory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ISharedBitmap_Impl: Sized {
    fn GetSharedBitmap(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
    fn GetSize(&self) -> windows_core::Result<super::super::Foundation::SIZE>;
    fn GetFormat(&self) -> windows_core::Result<WTS_ALPHATYPE>;
    fn InitializeBitmap(&self, hbm: super::super::Graphics::Gdi::HBITMAP, wtsat: WTS_ALPHATYPE) -> windows_core::Result<()>;
    fn Detach(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ISharedBitmap {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ISharedBitmap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISharedBitmap_Vtbl
    where
        Identity: ISharedBitmap_Impl,
    {
        unsafe extern "system" fn GetSharedBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbm: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: ISharedBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISharedBitmap_Impl::GetSharedBitmap(this) {
                Ok(ok__) => {
                    phbm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psize: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT
        where
            Identity: ISharedBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISharedBitmap_Impl::GetSize(this) {
                Ok(ok__) => {
                    psize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pat: *mut WTS_ALPHATYPE) -> windows_core::HRESULT
        where
            Identity: ISharedBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISharedBitmap_Impl::GetFormat(this) {
                Ok(ok__) => {
                    pat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InitializeBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hbm: super::super::Graphics::Gdi::HBITMAP, wtsat: WTS_ALPHATYPE) -> windows_core::HRESULT
        where
            Identity: ISharedBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharedBitmap_Impl::InitializeBitmap(this, core::mem::transmute_copy(&hbm), core::mem::transmute_copy(&wtsat)).into()
        }
        unsafe extern "system" fn Detach<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbm: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: ISharedBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISharedBitmap_Impl::Detach(this) {
                Ok(ok__) => {
                    phbm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSharedBitmap: GetSharedBitmap::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetFormat: GetFormat::<Identity, OFFSET>,
            InitializeBitmap: InitializeBitmap::<Identity, OFFSET>,
            Detach: Detach::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISharedBitmap as windows_core::Interface>::IID
    }
}
pub trait ISharingConfigurationManager_Impl: Sized {
    fn CreateShare(&self, dsid: DEF_SHARE_ID, role: SHARE_ROLE) -> windows_core::Result<()>;
    fn DeleteShare(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<()>;
    fn ShareExists(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<()>;
    fn GetSharePermissions(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<SHARE_ROLE>;
    fn SharePrinters(&self) -> windows_core::Result<()>;
    fn StopSharingPrinters(&self) -> windows_core::Result<()>;
    fn ArePrintersShared(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISharingConfigurationManager {}
impl ISharingConfigurationManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISharingConfigurationManager_Vtbl
    where
        Identity: ISharingConfigurationManager_Impl,
    {
        unsafe extern "system" fn CreateShare<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID, role: SHARE_ROLE) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharingConfigurationManager_Impl::CreateShare(this, core::mem::transmute_copy(&dsid), core::mem::transmute_copy(&role)).into()
        }
        unsafe extern "system" fn DeleteShare<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharingConfigurationManager_Impl::DeleteShare(this, core::mem::transmute_copy(&dsid)).into()
        }
        unsafe extern "system" fn ShareExists<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharingConfigurationManager_Impl::ShareExists(this, core::mem::transmute_copy(&dsid)).into()
        }
        unsafe extern "system" fn GetSharePermissions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID, prole: *mut SHARE_ROLE) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISharingConfigurationManager_Impl::GetSharePermissions(this, core::mem::transmute_copy(&dsid)) {
                Ok(ok__) => {
                    prole.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SharePrinters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharingConfigurationManager_Impl::SharePrinters(this).into()
        }
        unsafe extern "system" fn StopSharingPrinters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharingConfigurationManager_Impl::StopSharingPrinters(this).into()
        }
        unsafe extern "system" fn ArePrintersShared<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISharingConfigurationManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISharingConfigurationManager_Impl::ArePrintersShared(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateShare: CreateShare::<Identity, OFFSET>,
            DeleteShare: DeleteShare::<Identity, OFFSET>,
            ShareExists: ShareExists::<Identity, OFFSET>,
            GetSharePermissions: GetSharePermissions::<Identity, OFFSET>,
            SharePrinters: SharePrinters::<Identity, OFFSET>,
            StopSharingPrinters: StopSharingPrinters::<Identity, OFFSET>,
            ArePrintersShared: ArePrintersShared::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISharingConfigurationManager as windows_core::Interface>::IID
    }
}
pub trait IShellApp_Impl: Sized {
    fn GetAppInfo(&self, pai: *mut APPINFODATA) -> windows_core::Result<()>;
    fn GetPossibleActions(&self) -> windows_core::Result<u32>;
    fn GetSlowAppInfo(&self, psaid: *mut SLOWAPPINFO) -> windows_core::Result<()>;
    fn GetCachedSlowAppInfo(&self, psaid: *mut SLOWAPPINFO) -> windows_core::Result<()>;
    fn IsInstalled(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellApp {}
impl IShellApp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellApp_Vtbl
    where
        Identity: IShellApp_Impl,
    {
        unsafe extern "system" fn GetAppInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pai: *mut APPINFODATA) -> windows_core::HRESULT
        where
            Identity: IShellApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellApp_Impl::GetAppInfo(this, core::mem::transmute_copy(&pai)).into()
        }
        unsafe extern "system" fn GetPossibleActions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwactions: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellApp_Impl::GetPossibleActions(this) {
                Ok(ok__) => {
                    pdwactions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSlowAppInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psaid: *mut SLOWAPPINFO) -> windows_core::HRESULT
        where
            Identity: IShellApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellApp_Impl::GetSlowAppInfo(this, core::mem::transmute_copy(&psaid)).into()
        }
        unsafe extern "system" fn GetCachedSlowAppInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psaid: *mut SLOWAPPINFO) -> windows_core::HRESULT
        where
            Identity: IShellApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellApp_Impl::GetCachedSlowAppInfo(this, core::mem::transmute_copy(&psaid)).into()
        }
        unsafe extern "system" fn IsInstalled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellApp_Impl::IsInstalled(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAppInfo: GetAppInfo::<Identity, OFFSET>,
            GetPossibleActions: GetPossibleActions::<Identity, OFFSET>,
            GetSlowAppInfo: GetSlowAppInfo::<Identity, OFFSET>,
            GetCachedSlowAppInfo: GetCachedSlowAppInfo::<Identity, OFFSET>,
            IsInstalled: IsInstalled::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellApp as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellBrowser_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn InsertMenusSB(&self, hmenushared: super::WindowsAndMessaging::HMENU, lpmenuwidths: *mut super::super::System::Ole::OLEMENUGROUPWIDTHS) -> windows_core::Result<()>;
    fn SetMenuSB(&self, hmenushared: super::WindowsAndMessaging::HMENU, holemenures: isize, hwndactiveobject: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn RemoveMenusSB(&self, hmenushared: super::WindowsAndMessaging::HMENU) -> windows_core::Result<()>;
    fn SetStatusTextSB(&self, pszstatustext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EnableModelessSB(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn TranslateAcceleratorSB(&self, pmsg: *const super::WindowsAndMessaging::MSG, wid: u16) -> windows_core::Result<()>;
    fn BrowseObject(&self, pidl: *const Common::ITEMIDLIST, wflags: u32) -> windows_core::Result<()>;
    fn GetViewStateStream(&self, grfmode: u32) -> windows_core::Result<super::super::System::Com::IStream>;
    fn GetControlWindow(&self, id: u32) -> windows_core::Result<super::super::Foundation::HWND>;
    fn SendControlMsg(&self, id: u32, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, pret: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
    fn QueryActiveShellView(&self) -> windows_core::Result<IShellView>;
    fn OnViewWindowActive(&self, pshv: Option<&IShellView>) -> windows_core::Result<()>;
    fn SetToolbarItems(&self, lpbuttons: *const super::Controls::TBBUTTON, nbuttons: u32, uflags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellBrowser {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellBrowser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellBrowser_Vtbl
    where
        Identity: IShellBrowser_Impl,
    {
        unsafe extern "system" fn InsertMenusSB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenushared: super::WindowsAndMessaging::HMENU, lpmenuwidths: *mut super::super::System::Ole::OLEMENUGROUPWIDTHS) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::InsertMenusSB(this, core::mem::transmute_copy(&hmenushared), core::mem::transmute_copy(&lpmenuwidths)).into()
        }
        unsafe extern "system" fn SetMenuSB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenushared: super::WindowsAndMessaging::HMENU, holemenures: isize, hwndactiveobject: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::SetMenuSB(this, core::mem::transmute_copy(&hmenushared), core::mem::transmute_copy(&holemenures), core::mem::transmute_copy(&hwndactiveobject)).into()
        }
        unsafe extern "system" fn RemoveMenusSB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenushared: super::WindowsAndMessaging::HMENU) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::RemoveMenusSB(this, core::mem::transmute_copy(&hmenushared)).into()
        }
        unsafe extern "system" fn SetStatusTextSB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszstatustext: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::SetStatusTextSB(this, core::mem::transmute(&pszstatustext)).into()
        }
        unsafe extern "system" fn EnableModelessSB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::EnableModelessSB(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn TranslateAcceleratorSB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG, wid: u16) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::TranslateAcceleratorSB(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&wid)).into()
        }
        unsafe extern "system" fn BrowseObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, wflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::BrowseObject(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&wflags)).into()
        }
        unsafe extern "system" fn GetViewStateStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfmode: u32, ppstrm: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellBrowser_Impl::GetViewStateStream(this, core::mem::transmute_copy(&grfmode)) {
                Ok(ok__) => {
                    ppstrm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetControlWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellBrowser_Impl::GetControlWindow(this, core::mem::transmute_copy(&id)) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SendControlMsg<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, pret: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::SendControlMsg(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&pret)).into()
        }
        unsafe extern "system" fn QueryActiveShellView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellBrowser_Impl::QueryActiveShellView(this) {
                Ok(ok__) => {
                    ppshv.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnViewWindowActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshv: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::OnViewWindowActive(this, windows_core::from_raw_borrowed(&pshv)).into()
        }
        unsafe extern "system" fn SetToolbarItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbuttons: *const super::Controls::TBBUTTON, nbuttons: u32, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellBrowser_Impl::SetToolbarItems(this, core::mem::transmute_copy(&lpbuttons), core::mem::transmute_copy(&nbuttons), core::mem::transmute_copy(&uflags)).into()
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            InsertMenusSB: InsertMenusSB::<Identity, OFFSET>,
            SetMenuSB: SetMenuSB::<Identity, OFFSET>,
            RemoveMenusSB: RemoveMenusSB::<Identity, OFFSET>,
            SetStatusTextSB: SetStatusTextSB::<Identity, OFFSET>,
            EnableModelessSB: EnableModelessSB::<Identity, OFFSET>,
            TranslateAcceleratorSB: TranslateAcceleratorSB::<Identity, OFFSET>,
            BrowseObject: BrowseObject::<Identity, OFFSET>,
            GetViewStateStream: GetViewStateStream::<Identity, OFFSET>,
            GetControlWindow: GetControlWindow::<Identity, OFFSET>,
            SendControlMsg: SendControlMsg::<Identity, OFFSET>,
            QueryActiveShellView: QueryActiveShellView::<Identity, OFFSET>,
            OnViewWindowActive: OnViewWindowActive::<Identity, OFFSET>,
            SetToolbarItems: SetToolbarItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellBrowser as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellChangeNotify_Impl: Sized {
    fn OnChange(&self, levent: i32, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellChangeNotify {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellChangeNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellChangeNotify_Vtbl
    where
        Identity: IShellChangeNotify_Impl,
    {
        unsafe extern "system" fn OnChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, levent: i32, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellChangeNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellChangeNotify_Impl::OnChange(this, core::mem::transmute_copy(&levent), core::mem::transmute_copy(&pidl1), core::mem::transmute_copy(&pidl2)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnChange: OnChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellChangeNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellDetails_Impl: Sized {
    fn GetDetailsOf(&self, pidl: *const Common::ITEMIDLIST, icolumn: u32, pdetails: *mut Common::SHELLDETAILS) -> windows_core::Result<()>;
    fn ColumnClick(&self, icolumn: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellDetails {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellDetails_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDetails_Vtbl
    where
        Identity: IShellDetails_Impl,
    {
        unsafe extern "system" fn GetDetailsOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, icolumn: u32, pdetails: *mut Common::SHELLDETAILS) -> windows_core::HRESULT
        where
            Identity: IShellDetails_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDetails_Impl::GetDetailsOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&icolumn), core::mem::transmute_copy(&pdetails)).into()
        }
        unsafe extern "system" fn ColumnClick<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, icolumn: u32) -> windows_core::HRESULT
        where
            Identity: IShellDetails_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDetails_Impl::ColumnClick(this, core::mem::transmute_copy(&icolumn)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDetailsOf: GetDetailsOf::<Identity, OFFSET>,
            ColumnClick: ColumnClick::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDetails as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellDispatch_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn NameSpace(&self, vdir: &windows_core::VARIANT) -> windows_core::Result<Folder>;
    fn BrowseForFolder(&self, hwnd: i32, title: &windows_core::BSTR, options: i32, rootfolder: &windows_core::VARIANT) -> windows_core::Result<Folder>;
    fn Windows(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Open(&self, vdir: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn Explore(&self, vdir: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn MinimizeAll(&self) -> windows_core::Result<()>;
    fn UndoMinimizeALL(&self) -> windows_core::Result<()>;
    fn FileRun(&self) -> windows_core::Result<()>;
    fn CascadeWindows(&self) -> windows_core::Result<()>;
    fn TileVertically(&self) -> windows_core::Result<()>;
    fn TileHorizontally(&self) -> windows_core::Result<()>;
    fn ShutdownWindows(&self) -> windows_core::Result<()>;
    fn Suspend(&self) -> windows_core::Result<()>;
    fn EjectPC(&self) -> windows_core::Result<()>;
    fn SetTime(&self) -> windows_core::Result<()>;
    fn TrayProperties(&self) -> windows_core::Result<()>;
    fn Help(&self) -> windows_core::Result<()>;
    fn FindFiles(&self) -> windows_core::Result<()>;
    fn FindComputer(&self) -> windows_core::Result<()>;
    fn RefreshMenu(&self) -> windows_core::Result<()>;
    fn ControlPanelItem(&self, bstrdir: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellDispatch {}
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDispatch_Vtbl
    where
        Identity: IShellDispatch_Impl,
    {
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NameSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vdir: core::mem::MaybeUninit<windows_core::VARIANT>, ppsdf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch_Impl::NameSpace(this, core::mem::transmute(&vdir)) {
                Ok(ok__) => {
                    ppsdf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BrowseForFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: i32, title: core::mem::MaybeUninit<windows_core::BSTR>, options: i32, rootfolder: core::mem::MaybeUninit<windows_core::VARIANT>, ppsdf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch_Impl::BrowseForFolder(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&title), core::mem::transmute_copy(&options), core::mem::transmute(&rootfolder)) {
                Ok(ok__) => {
                    ppsdf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Windows<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch_Impl::Windows(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Open<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vdir: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::Open(this, core::mem::transmute(&vdir)).into()
        }
        unsafe extern "system" fn Explore<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vdir: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::Explore(this, core::mem::transmute(&vdir)).into()
        }
        unsafe extern "system" fn MinimizeAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::MinimizeAll(this).into()
        }
        unsafe extern "system" fn UndoMinimizeALL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::UndoMinimizeALL(this).into()
        }
        unsafe extern "system" fn FileRun<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::FileRun(this).into()
        }
        unsafe extern "system" fn CascadeWindows<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::CascadeWindows(this).into()
        }
        unsafe extern "system" fn TileVertically<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::TileVertically(this).into()
        }
        unsafe extern "system" fn TileHorizontally<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::TileHorizontally(this).into()
        }
        unsafe extern "system" fn ShutdownWindows<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::ShutdownWindows(this).into()
        }
        unsafe extern "system" fn Suspend<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::Suspend(this).into()
        }
        unsafe extern "system" fn EjectPC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::EjectPC(this).into()
        }
        unsafe extern "system" fn SetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::SetTime(this).into()
        }
        unsafe extern "system" fn TrayProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::TrayProperties(this).into()
        }
        unsafe extern "system" fn Help<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::Help(this).into()
        }
        unsafe extern "system" fn FindFiles<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::FindFiles(this).into()
        }
        unsafe extern "system" fn FindComputer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::FindComputer(this).into()
        }
        unsafe extern "system" fn RefreshMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::RefreshMenu(this).into()
        }
        unsafe extern "system" fn ControlPanelItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrdir: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch_Impl::ControlPanelItem(this, core::mem::transmute(&bstrdir)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            NameSpace: NameSpace::<Identity, OFFSET>,
            BrowseForFolder: BrowseForFolder::<Identity, OFFSET>,
            Windows: Windows::<Identity, OFFSET>,
            Open: Open::<Identity, OFFSET>,
            Explore: Explore::<Identity, OFFSET>,
            MinimizeAll: MinimizeAll::<Identity, OFFSET>,
            UndoMinimizeALL: UndoMinimizeALL::<Identity, OFFSET>,
            FileRun: FileRun::<Identity, OFFSET>,
            CascadeWindows: CascadeWindows::<Identity, OFFSET>,
            TileVertically: TileVertically::<Identity, OFFSET>,
            TileHorizontally: TileHorizontally::<Identity, OFFSET>,
            ShutdownWindows: ShutdownWindows::<Identity, OFFSET>,
            Suspend: Suspend::<Identity, OFFSET>,
            EjectPC: EjectPC::<Identity, OFFSET>,
            SetTime: SetTime::<Identity, OFFSET>,
            TrayProperties: TrayProperties::<Identity, OFFSET>,
            Help: Help::<Identity, OFFSET>,
            FindFiles: FindFiles::<Identity, OFFSET>,
            FindComputer: FindComputer::<Identity, OFFSET>,
            RefreshMenu: RefreshMenu::<Identity, OFFSET>,
            ControlPanelItem: ControlPanelItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellDispatch2_Impl: Sized + IShellDispatch_Impl {
    fn IsRestricted(&self, group: &windows_core::BSTR, restriction: &windows_core::BSTR) -> windows_core::Result<i32>;
    fn ShellExecute(&self, file: &windows_core::BSTR, vargs: &windows_core::VARIANT, vdir: &windows_core::VARIANT, voperation: &windows_core::VARIANT, vshow: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn FindPrinter(&self, name: &windows_core::BSTR, location: &windows_core::BSTR, model: &windows_core::BSTR) -> windows_core::Result<()>;
    fn GetSystemInformation(&self, name: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn ServiceStart(&self, servicename: &windows_core::BSTR, persistent: &windows_core::VARIANT) -> windows_core::Result<windows_core::VARIANT>;
    fn ServiceStop(&self, servicename: &windows_core::BSTR, persistent: &windows_core::VARIANT) -> windows_core::Result<windows_core::VARIANT>;
    fn IsServiceRunning(&self, servicename: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn CanStartStopService(&self, servicename: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn ShowBrowserBar(&self, bstrclsid: &windows_core::BSTR, bshow: &windows_core::VARIANT) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellDispatch2 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDispatch2_Vtbl
    where
        Identity: IShellDispatch2_Impl,
    {
        unsafe extern "system" fn IsRestricted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: core::mem::MaybeUninit<windows_core::BSTR>, restriction: core::mem::MaybeUninit<windows_core::BSTR>, plrestrictvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::IsRestricted(this, core::mem::transmute(&group), core::mem::transmute(&restriction)) {
                Ok(ok__) => {
                    plrestrictvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShellExecute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: core::mem::MaybeUninit<windows_core::BSTR>, vargs: core::mem::MaybeUninit<windows_core::VARIANT>, vdir: core::mem::MaybeUninit<windows_core::VARIANT>, voperation: core::mem::MaybeUninit<windows_core::VARIANT>, vshow: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch2_Impl::ShellExecute(this, core::mem::transmute(&file), core::mem::transmute(&vargs), core::mem::transmute(&vdir), core::mem::transmute(&voperation), core::mem::transmute(&vshow)).into()
        }
        unsafe extern "system" fn FindPrinter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: core::mem::MaybeUninit<windows_core::BSTR>, location: core::mem::MaybeUninit<windows_core::BSTR>, model: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch2_Impl::FindPrinter(this, core::mem::transmute(&name), core::mem::transmute(&location), core::mem::transmute(&model)).into()
        }
        unsafe extern "system" fn GetSystemInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: core::mem::MaybeUninit<windows_core::BSTR>, pv: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::GetSystemInformation(this, core::mem::transmute(&name)) {
                Ok(ok__) => {
                    pv.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ServiceStart<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: core::mem::MaybeUninit<windows_core::BSTR>, persistent: core::mem::MaybeUninit<windows_core::VARIANT>, psuccess: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::ServiceStart(this, core::mem::transmute(&servicename), core::mem::transmute(&persistent)) {
                Ok(ok__) => {
                    psuccess.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ServiceStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: core::mem::MaybeUninit<windows_core::BSTR>, persistent: core::mem::MaybeUninit<windows_core::VARIANT>, psuccess: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::ServiceStop(this, core::mem::transmute(&servicename), core::mem::transmute(&persistent)) {
                Ok(ok__) => {
                    psuccess.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsServiceRunning<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: core::mem::MaybeUninit<windows_core::BSTR>, prunning: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::IsServiceRunning(this, core::mem::transmute(&servicename)) {
                Ok(ok__) => {
                    prunning.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanStartStopService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: core::mem::MaybeUninit<windows_core::BSTR>, pcanstartstop: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::CanStartStopService(this, core::mem::transmute(&servicename)) {
                Ok(ok__) => {
                    pcanstartstop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowBrowserBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrclsid: core::mem::MaybeUninit<windows_core::BSTR>, bshow: core::mem::MaybeUninit<windows_core::VARIANT>, psuccess: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch2_Impl::ShowBrowserBar(this, core::mem::transmute(&bstrclsid), core::mem::transmute(&bshow)) {
                Ok(ok__) => {
                    psuccess.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IShellDispatch_Vtbl::new::<Identity, OFFSET>(),
            IsRestricted: IsRestricted::<Identity, OFFSET>,
            ShellExecute: ShellExecute::<Identity, OFFSET>,
            FindPrinter: FindPrinter::<Identity, OFFSET>,
            GetSystemInformation: GetSystemInformation::<Identity, OFFSET>,
            ServiceStart: ServiceStart::<Identity, OFFSET>,
            ServiceStop: ServiceStop::<Identity, OFFSET>,
            IsServiceRunning: IsServiceRunning::<Identity, OFFSET>,
            CanStartStopService: CanStartStopService::<Identity, OFFSET>,
            ShowBrowserBar: ShowBrowserBar::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellDispatch3_Impl: Sized + IShellDispatch2_Impl {
    fn AddToRecent(&self, varfile: &windows_core::VARIANT, bstrcategory: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellDispatch3 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDispatch3_Vtbl
    where
        Identity: IShellDispatch3_Impl,
    {
        unsafe extern "system" fn AddToRecent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varfile: core::mem::MaybeUninit<windows_core::VARIANT>, bstrcategory: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch3_Impl::AddToRecent(this, core::mem::transmute(&varfile), core::mem::transmute(&bstrcategory)).into()
        }
        Self { base__: IShellDispatch2_Vtbl::new::<Identity, OFFSET>(), AddToRecent: AddToRecent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellDispatch4_Impl: Sized + IShellDispatch3_Impl {
    fn WindowsSecurity(&self) -> windows_core::Result<()>;
    fn ToggleDesktop(&self) -> windows_core::Result<()>;
    fn ExplorerPolicy(&self, bstrpolicyname: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn GetSetting(&self, lsetting: i32) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellDispatch4 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch4_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDispatch4_Vtbl
    where
        Identity: IShellDispatch4_Impl,
    {
        unsafe extern "system" fn WindowsSecurity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch4_Impl::WindowsSecurity(this).into()
        }
        unsafe extern "system" fn ToggleDesktop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch4_Impl::ToggleDesktop(this).into()
        }
        unsafe extern "system" fn ExplorerPolicy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpolicyname: core::mem::MaybeUninit<windows_core::BSTR>, pvalue: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellDispatch4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch4_Impl::ExplorerPolicy(this, core::mem::transmute(&bstrpolicyname)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSetting<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lsetting: i32, presult: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellDispatch4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellDispatch4_Impl::GetSetting(this, core::mem::transmute_copy(&lsetting)) {
                Ok(ok__) => {
                    presult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IShellDispatch3_Vtbl::new::<Identity, OFFSET>(),
            WindowsSecurity: WindowsSecurity::<Identity, OFFSET>,
            ToggleDesktop: ToggleDesktop::<Identity, OFFSET>,
            ExplorerPolicy: ExplorerPolicy::<Identity, OFFSET>,
            GetSetting: GetSetting::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch4 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<IShellDispatch3 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellDispatch5_Impl: Sized + IShellDispatch4_Impl {
    fn WindowSwitcher(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellDispatch5 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch5_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDispatch5_Vtbl
    where
        Identity: IShellDispatch5_Impl,
    {
        unsafe extern "system" fn WindowSwitcher<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch5_Impl::WindowSwitcher(this).into()
        }
        Self { base__: IShellDispatch4_Vtbl::new::<Identity, OFFSET>(), WindowSwitcher: WindowSwitcher::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch5 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<IShellDispatch3 as windows_core::Interface>::IID || iid == &<IShellDispatch4 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellDispatch6_Impl: Sized + IShellDispatch5_Impl {
    fn SearchCommand(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellDispatch6 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch6_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellDispatch6_Vtbl
    where
        Identity: IShellDispatch6_Impl,
    {
        unsafe extern "system" fn SearchCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellDispatch6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellDispatch6_Impl::SearchCommand(this).into()
        }
        Self { base__: IShellDispatch5_Vtbl::new::<Identity, OFFSET>(), SearchCommand: SearchCommand::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch6 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<IShellDispatch3 as windows_core::Interface>::IID || iid == &<IShellDispatch4 as windows_core::Interface>::IID || iid == &<IShellDispatch5 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
pub trait IShellExtInit_Impl: Sized {
    fn Initialize(&self, pidlfolder: *const Common::ITEMIDLIST, pdtobj: Option<&super::super::System::Com::IDataObject>, hkeyprogid: super::super::System::Registry::HKEY) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellExtInit {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl IShellExtInit_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellExtInit_Vtbl
    where
        Identity: IShellExtInit_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, pdtobj: *mut core::ffi::c_void, hkeyprogid: super::super::System::Registry::HKEY) -> windows_core::HRESULT
        where
            Identity: IShellExtInit_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellExtInit_Impl::Initialize(this, core::mem::transmute_copy(&pidlfolder), windows_core::from_raw_borrowed(&pdtobj), core::mem::transmute_copy(&hkeyprogid)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellExtInit as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellFavoritesNameSpace_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn MoveSelectionUp(&self) -> windows_core::Result<()>;
    fn MoveSelectionDown(&self) -> windows_core::Result<()>;
    fn ResetSort(&self) -> windows_core::Result<()>;
    fn NewFolder(&self) -> windows_core::Result<()>;
    fn Synchronize(&self) -> windows_core::Result<()>;
    fn Import(&self) -> windows_core::Result<()>;
    fn Export(&self) -> windows_core::Result<()>;
    fn InvokeContextMenuCommand(&self, strcommand: &windows_core::BSTR) -> windows_core::Result<()>;
    fn MoveSelectionTo(&self) -> windows_core::Result<()>;
    fn SubscriptionsEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn CreateSubscriptionForSelection(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn DeleteSubscriptionForSelection(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetRoot(&self, bstrfullpath: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellFavoritesNameSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IShellFavoritesNameSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFavoritesNameSpace_Vtbl
    where
        Identity: IShellFavoritesNameSpace_Impl,
    {
        unsafe extern "system" fn MoveSelectionUp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::MoveSelectionUp(this).into()
        }
        unsafe extern "system" fn MoveSelectionDown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::MoveSelectionDown(this).into()
        }
        unsafe extern "system" fn ResetSort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::ResetSort(this).into()
        }
        unsafe extern "system" fn NewFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::NewFolder(this).into()
        }
        unsafe extern "system" fn Synchronize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::Synchronize(this).into()
        }
        unsafe extern "system" fn Import<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::Import(this).into()
        }
        unsafe extern "system" fn Export<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::Export(this).into()
        }
        unsafe extern "system" fn InvokeContextMenuCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strcommand: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::InvokeContextMenuCommand(this, core::mem::transmute(&strcommand)).into()
        }
        unsafe extern "system" fn MoveSelectionTo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::MoveSelectionTo(this).into()
        }
        unsafe extern "system" fn SubscriptionsEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFavoritesNameSpace_Impl::SubscriptionsEnabled(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateSubscriptionForSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFavoritesNameSpace_Impl::CreateSubscriptionForSelection(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DeleteSubscriptionForSelection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFavoritesNameSpace_Impl::DeleteSubscriptionForSelection(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrfullpath: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFavoritesNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFavoritesNameSpace_Impl::SetRoot(this, core::mem::transmute(&bstrfullpath)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            MoveSelectionUp: MoveSelectionUp::<Identity, OFFSET>,
            MoveSelectionDown: MoveSelectionDown::<Identity, OFFSET>,
            ResetSort: ResetSort::<Identity, OFFSET>,
            NewFolder: NewFolder::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
            Import: Import::<Identity, OFFSET>,
            Export: Export::<Identity, OFFSET>,
            InvokeContextMenuCommand: InvokeContextMenuCommand::<Identity, OFFSET>,
            MoveSelectionTo: MoveSelectionTo::<Identity, OFFSET>,
            SubscriptionsEnabled: SubscriptionsEnabled::<Identity, OFFSET>,
            CreateSubscriptionForSelection: CreateSubscriptionForSelection::<Identity, OFFSET>,
            DeleteSubscriptionForSelection: DeleteSubscriptionForSelection::<Identity, OFFSET>,
            SetRoot: SetRoot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFavoritesNameSpace as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IShellFolder_Impl: Sized {
    fn ParseDisplayName(&self, hwnd: super::super::Foundation::HWND, pbc: Option<&super::super::System::Com::IBindCtx>, pszdisplayname: &windows_core::PCWSTR, pcheaten: *const u32, ppidl: *mut *mut Common::ITEMIDLIST, pdwattributes: *mut u32) -> windows_core::Result<()>;
    fn EnumObjects(&self, hwnd: super::super::Foundation::HWND, grfflags: u32, ppenumidlist: *mut Option<IEnumIDList>) -> windows_core::HRESULT;
    fn BindToObject(&self, pidl: *const Common::ITEMIDLIST, pbc: Option<&super::super::System::Com::IBindCtx>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn BindToStorage(&self, pidl: *const Common::ITEMIDLIST, pbc: Option<&super::super::System::Com::IBindCtx>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn CompareIDs(&self, lparam: super::super::Foundation::LPARAM, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT;
    fn CreateViewObject(&self, hwndowner: super::super::Foundation::HWND, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetAttributesOf(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgfinout: *mut u32) -> windows_core::Result<()>;
    fn GetUIObjectOf(&self, hwndowner: super::super::Foundation::HWND, cidl: u32, apidl: *const *const Common::ITEMIDLIST, riid: *const windows_core::GUID, rgfreserved: *const u32, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetDisplayNameOf(&self, pidl: *const Common::ITEMIDLIST, uflags: SHGDNF, pname: *mut Common::STRRET) -> windows_core::Result<()>;
    fn SetNameOf(&self, hwnd: super::super::Foundation::HWND, pidl: *const Common::ITEMIDLIST, pszname: &windows_core::PCWSTR, uflags: SHGDNF, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellFolder {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IShellFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolder_Vtbl
    where
        Identity: IShellFolder_Impl,
    {
        unsafe extern "system" fn ParseDisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pbc: *mut core::ffi::c_void, pszdisplayname: windows_core::PCWSTR, pcheaten: *const u32, ppidl: *mut *mut Common::ITEMIDLIST, pdwattributes: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::ParseDisplayName(this, core::mem::transmute_copy(&hwnd), windows_core::from_raw_borrowed(&pbc), core::mem::transmute(&pszdisplayname), core::mem::transmute_copy(&pcheaten), core::mem::transmute_copy(&ppidl), core::mem::transmute_copy(&pdwattributes)).into()
        }
        unsafe extern "system" fn EnumObjects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, grfflags: u32, ppenumidlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::EnumObjects(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&grfflags), core::mem::transmute_copy(&ppenumidlist))
        }
        unsafe extern "system" fn BindToObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pbc: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::BindToObject(this, core::mem::transmute_copy(&pidl), windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn BindToStorage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pbc: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::BindToStorage(this, core::mem::transmute_copy(&pidl), windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn CompareIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lparam: super::super::Foundation::LPARAM, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::CompareIDs(this, core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&pidl1), core::mem::transmute_copy(&pidl2))
        }
        unsafe extern "system" fn CreateViewObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::CreateViewObject(this, core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetAttributesOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgfinout: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::GetAttributesOf(this, core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&rgfinout)).into()
        }
        unsafe extern "system" fn GetUIObjectOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, cidl: u32, apidl: *const *const Common::ITEMIDLIST, riid: *const windows_core::GUID, rgfreserved: *const u32, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::GetUIObjectOf(this, core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&rgfreserved), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetDisplayNameOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, uflags: SHGDNF, pname: *mut Common::STRRET) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::GetDisplayNameOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&pname)).into()
        }
        unsafe extern "system" fn SetNameOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pidl: *const Common::ITEMIDLIST, pszname: windows_core::PCWSTR, uflags: SHGDNF, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder_Impl::SetNameOf(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&pidl), core::mem::transmute(&pszname), core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&ppidlout)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ParseDisplayName: ParseDisplayName::<Identity, OFFSET>,
            EnumObjects: EnumObjects::<Identity, OFFSET>,
            BindToObject: BindToObject::<Identity, OFFSET>,
            BindToStorage: BindToStorage::<Identity, OFFSET>,
            CompareIDs: CompareIDs::<Identity, OFFSET>,
            CreateViewObject: CreateViewObject::<Identity, OFFSET>,
            GetAttributesOf: GetAttributesOf::<Identity, OFFSET>,
            GetUIObjectOf: GetUIObjectOf::<Identity, OFFSET>,
            GetDisplayNameOf: GetDisplayNameOf::<Identity, OFFSET>,
            SetNameOf: SetNameOf::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IShellFolder2_Impl: Sized + IShellFolder_Impl {
    fn GetDefaultSearchGUID(&self) -> windows_core::Result<windows_core::GUID>;
    fn EnumSearches(&self) -> windows_core::Result<IEnumExtraSearch>;
    fn GetDefaultColumn(&self, dwres: u32, psort: *mut u32, pdisplay: *mut u32) -> windows_core::Result<()>;
    fn GetDefaultColumnState(&self, icolumn: u32) -> windows_core::Result<Common::SHCOLSTATE>;
    fn GetDetailsEx(&self, pidl: *const Common::ITEMIDLIST, pscid: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::VARIANT>;
    fn GetDetailsOf(&self, pidl: *const Common::ITEMIDLIST, icolumn: u32, psd: *mut Common::SHELLDETAILS) -> windows_core::Result<()>;
    fn MapColumnToSCID(&self, icolumn: u32, pscid: *mut PropertiesSystem::PROPERTYKEY) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IShellFolder2 {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IShellFolder2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolder2_Vtbl
    where
        Identity: IShellFolder2_Impl,
    {
        unsafe extern "system" fn GetDefaultSearchGUID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolder2_Impl::GetDefaultSearchGUID(this) {
                Ok(ok__) => {
                    pguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumSearches<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolder2_Impl::EnumSearches(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultColumn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwres: u32, psort: *mut u32, pdisplay: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder2_Impl::GetDefaultColumn(this, core::mem::transmute_copy(&dwres), core::mem::transmute_copy(&psort), core::mem::transmute_copy(&pdisplay)).into()
        }
        unsafe extern "system" fn GetDefaultColumnState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, icolumn: u32, pcsflags: *mut Common::SHCOLSTATE) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolder2_Impl::GetDefaultColumnState(this, core::mem::transmute_copy(&icolumn)) {
                Ok(ok__) => {
                    pcsflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pscid: *const PropertiesSystem::PROPERTYKEY, pv: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolder2_Impl::GetDetailsEx(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pscid)) {
                Ok(ok__) => {
                    pv.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, icolumn: u32, psd: *mut Common::SHELLDETAILS) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder2_Impl::GetDetailsOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&icolumn), core::mem::transmute_copy(&psd)).into()
        }
        unsafe extern "system" fn MapColumnToSCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, icolumn: u32, pscid: *mut PropertiesSystem::PROPERTYKEY) -> windows_core::HRESULT
        where
            Identity: IShellFolder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolder2_Impl::MapColumnToSCID(this, core::mem::transmute_copy(&icolumn), core::mem::transmute_copy(&pscid)).into()
        }
        Self {
            base__: IShellFolder_Vtbl::new::<Identity, OFFSET>(),
            GetDefaultSearchGUID: GetDefaultSearchGUID::<Identity, OFFSET>,
            EnumSearches: EnumSearches::<Identity, OFFSET>,
            GetDefaultColumn: GetDefaultColumn::<Identity, OFFSET>,
            GetDefaultColumnState: GetDefaultColumnState::<Identity, OFFSET>,
            GetDetailsEx: GetDetailsEx::<Identity, OFFSET>,
            GetDetailsOf: GetDetailsOf::<Identity, OFFSET>,
            MapColumnToSCID: MapColumnToSCID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolder2 as windows_core::Interface>::IID || iid == &<IShellFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellFolderBand_Impl: Sized {
    fn InitializeSFB(&self, psf: Option<&IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn SetBandInfoSFB(&self, pbi: *const BANDINFOSFB) -> windows_core::Result<()>;
    fn GetBandInfoSFB(&self, pbi: *mut BANDINFOSFB) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellFolderBand {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellFolderBand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolderBand_Vtbl
    where
        Identity: IShellFolderBand_Impl,
    {
        unsafe extern "system" fn InitializeSFB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellFolderBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderBand_Impl::InitializeSFB(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn SetBandInfoSFB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbi: *const BANDINFOSFB) -> windows_core::HRESULT
        where
            Identity: IShellFolderBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderBand_Impl::SetBandInfoSFB(this, core::mem::transmute_copy(&pbi)).into()
        }
        unsafe extern "system" fn GetBandInfoSFB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbi: *mut BANDINFOSFB) -> windows_core::HRESULT
        where
            Identity: IShellFolderBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderBand_Impl::GetBandInfoSFB(this, core::mem::transmute_copy(&pbi)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeSFB: InitializeSFB::<Identity, OFFSET>,
            SetBandInfoSFB: SetBandInfoSFB::<Identity, OFFSET>,
            GetBandInfoSFB: GetBandInfoSFB::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderBand as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait IShellFolderView_Impl: Sized {
    fn Rearrange(&self, lparamsort: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn GetArrangeParam(&self) -> windows_core::Result<super::super::Foundation::LPARAM>;
    fn ArrangeGrid(&self) -> windows_core::Result<()>;
    fn AutoArrange(&self) -> windows_core::Result<()>;
    fn GetAutoArrange(&self) -> windows_core::Result<()>;
    fn AddObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn GetObject(&self, ppidl: *mut *mut Common::ITEMIDLIST, uitem: u32) -> windows_core::Result<()>;
    fn RemoveObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn GetObjectCount(&self) -> windows_core::Result<u32>;
    fn SetObjectCount(&self, ucount: u32, dwflags: u32) -> windows_core::Result<()>;
    fn UpdateObject(&self, pidlold: *const Common::ITEMIDLIST, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn RefreshObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn SetRedraw(&self, bredraw: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetSelectedCount(&self) -> windows_core::Result<u32>;
    fn GetSelectedObjects(&self, pppidl: *mut *mut *mut Common::ITEMIDLIST, puitems: *mut u32) -> windows_core::Result<()>;
    fn IsDropOnSource(&self, pdroptarget: Option<&super::super::System::Ole::IDropTarget>) -> windows_core::Result<()>;
    fn GetDragPoint(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetDropPoint(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn MoveIcons(&self, pdataobject: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn SetItemPos(&self, pidl: *const Common::ITEMIDLIST, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn IsBkDropTarget(&self, pdroptarget: Option<&super::super::System::Ole::IDropTarget>) -> windows_core::Result<()>;
    fn SetClipboard(&self, bmove: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetPoints(&self, pdataobject: Option<&super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn GetItemSpacing(&self) -> windows_core::Result<ITEMSPACING>;
    fn SetCallback(&self, pnewcb: Option<&IShellFolderViewCB>) -> windows_core::Result<IShellFolderViewCB>;
    fn Select(&self, dwflags: &SFVS_SELECT) -> windows_core::Result<()>;
    fn QuerySupport(&self, pdwsupport: *mut u32) -> windows_core::Result<()>;
    fn SetAutomationObject(&self, pdisp: Option<&super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellFolderView {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl IShellFolderView_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolderView_Vtbl
    where
        Identity: IShellFolderView_Impl,
    {
        unsafe extern "system" fn Rearrange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lparamsort: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::Rearrange(this, core::mem::transmute_copy(&lparamsort)).into()
        }
        unsafe extern "system" fn GetArrangeParam<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plparamsort: *mut super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::GetArrangeParam(this) {
                Ok(ok__) => {
                    plparamsort.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ArrangeGrid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::ArrangeGrid(this).into()
        }
        unsafe extern "system" fn AutoArrange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::AutoArrange(this).into()
        }
        unsafe extern "system" fn GetAutoArrange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::GetAutoArrange(this).into()
        }
        unsafe extern "system" fn AddObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::AddObject(this, core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    puitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST, uitem: u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::GetObject(this, core::mem::transmute_copy(&ppidl), core::mem::transmute_copy(&uitem)).into()
        }
        unsafe extern "system" fn RemoveObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::RemoveObject(this, core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    puitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetObjectCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pucount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::GetObjectCount(this) {
                Ok(ok__) => {
                    pucount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetObjectCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ucount: u32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::SetObjectCount(this, core::mem::transmute_copy(&ucount), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn UpdateObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlold: *const Common::ITEMIDLIST, pidlnew: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::UpdateObject(this, core::mem::transmute_copy(&pidlold), core::mem::transmute_copy(&pidlnew)) {
                Ok(ok__) => {
                    puitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RefreshObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::RefreshObject(this, core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    puitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRedraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bredraw: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::SetRedraw(this, core::mem::transmute_copy(&bredraw)).into()
        }
        unsafe extern "system" fn GetSelectedCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puselected: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::GetSelectedCount(this) {
                Ok(ok__) => {
                    puselected.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectedObjects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pppidl: *mut *mut *mut Common::ITEMIDLIST, puitems: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::GetSelectedObjects(this, core::mem::transmute_copy(&pppidl), core::mem::transmute_copy(&puitems)).into()
        }
        unsafe extern "system" fn IsDropOnSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdroptarget: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::IsDropOnSource(this, windows_core::from_raw_borrowed(&pdroptarget)).into()
        }
        unsafe extern "system" fn GetDragPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::GetDragPoint(this) {
                Ok(ok__) => {
                    ppt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDropPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::GetDropPoint(this) {
                Ok(ok__) => {
                    ppt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MoveIcons<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::MoveIcons(this, windows_core::from_raw_borrowed(&pdataobject)).into()
        }
        unsafe extern "system" fn SetItemPos<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppt: *const super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::SetItemPos(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&ppt)).into()
        }
        unsafe extern "system" fn IsBkDropTarget<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdroptarget: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::IsBkDropTarget(this, windows_core::from_raw_borrowed(&pdroptarget)).into()
        }
        unsafe extern "system" fn SetClipboard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bmove: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::SetClipboard(this, core::mem::transmute_copy(&bmove)).into()
        }
        unsafe extern "system" fn SetPoints<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::SetPoints(this, windows_core::from_raw_borrowed(&pdataobject)).into()
        }
        unsafe extern "system" fn GetItemSpacing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pspacing: *mut ITEMSPACING) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::GetItemSpacing(this) {
                Ok(ok__) => {
                    pspacing.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCallback<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnewcb: *mut core::ffi::c_void, ppoldcb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderView_Impl::SetCallback(this, windows_core::from_raw_borrowed(&pnewcb)) {
                Ok(ok__) => {
                    ppoldcb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Select<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::Select(this, core::mem::transmute(&dwflags)).into()
        }
        unsafe extern "system" fn QuerySupport<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwsupport: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::QuerySupport(this, core::mem::transmute_copy(&pdwsupport)).into()
        }
        unsafe extern "system" fn SetAutomationObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdisp: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderView_Impl::SetAutomationObject(this, windows_core::from_raw_borrowed(&pdisp)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Rearrange: Rearrange::<Identity, OFFSET>,
            GetArrangeParam: GetArrangeParam::<Identity, OFFSET>,
            ArrangeGrid: ArrangeGrid::<Identity, OFFSET>,
            AutoArrange: AutoArrange::<Identity, OFFSET>,
            GetAutoArrange: GetAutoArrange::<Identity, OFFSET>,
            AddObject: AddObject::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            RemoveObject: RemoveObject::<Identity, OFFSET>,
            GetObjectCount: GetObjectCount::<Identity, OFFSET>,
            SetObjectCount: SetObjectCount::<Identity, OFFSET>,
            UpdateObject: UpdateObject::<Identity, OFFSET>,
            RefreshObject: RefreshObject::<Identity, OFFSET>,
            SetRedraw: SetRedraw::<Identity, OFFSET>,
            GetSelectedCount: GetSelectedCount::<Identity, OFFSET>,
            GetSelectedObjects: GetSelectedObjects::<Identity, OFFSET>,
            IsDropOnSource: IsDropOnSource::<Identity, OFFSET>,
            GetDragPoint: GetDragPoint::<Identity, OFFSET>,
            GetDropPoint: GetDropPoint::<Identity, OFFSET>,
            MoveIcons: MoveIcons::<Identity, OFFSET>,
            SetItemPos: SetItemPos::<Identity, OFFSET>,
            IsBkDropTarget: IsBkDropTarget::<Identity, OFFSET>,
            SetClipboard: SetClipboard::<Identity, OFFSET>,
            SetPoints: SetPoints::<Identity, OFFSET>,
            GetItemSpacing: GetItemSpacing::<Identity, OFFSET>,
            SetCallback: SetCallback::<Identity, OFFSET>,
            Select: Select::<Identity, OFFSET>,
            QuerySupport: QuerySupport::<Identity, OFFSET>,
            SetAutomationObject: SetAutomationObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderView as windows_core::Interface>::IID
    }
}
pub trait IShellFolderViewCB_Impl: Sized {
    fn MessageSFVCB(&self, umsg: &SFVM_MESSAGE_ID, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellFolderViewCB {}
impl IShellFolderViewCB_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolderViewCB_Vtbl
    where
        Identity: IShellFolderViewCB_Impl,
    {
        unsafe extern "system" fn MessageSFVCB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewCB_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewCB_Impl::MessageSFVCB(this, core::mem::transmute(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), MessageSFVCB: MessageSFVCB::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewCB as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellFolderViewDual_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Folder(&self) -> windows_core::Result<Folder>;
    fn SelectedItems(&self) -> windows_core::Result<FolderItems>;
    fn FocusedItem(&self) -> windows_core::Result<FolderItem>;
    fn SelectItem(&self, pvfi: *const windows_core::VARIANT, dwflags: i32) -> windows_core::Result<()>;
    fn PopupItemMenu(&self, pfi: Option<&FolderItem>, vx: &windows_core::VARIANT, vy: &windows_core::VARIANT) -> windows_core::Result<windows_core::BSTR>;
    fn Script(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn ViewOptions(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellFolderViewDual {}
#[cfg(feature = "Win32_System_Com")]
impl IShellFolderViewDual_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolderViewDual_Vtbl
    where
        Identity: IShellFolderViewDual_Impl,
    {
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::Application(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::Parent(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Folder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::Folder(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectedItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::SelectedItems(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FocusedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::FocusedItem(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvfi: *const core::mem::MaybeUninit<windows_core::VARIANT>, dwflags: i32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual_Impl::SelectItem(this, core::mem::transmute_copy(&pvfi), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn PopupItemMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfi: *mut core::ffi::c_void, vx: core::mem::MaybeUninit<windows_core::VARIANT>, vy: core::mem::MaybeUninit<windows_core::VARIANT>, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::PopupItemMenu(this, windows_core::from_raw_borrowed(&pfi), core::mem::transmute(&vx), core::mem::transmute(&vy)) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Script<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::Script(this) {
                Ok(ok__) => {
                    ppdisp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ViewOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plviewoptions: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual_Impl::ViewOptions(this) {
                Ok(ok__) => {
                    plviewoptions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Folder: Folder::<Identity, OFFSET>,
            SelectedItems: SelectedItems::<Identity, OFFSET>,
            FocusedItem: FocusedItem::<Identity, OFFSET>,
            SelectItem: SelectItem::<Identity, OFFSET>,
            PopupItemMenu: PopupItemMenu::<Identity, OFFSET>,
            Script: Script::<Identity, OFFSET>,
            ViewOptions: ViewOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewDual as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellFolderViewDual2_Impl: Sized + IShellFolderViewDual_Impl {
    fn CurrentViewMode(&self) -> windows_core::Result<u32>;
    fn SetCurrentViewMode(&self, viewmode: u32) -> windows_core::Result<()>;
    fn SelectItemRelative(&self, irelative: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellFolderViewDual2 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellFolderViewDual2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolderViewDual2_Vtbl
    where
        Identity: IShellFolderViewDual2_Impl,
    {
        unsafe extern "system" fn CurrentViewMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pviewmode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual2_Impl::CurrentViewMode(this) {
                Ok(ok__) => {
                    pviewmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentViewMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewmode: u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual2_Impl::SetCurrentViewMode(this, core::mem::transmute_copy(&viewmode)).into()
        }
        unsafe extern "system" fn SelectItemRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, irelative: i32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual2_Impl::SelectItemRelative(this, core::mem::transmute_copy(&irelative)).into()
        }
        Self {
            base__: IShellFolderViewDual_Vtbl::new::<Identity, OFFSET>(),
            CurrentViewMode: CurrentViewMode::<Identity, OFFSET>,
            SetCurrentViewMode: SetCurrentViewMode::<Identity, OFFSET>,
            SelectItemRelative: SelectItemRelative::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewDual2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellFolderViewDual as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellFolderViewDual3_Impl: Sized + IShellFolderViewDual2_Impl {
    fn GroupBy(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetGroupBy(&self, bstrgroupby: &windows_core::BSTR) -> windows_core::Result<()>;
    fn FolderFlags(&self) -> windows_core::Result<u32>;
    fn SetFolderFlags(&self, dwflags: u32) -> windows_core::Result<()>;
    fn SortColumns(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetSortColumns(&self, bstrsortcolumns: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SetIconSize(&self, iiconsize: i32) -> windows_core::Result<()>;
    fn IconSize(&self) -> windows_core::Result<i32>;
    fn FilterView(&self, bstrfiltertext: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellFolderViewDual3 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellFolderViewDual3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellFolderViewDual3_Vtbl
    where
        Identity: IShellFolderViewDual3_Impl,
    {
        unsafe extern "system" fn GroupBy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrgroupby: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual3_Impl::GroupBy(this) {
                Ok(ok__) => {
                    pbstrgroupby.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetGroupBy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrgroupby: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual3_Impl::SetGroupBy(this, core::mem::transmute(&bstrgroupby)).into()
        }
        unsafe extern "system" fn FolderFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual3_Impl::FolderFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFolderFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual3_Impl::SetFolderFlags(this, core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SortColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsortcolumns: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual3_Impl::SortColumns(this) {
                Ok(ok__) => {
                    pbstrsortcolumns.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSortColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrsortcolumns: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual3_Impl::SetSortColumns(this, core::mem::transmute(&bstrsortcolumns)).into()
        }
        unsafe extern "system" fn SetIconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iiconsize: i32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual3_Impl::SetIconSize(this, core::mem::transmute_copy(&iiconsize)).into()
        }
        unsafe extern "system" fn IconSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piiconsize: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellFolderViewDual3_Impl::IconSize(this) {
                Ok(ok__) => {
                    piiconsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FilterView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrfiltertext: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellFolderViewDual3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellFolderViewDual3_Impl::FilterView(this, core::mem::transmute(&bstrfiltertext)).into()
        }
        Self {
            base__: IShellFolderViewDual2_Vtbl::new::<Identity, OFFSET>(),
            GroupBy: GroupBy::<Identity, OFFSET>,
            SetGroupBy: SetGroupBy::<Identity, OFFSET>,
            FolderFlags: FolderFlags::<Identity, OFFSET>,
            SetFolderFlags: SetFolderFlags::<Identity, OFFSET>,
            SortColumns: SortColumns::<Identity, OFFSET>,
            SetSortColumns: SetSortColumns::<Identity, OFFSET>,
            SetIconSize: SetIconSize::<Identity, OFFSET>,
            IconSize: IconSize::<Identity, OFFSET>,
            FilterView: FilterView::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewDual3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellFolderViewDual as windows_core::Interface>::IID || iid == &<IShellFolderViewDual2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellIcon_Impl: Sized {
    fn GetIconOf(&self, pidl: *const Common::ITEMIDLIST, flags: u32) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellIcon {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellIcon_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellIcon_Vtbl
    where
        Identity: IShellIcon_Impl,
    {
        unsafe extern "system" fn GetIconOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, flags: u32, piconindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellIcon_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellIcon_Impl::GetIconOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    piconindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetIconOf: GetIconOf::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIcon as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellIconOverlay_Impl: Sized {
    fn GetOverlayIndex(&self, pidl: *const Common::ITEMIDLIST, pindex: *mut i32) -> windows_core::Result<()>;
    fn GetOverlayIconIndex(&self, pidl: *const Common::ITEMIDLIST, piconindex: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellIconOverlay {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellIconOverlay_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellIconOverlay_Vtbl
    where
        Identity: IShellIconOverlay_Impl,
    {
        unsafe extern "system" fn GetOverlayIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlay_Impl::GetOverlayIndex(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pindex)).into()
        }
        unsafe extern "system" fn GetOverlayIconIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, piconindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlay_Impl::GetOverlayIconIndex(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&piconindex)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetOverlayIndex: GetOverlayIndex::<Identity, OFFSET>,
            GetOverlayIconIndex: GetOverlayIconIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIconOverlay as windows_core::Interface>::IID
    }
}
pub trait IShellIconOverlayIdentifier_Impl: Sized {
    fn IsMemberOf(&self, pwszpath: &windows_core::PCWSTR, dwattrib: u32) -> windows_core::Result<()>;
    fn GetOverlayInfo(&self, pwsziconfile: windows_core::PWSTR, cchmax: i32, pindex: *mut i32, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn GetPriority(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IShellIconOverlayIdentifier {}
impl IShellIconOverlayIdentifier_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellIconOverlayIdentifier_Vtbl
    where
        Identity: IShellIconOverlayIdentifier_Impl,
    {
        unsafe extern "system" fn IsMemberOf<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszpath: windows_core::PCWSTR, dwattrib: u32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayIdentifier_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayIdentifier_Impl::IsMemberOf(this, core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwattrib)).into()
        }
        unsafe extern "system" fn GetOverlayInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwsziconfile: windows_core::PWSTR, cchmax: i32, pindex: *mut i32, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayIdentifier_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayIdentifier_Impl::GetOverlayInfo(this, core::mem::transmute_copy(&pwsziconfile), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&pindex), core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn GetPriority<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppriority: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayIdentifier_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellIconOverlayIdentifier_Impl::GetPriority(this) {
                Ok(ok__) => {
                    ppriority.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsMemberOf: IsMemberOf::<Identity, OFFSET>,
            GetOverlayInfo: GetOverlayInfo::<Identity, OFFSET>,
            GetPriority: GetPriority::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIconOverlayIdentifier as windows_core::Interface>::IID
    }
}
pub trait IShellIconOverlayManager_Impl: Sized {
    fn GetFileOverlayInfo(&self, pwszpath: &windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32) -> windows_core::Result<()>;
    fn GetReservedOverlayInfo(&self, pwszpath: &windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32, ireservedid: i32) -> windows_core::Result<()>;
    fn RefreshOverlayImages(&self, dwflags: u32) -> windows_core::Result<()>;
    fn LoadNonloadedOverlayIdentifiers(&self) -> windows_core::Result<()>;
    fn OverlayIndexFromImageIndex(&self, iimage: i32, piindex: *mut i32, fadd: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellIconOverlayManager {}
impl IShellIconOverlayManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellIconOverlayManager_Vtbl
    where
        Identity: IShellIconOverlayManager_Impl,
    {
        unsafe extern "system" fn GetFileOverlayInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszpath: windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayManager_Impl::GetFileOverlayInfo(this, core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwattrib), core::mem::transmute_copy(&pindex), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetReservedOverlayInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszpath: windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32, ireservedid: i32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayManager_Impl::GetReservedOverlayInfo(this, core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwattrib), core::mem::transmute_copy(&pindex), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&ireservedid)).into()
        }
        unsafe extern "system" fn RefreshOverlayImages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayManager_Impl::RefreshOverlayImages(this, core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn LoadNonloadedOverlayIdentifiers<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayManager_Impl::LoadNonloadedOverlayIdentifiers(this).into()
        }
        unsafe extern "system" fn OverlayIndexFromImageIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iimage: i32, piindex: *mut i32, fadd: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellIconOverlayManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellIconOverlayManager_Impl::OverlayIndexFromImageIndex(this, core::mem::transmute_copy(&iimage), core::mem::transmute_copy(&piindex), core::mem::transmute_copy(&fadd)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFileOverlayInfo: GetFileOverlayInfo::<Identity, OFFSET>,
            GetReservedOverlayInfo: GetReservedOverlayInfo::<Identity, OFFSET>,
            RefreshOverlayImages: RefreshOverlayImages::<Identity, OFFSET>,
            LoadNonloadedOverlayIdentifiers: LoadNonloadedOverlayIdentifiers::<Identity, OFFSET>,
            OverlayIndexFromImageIndex: OverlayIndexFromImageIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIconOverlayManager as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_Graphics_GdiPlus", feature = "Win32_System_Com_StructuredStorage"))]
pub trait IShellImageData_Impl: Sized {
    fn Decode(&self, dwflags: u32, cxdesired: u32, cydesired: u32) -> windows_core::Result<()>;
    fn Draw(&self, hdc: super::super::Graphics::Gdi::HDC, prcdest: *mut super::super::Foundation::RECT, prcsrc: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn NextFrame(&self) -> windows_core::Result<()>;
    fn NextPage(&self) -> windows_core::Result<()>;
    fn PrevPage(&self) -> windows_core::Result<()>;
    fn IsTransparent(&self) -> windows_core::Result<()>;
    fn IsAnimated(&self) -> windows_core::Result<()>;
    fn IsVector(&self) -> windows_core::Result<()>;
    fn IsMultipage(&self) -> windows_core::Result<()>;
    fn IsEditable(&self) -> windows_core::Result<()>;
    fn IsPrintable(&self) -> windows_core::Result<()>;
    fn IsDecoded(&self) -> windows_core::Result<()>;
    fn GetCurrentPage(&self, pnpage: *mut u32) -> windows_core::Result<()>;
    fn GetPageCount(&self, pcpages: *mut u32) -> windows_core::Result<()>;
    fn SelectPage(&self, ipage: u32) -> windows_core::Result<()>;
    fn GetSize(&self, psize: *mut super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn GetRawDataFormat(&self, pdataformat: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetPixelFormat(&self, pformat: *mut u32) -> windows_core::Result<()>;
    fn GetDelay(&self, pdwdelay: *mut u32) -> windows_core::Result<()>;
    fn GetProperties(&self, dwmode: u32) -> windows_core::Result<super::super::System::Com::StructuredStorage::IPropertySetStorage>;
    fn Rotate(&self, dwangle: u32) -> windows_core::Result<()>;
    fn Scale(&self, cx: u32, cy: u32, hints: super::super::Graphics::GdiPlus::InterpolationMode) -> windows_core::Result<()>;
    fn DiscardEdit(&self) -> windows_core::Result<()>;
    fn SetEncoderParams(&self, pbagenc: Option<&super::super::System::Com::StructuredStorage::IPropertyBag>) -> windows_core::Result<()>;
    fn DisplayName(&self, wszname: &windows_core::PCWSTR, cch: u32) -> windows_core::Result<()>;
    fn GetResolution(&self, puresolutionx: *mut u32, puresolutiony: *mut u32) -> windows_core::Result<()>;
    fn GetEncoderParams(&self, pguidfmt: *mut windows_core::GUID, ppencparams: *mut *mut u8) -> windows_core::Result<()>;
    fn RegisterAbort(&self, pabort: Option<&IShellImageDataAbort>) -> windows_core::Result<IShellImageDataAbort>;
    fn CloneFrame(&self, ppimg: *mut *mut u8) -> windows_core::Result<()>;
    fn ReplaceFrame(&self, pimg: *mut u8) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_Graphics_GdiPlus", feature = "Win32_System_Com_StructuredStorage"))]
impl windows_core::RuntimeName for IShellImageData {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_Graphics_GdiPlus", feature = "Win32_System_Com_StructuredStorage"))]
impl IShellImageData_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellImageData_Vtbl
    where
        Identity: IShellImageData_Impl,
    {
        unsafe extern "system" fn Decode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, cxdesired: u32, cydesired: u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::Decode(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&cxdesired), core::mem::transmute_copy(&cydesired)).into()
        }
        unsafe extern "system" fn Draw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prcdest: *mut super::super::Foundation::RECT, prcsrc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::Draw(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prcdest), core::mem::transmute_copy(&prcsrc)).into()
        }
        unsafe extern "system" fn NextFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::NextFrame(this).into()
        }
        unsafe extern "system" fn NextPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::NextPage(this).into()
        }
        unsafe extern "system" fn PrevPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::PrevPage(this).into()
        }
        unsafe extern "system" fn IsTransparent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsTransparent(this).into()
        }
        unsafe extern "system" fn IsAnimated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsAnimated(this).into()
        }
        unsafe extern "system" fn IsVector<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsVector(this).into()
        }
        unsafe extern "system" fn IsMultipage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsMultipage(this).into()
        }
        unsafe extern "system" fn IsEditable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsEditable(this).into()
        }
        unsafe extern "system" fn IsPrintable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsPrintable(this).into()
        }
        unsafe extern "system" fn IsDecoded<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::IsDecoded(this).into()
        }
        unsafe extern "system" fn GetCurrentPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnpage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetCurrentPage(this, core::mem::transmute_copy(&pnpage)).into()
        }
        unsafe extern "system" fn GetPageCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpages: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetPageCount(this, core::mem::transmute_copy(&pcpages)).into()
        }
        unsafe extern "system" fn SelectPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ipage: u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::SelectPage(this, core::mem::transmute_copy(&ipage)).into()
        }
        unsafe extern "system" fn GetSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psize: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetSize(this, core::mem::transmute_copy(&psize)).into()
        }
        unsafe extern "system" fn GetRawDataFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataformat: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetRawDataFormat(this, core::mem::transmute_copy(&pdataformat)).into()
        }
        unsafe extern "system" fn GetPixelFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetPixelFormat(this, core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn GetDelay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwdelay: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetDelay(this, core::mem::transmute_copy(&pdwdelay)).into()
        }
        unsafe extern "system" fn GetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmode: u32, pppropset: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellImageData_Impl::GetProperties(this, core::mem::transmute_copy(&dwmode)) {
                Ok(ok__) => {
                    pppropset.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Rotate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwangle: u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::Rotate(this, core::mem::transmute_copy(&dwangle)).into()
        }
        unsafe extern "system" fn Scale<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cx: u32, cy: u32, hints: super::super::Graphics::GdiPlus::InterpolationMode) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::Scale(this, core::mem::transmute_copy(&cx), core::mem::transmute_copy(&cy), core::mem::transmute_copy(&hints)).into()
        }
        unsafe extern "system" fn DiscardEdit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::DiscardEdit(this).into()
        }
        unsafe extern "system" fn SetEncoderParams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbagenc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::SetEncoderParams(this, windows_core::from_raw_borrowed(&pbagenc)).into()
        }
        unsafe extern "system" fn DisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wszname: windows_core::PCWSTR, cch: u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::DisplayName(this, core::mem::transmute(&wszname), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn GetResolution<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puresolutionx: *mut u32, puresolutiony: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetResolution(this, core::mem::transmute_copy(&puresolutionx), core::mem::transmute_copy(&puresolutiony)).into()
        }
        unsafe extern "system" fn GetEncoderParams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidfmt: *mut windows_core::GUID, ppencparams: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::GetEncoderParams(this, core::mem::transmute_copy(&pguidfmt), core::mem::transmute_copy(&ppencparams)).into()
        }
        unsafe extern "system" fn RegisterAbort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pabort: *mut core::ffi::c_void, ppabortprev: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellImageData_Impl::RegisterAbort(this, windows_core::from_raw_borrowed(&pabort)) {
                Ok(ok__) => {
                    ppabortprev.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CloneFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppimg: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::CloneFrame(this, core::mem::transmute_copy(&ppimg)).into()
        }
        unsafe extern "system" fn ReplaceFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pimg: *mut u8) -> windows_core::HRESULT
        where
            Identity: IShellImageData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageData_Impl::ReplaceFrame(this, core::mem::transmute_copy(&pimg)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Decode: Decode::<Identity, OFFSET>,
            Draw: Draw::<Identity, OFFSET>,
            NextFrame: NextFrame::<Identity, OFFSET>,
            NextPage: NextPage::<Identity, OFFSET>,
            PrevPage: PrevPage::<Identity, OFFSET>,
            IsTransparent: IsTransparent::<Identity, OFFSET>,
            IsAnimated: IsAnimated::<Identity, OFFSET>,
            IsVector: IsVector::<Identity, OFFSET>,
            IsMultipage: IsMultipage::<Identity, OFFSET>,
            IsEditable: IsEditable::<Identity, OFFSET>,
            IsPrintable: IsPrintable::<Identity, OFFSET>,
            IsDecoded: IsDecoded::<Identity, OFFSET>,
            GetCurrentPage: GetCurrentPage::<Identity, OFFSET>,
            GetPageCount: GetPageCount::<Identity, OFFSET>,
            SelectPage: SelectPage::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetRawDataFormat: GetRawDataFormat::<Identity, OFFSET>,
            GetPixelFormat: GetPixelFormat::<Identity, OFFSET>,
            GetDelay: GetDelay::<Identity, OFFSET>,
            GetProperties: GetProperties::<Identity, OFFSET>,
            Rotate: Rotate::<Identity, OFFSET>,
            Scale: Scale::<Identity, OFFSET>,
            DiscardEdit: DiscardEdit::<Identity, OFFSET>,
            SetEncoderParams: SetEncoderParams::<Identity, OFFSET>,
            DisplayName: DisplayName::<Identity, OFFSET>,
            GetResolution: GetResolution::<Identity, OFFSET>,
            GetEncoderParams: GetEncoderParams::<Identity, OFFSET>,
            RegisterAbort: RegisterAbort::<Identity, OFFSET>,
            CloneFrame: CloneFrame::<Identity, OFFSET>,
            ReplaceFrame: ReplaceFrame::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellImageData as windows_core::Interface>::IID
    }
}
pub trait IShellImageDataAbort_Impl: Sized {
    fn QueryAbort(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellImageDataAbort {}
impl IShellImageDataAbort_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellImageDataAbort_Vtbl
    where
        Identity: IShellImageDataAbort_Impl,
    {
        unsafe extern "system" fn QueryAbort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageDataAbort_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellImageDataAbort_Impl::QueryAbort(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryAbort: QueryAbort::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellImageDataAbort as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellImageDataFactory_Impl: Sized {
    fn CreateIShellImageData(&self) -> windows_core::Result<IShellImageData>;
    fn CreateImageFromFile(&self, pszpath: &windows_core::PCWSTR) -> windows_core::Result<IShellImageData>;
    fn CreateImageFromStream(&self, pstream: Option<&super::super::System::Com::IStream>) -> windows_core::Result<IShellImageData>;
    fn GetDataFormatFromPath(&self, pszpath: &windows_core::PCWSTR) -> windows_core::Result<windows_core::GUID>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellImageDataFactory {}
#[cfg(feature = "Win32_System_Com")]
impl IShellImageDataFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellImageDataFactory_Vtbl
    where
        Identity: IShellImageDataFactory_Impl,
    {
        unsafe extern "system" fn CreateIShellImageData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshimg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageDataFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellImageDataFactory_Impl::CreateIShellImageData(this) {
                Ok(ok__) => {
                    ppshimg.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateImageFromFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, ppshimg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageDataFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellImageDataFactory_Impl::CreateImageFromFile(this, core::mem::transmute(&pszpath)) {
                Ok(ok__) => {
                    ppshimg.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateImageFromStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstream: *mut core::ffi::c_void, ppshimg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellImageDataFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellImageDataFactory_Impl::CreateImageFromStream(this, windows_core::from_raw_borrowed(&pstream)) {
                Ok(ok__) => {
                    ppshimg.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataFormatFromPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, pdataformat: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IShellImageDataFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellImageDataFactory_Impl::GetDataFormatFromPath(this, core::mem::transmute(&pszpath)) {
                Ok(ok__) => {
                    pdataformat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateIShellImageData: CreateIShellImageData::<Identity, OFFSET>,
            CreateImageFromFile: CreateImageFromFile::<Identity, OFFSET>,
            CreateImageFromStream: CreateImageFromStream::<Identity, OFFSET>,
            GetDataFormatFromPath: GetDataFormatFromPath::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellImageDataFactory as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices"))]
pub trait IShellItem_Impl: Sized {
    fn BindToHandler(&self, pbc: Option<&super::super::System::Com::IBindCtx>, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetParent(&self) -> windows_core::Result<IShellItem>;
    fn GetDisplayName(&self, sigdnname: SIGDN) -> windows_core::Result<windows_core::PWSTR>;
    fn GetAttributes(&self, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::Result<super::super::System::SystemServices::SFGAO_FLAGS>;
    fn Compare(&self, psi: Option<&IShellItem>, hint: u32) -> windows_core::Result<i32>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices"))]
impl windows_core::RuntimeName for IShellItem {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices"))]
impl IShellItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellItem_Vtbl
    where
        Identity: IShellItem_Impl,
    {
        unsafe extern "system" fn BindToHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItem_Impl::BindToHandler(this, windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&bhid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetParent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem_Impl::GetParent(this) {
                Ok(ok__) => {
                    ppsi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDisplayName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sigdnname: SIGDN, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IShellItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem_Impl::GetDisplayName(this, core::mem::transmute_copy(&sigdnname)) {
                Ok(ok__) => {
                    ppszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS, psfgaoattribs: *mut super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::HRESULT
        where
            Identity: IShellItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem_Impl::GetAttributes(this, core::mem::transmute_copy(&sfgaomask)) {
                Ok(ok__) => {
                    psfgaoattribs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Compare<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, hint: u32, piorder: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem_Impl::Compare(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&hint)) {
                Ok(ok__) => {
                    piorder.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BindToHandler: BindToHandler::<Identity, OFFSET>,
            GetParent: GetParent::<Identity, OFFSET>,
            GetDisplayName: GetDisplayName::<Identity, OFFSET>,
            GetAttributes: GetAttributes::<Identity, OFFSET>,
            Compare: Compare::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItem as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IShellItem2_Impl: Sized + IShellItem_Impl {
    fn GetPropertyStore(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyStoreWithCreateObject(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, punkcreateobject: Option<&windows_core::IUnknown>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyStoreForKeys(&self, rgkeys: *const PropertiesSystem::PROPERTYKEY, ckeys: u32, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyDescriptionList(&self, keytype: *const PropertiesSystem::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn Update(&self, pbc: Option<&super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn GetProperty(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::PROPVARIANT>;
    fn GetCLSID(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::GUID>;
    fn GetFileTime(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn GetInt32(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<i32>;
    fn GetString(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::PWSTR>;
    fn GetUInt32(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<u32>;
    fn GetUInt64(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<u64>;
    fn GetBool(&self, key: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<super::super::Foundation::BOOL>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IShellItem2 {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IShellItem2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellItem2_Vtbl
    where
        Identity: IShellItem2_Impl,
    {
        unsafe extern "system" fn GetPropertyStore<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItem2_Impl::GetPropertyStore(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetPropertyStoreWithCreateObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, punkcreateobject: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItem2_Impl::GetPropertyStoreWithCreateObject(this, core::mem::transmute_copy(&flags), windows_core::from_raw_borrowed(&punkcreateobject), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetPropertyStoreForKeys<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgkeys: *const PropertiesSystem::PROPERTYKEY, ckeys: u32, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItem2_Impl::GetPropertyStoreForKeys(this, core::mem::transmute_copy(&rgkeys), core::mem::transmute_copy(&ckeys), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetPropertyDescriptionList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keytype: *const PropertiesSystem::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItem2_Impl::GetPropertyDescriptionList(this, core::mem::transmute_copy(&keytype), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn Update<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItem2_Impl::Update(this, windows_core::from_raw_borrowed(&pbc)).into()
        }
        unsafe extern "system" fn GetProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, ppropvar: *mut core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetProperty(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    ppropvar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCLSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, pclsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetCLSID(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    pclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFileTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, pft: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetFileTime(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    pft.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInt32<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, pi: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetInt32(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    pi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetString<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetString(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    ppsz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetUInt32<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, pui: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetUInt32(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    pui.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetUInt64<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, pull: *mut u64) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetUInt64(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    pull.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBool<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const PropertiesSystem::PROPERTYKEY, pf: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellItem2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItem2_Impl::GetBool(this, core::mem::transmute_copy(&key)) {
                Ok(ok__) => {
                    pf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IShellItem_Vtbl::new::<Identity, OFFSET>(),
            GetPropertyStore: GetPropertyStore::<Identity, OFFSET>,
            GetPropertyStoreWithCreateObject: GetPropertyStoreWithCreateObject::<Identity, OFFSET>,
            GetPropertyStoreForKeys: GetPropertyStoreForKeys::<Identity, OFFSET>,
            GetPropertyDescriptionList: GetPropertyDescriptionList::<Identity, OFFSET>,
            Update: Update::<Identity, OFFSET>,
            GetProperty: GetProperty::<Identity, OFFSET>,
            GetCLSID: GetCLSID::<Identity, OFFSET>,
            GetFileTime: GetFileTime::<Identity, OFFSET>,
            GetInt32: GetInt32::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetUInt32: GetUInt32::<Identity, OFFSET>,
            GetUInt64: GetUInt64::<Identity, OFFSET>,
            GetBool: GetBool::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItem2 as windows_core::Interface>::IID || iid == &<IShellItem as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IShellItemArray_Impl: Sized {
    fn BindToHandler(&self, pbc: Option<&super::super::System::Com::IBindCtx>, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyStore(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyDescriptionList(&self, keytype: *const PropertiesSystem::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetAttributes(&self, attribflags: SIATTRIBFLAGS, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::Result<super::super::System::SystemServices::SFGAO_FLAGS>;
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetItemAt(&self, dwindex: u32) -> windows_core::Result<IShellItem>;
    fn EnumItems(&self) -> windows_core::Result<IEnumShellItems>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IShellItemArray {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IShellItemArray_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellItemArray_Vtbl
    where
        Identity: IShellItemArray_Impl,
    {
        unsafe extern "system" fn BindToHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemArray_Impl::BindToHandler(this, windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&bhid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvout)).into()
        }
        unsafe extern "system" fn GetPropertyStore<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemArray_Impl::GetPropertyStore(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetPropertyDescriptionList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keytype: *const PropertiesSystem::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemArray_Impl::GetPropertyDescriptionList(this, core::mem::transmute_copy(&keytype), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, attribflags: SIATTRIBFLAGS, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS, psfgaoattribs: *mut super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemArray_Impl::GetAttributes(this, core::mem::transmute_copy(&attribflags), core::mem::transmute_copy(&sfgaomask)) {
                Ok(ok__) => {
                    psfgaoattribs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumitems: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemArray_Impl::GetCount(this) {
                Ok(ok__) => {
                    pdwnumitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemArray_Impl::GetItemAt(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppsi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumshellitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemArray_Impl::EnumItems(this) {
                Ok(ok__) => {
                    ppenumshellitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BindToHandler: BindToHandler::<Identity, OFFSET>,
            GetPropertyStore: GetPropertyStore::<Identity, OFFSET>,
            GetPropertyDescriptionList: GetPropertyDescriptionList::<Identity, OFFSET>,
            GetAttributes: GetAttributes::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
            GetItemAt: GetItemAt::<Identity, OFFSET>,
            EnumItems: EnumItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemArray as windows_core::Interface>::IID
    }
}
pub trait IShellItemFilter_Impl: Sized {
    fn IncludeItem(&self, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn GetEnumFlagsForItem(&self, psi: Option<&IShellItem>) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IShellItemFilter {}
impl IShellItemFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellItemFilter_Vtbl
    where
        Identity: IShellItemFilter_Impl,
    {
        unsafe extern "system" fn IncludeItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemFilter_Impl::IncludeItem(this, windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn GetEnumFlagsForItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pgrfflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellItemFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemFilter_Impl::GetEnumFlagsForItem(this, windows_core::from_raw_borrowed(&psi)) {
                Ok(ok__) => {
                    pgrfflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IncludeItem: IncludeItem::<Identity, OFFSET>,
            GetEnumFlagsForItem: GetEnumFlagsForItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemFilter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IShellItemImageFactory_Impl: Sized {
    fn GetImage(&self, size: &super::super::Foundation::SIZE, flags: SIIGBF) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IShellItemImageFactory {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IShellItemImageFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellItemImageFactory_Vtbl
    where
        Identity: IShellItemImageFactory_Impl,
    {
        unsafe extern "system" fn GetImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: super::super::Foundation::SIZE, flags: SIIGBF, phbm: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: IShellItemImageFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemImageFactory_Impl::GetImage(this, core::mem::transmute(&size), core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    phbm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetImage: GetImage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemImageFactory as windows_core::Interface>::IID
    }
}
pub trait IShellItemResources_Impl: Sized {
    fn GetAttributes(&self) -> windows_core::Result<u32>;
    fn GetSize(&self) -> windows_core::Result<u64>;
    fn GetTimes(&self, pftcreation: *mut super::super::Foundation::FILETIME, pftwrite: *mut super::super::Foundation::FILETIME, pftaccess: *mut super::super::Foundation::FILETIME) -> windows_core::Result<()>;
    fn SetTimes(&self, pftcreation: *const super::super::Foundation::FILETIME, pftwrite: *const super::super::Foundation::FILETIME, pftaccess: *const super::super::Foundation::FILETIME) -> windows_core::Result<()>;
    fn GetResourceDescription(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<windows_core::PWSTR>;
    fn EnumResources(&self) -> windows_core::Result<IEnumResources>;
    fn SupportsResource(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<()>;
    fn OpenResource(&self, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn CreateResource(&self, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn MarkForDelete(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellItemResources {}
impl IShellItemResources_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellItemResources_Vtbl
    where
        Identity: IShellItemResources_Impl,
    {
        unsafe extern "system" fn GetAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwattributes: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemResources_Impl::GetAttributes(this) {
                Ok(ok__) => {
                    pdwattributes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pullsize: *mut u64) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemResources_Impl::GetSize(this) {
                Ok(ok__) => {
                    pullsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftcreation: *mut super::super::Foundation::FILETIME, pftwrite: *mut super::super::Foundation::FILETIME, pftaccess: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemResources_Impl::GetTimes(this, core::mem::transmute_copy(&pftcreation), core::mem::transmute_copy(&pftwrite), core::mem::transmute_copy(&pftaccess)).into()
        }
        unsafe extern "system" fn SetTimes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftcreation: *const super::super::Foundation::FILETIME, pftwrite: *const super::super::Foundation::FILETIME, pftaccess: *const super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemResources_Impl::SetTimes(this, core::mem::transmute_copy(&pftcreation), core::mem::transmute_copy(&pftwrite), core::mem::transmute_copy(&pftaccess)).into()
        }
        unsafe extern "system" fn GetResourceDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE, ppszdescription: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemResources_Impl::GetResourceDescription(this, core::mem::transmute_copy(&pcsir)) {
                Ok(ok__) => {
                    ppszdescription.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumResources<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellItemResources_Impl::EnumResources(this) {
                Ok(ok__) => {
                    ppenumr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SupportsResource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemResources_Impl::SupportsResource(this, core::mem::transmute_copy(&pcsir)).into()
        }
        unsafe extern "system" fn OpenResource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemResources_Impl::OpenResource(this, core::mem::transmute_copy(&pcsir), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn CreateResource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemResources_Impl::CreateResource(this, core::mem::transmute_copy(&pcsir), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn MarkForDelete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellItemResources_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellItemResources_Impl::MarkForDelete(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAttributes: GetAttributes::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetTimes: GetTimes::<Identity, OFFSET>,
            SetTimes: SetTimes::<Identity, OFFSET>,
            GetResourceDescription: GetResourceDescription::<Identity, OFFSET>,
            EnumResources: EnumResources::<Identity, OFFSET>,
            SupportsResource: SupportsResource::<Identity, OFFSET>,
            OpenResource: OpenResource::<Identity, OFFSET>,
            CreateResource: CreateResource::<Identity, OFFSET>,
            MarkForDelete: MarkForDelete::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemResources as windows_core::Interface>::IID
    }
}
pub trait IShellLibrary_Impl: Sized {
    fn LoadLibraryFromItem(&self, psilibrary: Option<&IShellItem>, grfmode: u32) -> windows_core::Result<()>;
    fn LoadLibraryFromKnownFolder(&self, kfidlibrary: *const windows_core::GUID, grfmode: u32) -> windows_core::Result<()>;
    fn AddFolder(&self, psilocation: Option<&IShellItem>) -> windows_core::Result<()>;
    fn RemoveFolder(&self, psilocation: Option<&IShellItem>) -> windows_core::Result<()>;
    fn GetFolders(&self, lff: LIBRARYFOLDERFILTER, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn ResolveFolder(&self, psifoldertoresolve: Option<&IShellItem>, dwtimeout: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetDefaultSaveFolder(&self, dsft: DEFAULTSAVEFOLDERTYPE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetDefaultSaveFolder(&self, dsft: DEFAULTSAVEFOLDERTYPE, psi: Option<&IShellItem>) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<LIBRARYOPTIONFLAGS>;
    fn SetOptions(&self, lofmask: LIBRARYOPTIONFLAGS, lofoptions: LIBRARYOPTIONFLAGS) -> windows_core::Result<()>;
    fn GetFolderType(&self) -> windows_core::Result<windows_core::GUID>;
    fn SetFolderType(&self, ftid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetIcon(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn SetIcon(&self, pszicon: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Commit(&self) -> windows_core::Result<()>;
    fn Save(&self, psifoldertosavein: Option<&IShellItem>, pszlibraryname: &windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS) -> windows_core::Result<IShellItem>;
    fn SaveInKnownFolder(&self, kfidtosavein: *const windows_core::GUID, pszlibraryname: &windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS) -> windows_core::Result<IShellItem>;
}
impl windows_core::RuntimeName for IShellLibrary {}
impl IShellLibrary_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellLibrary_Vtbl
    where
        Identity: IShellLibrary_Impl,
    {
        unsafe extern "system" fn LoadLibraryFromItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psilibrary: *mut core::ffi::c_void, grfmode: u32) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::LoadLibraryFromItem(this, windows_core::from_raw_borrowed(&psilibrary), core::mem::transmute_copy(&grfmode)).into()
        }
        unsafe extern "system" fn LoadLibraryFromKnownFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, kfidlibrary: *const windows_core::GUID, grfmode: u32) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::LoadLibraryFromKnownFolder(this, core::mem::transmute_copy(&kfidlibrary), core::mem::transmute_copy(&grfmode)).into()
        }
        unsafe extern "system" fn AddFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psilocation: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::AddFolder(this, windows_core::from_raw_borrowed(&psilocation)).into()
        }
        unsafe extern "system" fn RemoveFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psilocation: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::RemoveFolder(this, windows_core::from_raw_borrowed(&psilocation)).into()
        }
        unsafe extern "system" fn GetFolders<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lff: LIBRARYFOLDERFILTER, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::GetFolders(this, core::mem::transmute_copy(&lff), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn ResolveFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psifoldertoresolve: *mut core::ffi::c_void, dwtimeout: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::ResolveFolder(this, windows_core::from_raw_borrowed(&psifoldertoresolve), core::mem::transmute_copy(&dwtimeout), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetDefaultSaveFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsft: DEFAULTSAVEFOLDERTYPE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::GetDefaultSaveFolder(this, core::mem::transmute_copy(&dsft), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn SetDefaultSaveFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsft: DEFAULTSAVEFOLDERTYPE, psi: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::SetDefaultSaveFolder(this, core::mem::transmute_copy(&dsft), windows_core::from_raw_borrowed(&psi)).into()
        }
        unsafe extern "system" fn GetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plofoptions: *mut LIBRARYOPTIONFLAGS) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLibrary_Impl::GetOptions(this) {
                Ok(ok__) => {
                    plofoptions.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lofmask: LIBRARYOPTIONFLAGS, lofoptions: LIBRARYOPTIONFLAGS) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::SetOptions(this, core::mem::transmute_copy(&lofmask), core::mem::transmute_copy(&lofoptions)).into()
        }
        unsafe extern "system" fn GetFolderType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLibrary_Impl::GetFolderType(this) {
                Ok(ok__) => {
                    pftid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFolderType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ftid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::SetFolderType(this, core::mem::transmute_copy(&ftid)).into()
        }
        unsafe extern "system" fn GetIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszicon: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLibrary_Impl::GetIcon(this) {
                Ok(ok__) => {
                    ppszicon.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszicon: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::SetIcon(this, core::mem::transmute(&pszicon)).into()
        }
        unsafe extern "system" fn Commit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLibrary_Impl::Commit(this).into()
        }
        unsafe extern "system" fn Save<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psifoldertosavein: *mut core::ffi::c_void, pszlibraryname: windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS, ppsisavedto: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLibrary_Impl::Save(this, windows_core::from_raw_borrowed(&psifoldertosavein), core::mem::transmute(&pszlibraryname), core::mem::transmute_copy(&lsf)) {
                Ok(ok__) => {
                    ppsisavedto.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SaveInKnownFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, kfidtosavein: *const windows_core::GUID, pszlibraryname: windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS, ppsisavedto: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLibrary_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLibrary_Impl::SaveInKnownFolder(this, core::mem::transmute_copy(&kfidtosavein), core::mem::transmute(&pszlibraryname), core::mem::transmute_copy(&lsf)) {
                Ok(ok__) => {
                    ppsisavedto.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            LoadLibraryFromItem: LoadLibraryFromItem::<Identity, OFFSET>,
            LoadLibraryFromKnownFolder: LoadLibraryFromKnownFolder::<Identity, OFFSET>,
            AddFolder: AddFolder::<Identity, OFFSET>,
            RemoveFolder: RemoveFolder::<Identity, OFFSET>,
            GetFolders: GetFolders::<Identity, OFFSET>,
            ResolveFolder: ResolveFolder::<Identity, OFFSET>,
            GetDefaultSaveFolder: GetDefaultSaveFolder::<Identity, OFFSET>,
            SetDefaultSaveFolder: SetDefaultSaveFolder::<Identity, OFFSET>,
            GetOptions: GetOptions::<Identity, OFFSET>,
            SetOptions: SetOptions::<Identity, OFFSET>,
            GetFolderType: GetFolderType::<Identity, OFFSET>,
            SetFolderType: SetFolderType::<Identity, OFFSET>,
            GetIcon: GetIcon::<Identity, OFFSET>,
            SetIcon: SetIcon::<Identity, OFFSET>,
            Commit: Commit::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
            SaveInKnownFolder: SaveInKnownFolder::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLibrary as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellLinkA_Impl: Sized {
    fn GetPath(&self, pszfile: windows_core::PSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAA, fflags: u32) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetDescription(&self, pszname: windows_core::PSTR, cch: i32) -> windows_core::Result<()>;
    fn SetDescription(&self, pszname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetWorkingDirectory(&self, pszdir: windows_core::PSTR, cch: i32) -> windows_core::Result<()>;
    fn SetWorkingDirectory(&self, pszdir: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetArguments(&self, pszargs: windows_core::PSTR, cch: i32) -> windows_core::Result<()>;
    fn SetArguments(&self, pszargs: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetHotkey(&self) -> windows_core::Result<u16>;
    fn SetHotkey(&self, whotkey: u16) -> windows_core::Result<()>;
    fn GetShowCmd(&self) -> windows_core::Result<super::WindowsAndMessaging::SHOW_WINDOW_CMD>;
    fn SetShowCmd(&self, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::Result<()>;
    fn GetIconLocation(&self, psziconpath: windows_core::PSTR, cch: i32, piicon: *mut i32) -> windows_core::Result<()>;
    fn SetIconLocation(&self, psziconpath: &windows_core::PCSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetRelativePath(&self, pszpathrel: &windows_core::PCSTR, dwreserved: u32) -> windows_core::Result<()>;
    fn Resolve(&self, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>;
    fn SetPath(&self, pszfile: &windows_core::PCSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellLinkA {}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellLinkA_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellLinkA_Vtbl
    where
        Identity: IShellLinkA_Impl,
    {
        unsafe extern "system" fn GetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAA, fflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::GetPath(this, core::mem::transmute_copy(&pszfile), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&fflags)).into()
        }
        unsafe extern "system" fn GetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkA_Impl::GetIDList(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetIDList(this, core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn GetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PSTR, cch: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::GetDescription(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn SetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetDescription(this, core::mem::transmute(&pszname)).into()
        }
        unsafe extern "system" fn GetWorkingDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PSTR, cch: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::GetWorkingDirectory(this, core::mem::transmute_copy(&pszdir), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn SetWorkingDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PCSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetWorkingDirectory(this, core::mem::transmute(&pszdir)).into()
        }
        unsafe extern "system" fn GetArguments<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PSTR, cch: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::GetArguments(this, core::mem::transmute_copy(&pszargs), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn SetArguments<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PCSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetArguments(this, core::mem::transmute(&pszargs)).into()
        }
        unsafe extern "system" fn GetHotkey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwhotkey: *mut u16) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkA_Impl::GetHotkey(this) {
                Ok(ok__) => {
                    pwhotkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHotkey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, whotkey: u16) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetHotkey(this, core::mem::transmute_copy(&whotkey)).into()
        }
        unsafe extern "system" fn GetShowCmd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pishowcmd: *mut super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkA_Impl::GetShowCmd(this) {
                Ok(ok__) => {
                    pishowcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetShowCmd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetShowCmd(this, core::mem::transmute_copy(&ishowcmd)).into()
        }
        unsafe extern "system" fn GetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PSTR, cch: i32, piicon: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::GetIconLocation(this, core::mem::transmute_copy(&psziconpath), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&piicon)).into()
        }
        unsafe extern "system" fn SetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PCSTR, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetIconLocation(this, core::mem::transmute(&psziconpath), core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn SetRelativePath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpathrel: windows_core::PCSTR, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetRelativePath(this, core::mem::transmute(&pszpathrel), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn Resolve<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::Resolve(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&fflags)).into()
        }
        unsafe extern "system" fn SetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkA_Impl::SetPath(this, core::mem::transmute(&pszfile)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPath: GetPath::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            SetIDList: SetIDList::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            GetWorkingDirectory: GetWorkingDirectory::<Identity, OFFSET>,
            SetWorkingDirectory: SetWorkingDirectory::<Identity, OFFSET>,
            GetArguments: GetArguments::<Identity, OFFSET>,
            SetArguments: SetArguments::<Identity, OFFSET>,
            GetHotkey: GetHotkey::<Identity, OFFSET>,
            SetHotkey: SetHotkey::<Identity, OFFSET>,
            GetShowCmd: GetShowCmd::<Identity, OFFSET>,
            SetShowCmd: SetShowCmd::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            SetIconLocation: SetIconLocation::<Identity, OFFSET>,
            SetRelativePath: SetRelativePath::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkA as windows_core::Interface>::IID
    }
}
pub trait IShellLinkDataList_Impl: Sized {
    fn AddDataBlock(&self, pdatablock: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn CopyDataBlock(&self, dwsig: u32, ppdatablock: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RemoveDataBlock(&self, dwsig: u32) -> windows_core::Result<()>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellLinkDataList {}
impl IShellLinkDataList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellLinkDataList_Vtbl
    where
        Identity: IShellLinkDataList_Impl,
    {
        unsafe extern "system" fn AddDataBlock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdatablock: *const core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLinkDataList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDataList_Impl::AddDataBlock(this, core::mem::transmute_copy(&pdatablock)).into()
        }
        unsafe extern "system" fn CopyDataBlock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsig: u32, ppdatablock: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLinkDataList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDataList_Impl::CopyDataBlock(this, core::mem::transmute_copy(&dwsig), core::mem::transmute_copy(&ppdatablock)).into()
        }
        unsafe extern "system" fn RemoveDataBlock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsig: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDataList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDataList_Impl::RemoveDataBlock(this, core::mem::transmute_copy(&dwsig)).into()
        }
        unsafe extern "system" fn GetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDataList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDataList_Impl::GetFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDataList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDataList_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddDataBlock: AddDataBlock::<Identity, OFFSET>,
            CopyDataBlock: CopyDataBlock::<Identity, OFFSET>,
            RemoveDataBlock: RemoveDataBlock::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkDataList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellLinkDual_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Path(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetPath(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Description(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetDescription(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn WorkingDirectory(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetWorkingDirectory(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Arguments(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetArguments(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Hotkey(&self) -> windows_core::Result<i32>;
    fn SetHotkey(&self, ihk: i32) -> windows_core::Result<()>;
    fn ShowCommand(&self) -> windows_core::Result<i32>;
    fn SetShowCommand(&self, ishowcommand: i32) -> windows_core::Result<()>;
    fn Resolve(&self, fflags: i32) -> windows_core::Result<()>;
    fn GetIconLocation(&self, pbs: *mut windows_core::BSTR) -> windows_core::Result<i32>;
    fn SetIconLocation(&self, bs: &windows_core::BSTR, iicon: i32) -> windows_core::Result<()>;
    fn Save(&self, vwhere: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellLinkDual {}
#[cfg(feature = "Win32_System_Com")]
impl IShellLinkDual_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellLinkDual_Vtbl
    where
        Identity: IShellLinkDual_Impl,
    {
        unsafe extern "system" fn Path<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::Path(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetPath(this, core::mem::transmute(&bs)).into()
        }
        unsafe extern "system" fn Description<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::Description(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetDescription(this, core::mem::transmute(&bs)).into()
        }
        unsafe extern "system" fn WorkingDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::WorkingDirectory(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWorkingDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetWorkingDirectory(this, core::mem::transmute(&bs)).into()
        }
        unsafe extern "system" fn Arguments<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::Arguments(this) {
                Ok(ok__) => {
                    pbs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetArguments<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetArguments(this, core::mem::transmute(&bs)).into()
        }
        unsafe extern "system" fn Hotkey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihk: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::Hotkey(this) {
                Ok(ok__) => {
                    pihk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHotkey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ihk: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetHotkey(this, core::mem::transmute_copy(&ihk)).into()
        }
        unsafe extern "system" fn ShowCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pishowcommand: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::ShowCommand(this) {
                Ok(ok__) => {
                    pishowcommand.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetShowCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ishowcommand: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetShowCommand(this, core::mem::transmute_copy(&ishowcommand)).into()
        }
        unsafe extern "system" fn Resolve<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fflags: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::Resolve(this, core::mem::transmute_copy(&fflags)).into()
        }
        unsafe extern "system" fn GetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut core::mem::MaybeUninit<windows_core::BSTR>, piicon: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual_Impl::GetIconLocation(this, core::mem::transmute_copy(&pbs)) {
                Ok(ok__) => {
                    piicon.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: core::mem::MaybeUninit<windows_core::BSTR>, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::SetIconLocation(this, core::mem::transmute(&bs), core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn Save<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vwhere: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkDual_Impl::Save(this, core::mem::transmute(&vwhere)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Path: Path::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
            Description: Description::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            WorkingDirectory: WorkingDirectory::<Identity, OFFSET>,
            SetWorkingDirectory: SetWorkingDirectory::<Identity, OFFSET>,
            Arguments: Arguments::<Identity, OFFSET>,
            SetArguments: SetArguments::<Identity, OFFSET>,
            Hotkey: Hotkey::<Identity, OFFSET>,
            SetHotkey: SetHotkey::<Identity, OFFSET>,
            ShowCommand: ShowCommand::<Identity, OFFSET>,
            SetShowCommand: SetShowCommand::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            SetIconLocation: SetIconLocation::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkDual as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellLinkDual2_Impl: Sized + IShellLinkDual_Impl {
    fn Target(&self) -> windows_core::Result<FolderItem>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellLinkDual2 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellLinkDual2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellLinkDual2_Vtbl
    where
        Identity: IShellLinkDual2_Impl,
    {
        unsafe extern "system" fn Target<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellLinkDual2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkDual2_Impl::Target(this) {
                Ok(ok__) => {
                    ppfi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IShellLinkDual_Vtbl::new::<Identity, OFFSET>(), Target: Target::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkDual2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellLinkDual as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellLinkW_Impl: Sized {
    fn GetPath(&self, pszfile: windows_core::PWSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW, fflags: u32) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetDescription(&self, pszname: windows_core::PWSTR, cch: i32) -> windows_core::Result<()>;
    fn SetDescription(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetWorkingDirectory(&self, pszdir: windows_core::PWSTR, cch: i32) -> windows_core::Result<()>;
    fn SetWorkingDirectory(&self, pszdir: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetArguments(&self, pszargs: windows_core::PWSTR, cch: i32) -> windows_core::Result<()>;
    fn SetArguments(&self, pszargs: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetHotkey(&self) -> windows_core::Result<u16>;
    fn SetHotkey(&self, whotkey: u16) -> windows_core::Result<()>;
    fn GetShowCmd(&self) -> windows_core::Result<super::WindowsAndMessaging::SHOW_WINDOW_CMD>;
    fn SetShowCmd(&self, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::Result<()>;
    fn GetIconLocation(&self, psziconpath: windows_core::PWSTR, cch: i32, piicon: *mut i32) -> windows_core::Result<()>;
    fn SetIconLocation(&self, psziconpath: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetRelativePath(&self, pszpathrel: &windows_core::PCWSTR, dwreserved: u32) -> windows_core::Result<()>;
    fn Resolve(&self, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>;
    fn SetPath(&self, pszfile: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellLinkW {}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellLinkW_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellLinkW_Vtbl
    where
        Identity: IShellLinkW_Impl,
    {
        unsafe extern "system" fn GetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PWSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW, fflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::GetPath(this, core::mem::transmute_copy(&pszfile), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&fflags)).into()
        }
        unsafe extern "system" fn GetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkW_Impl::GetIDList(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetIDList(this, core::mem::transmute_copy(&pidl)).into()
        }
        unsafe extern "system" fn GetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PWSTR, cch: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::GetDescription(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn SetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetDescription(this, core::mem::transmute(&pszname)).into()
        }
        unsafe extern "system" fn GetWorkingDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PWSTR, cch: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::GetWorkingDirectory(this, core::mem::transmute_copy(&pszdir), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn SetWorkingDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetWorkingDirectory(this, core::mem::transmute(&pszdir)).into()
        }
        unsafe extern "system" fn GetArguments<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PWSTR, cch: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::GetArguments(this, core::mem::transmute_copy(&pszargs), core::mem::transmute_copy(&cch)).into()
        }
        unsafe extern "system" fn SetArguments<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetArguments(this, core::mem::transmute(&pszargs)).into()
        }
        unsafe extern "system" fn GetHotkey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwhotkey: *mut u16) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkW_Impl::GetHotkey(this) {
                Ok(ok__) => {
                    pwhotkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHotkey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, whotkey: u16) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetHotkey(this, core::mem::transmute_copy(&whotkey)).into()
        }
        unsafe extern "system" fn GetShowCmd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pishowcmd: *mut super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellLinkW_Impl::GetShowCmd(this) {
                Ok(ok__) => {
                    pishowcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetShowCmd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetShowCmd(this, core::mem::transmute_copy(&ishowcmd)).into()
        }
        unsafe extern "system" fn GetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PWSTR, cch: i32, piicon: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::GetIconLocation(this, core::mem::transmute_copy(&psziconpath), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&piicon)).into()
        }
        unsafe extern "system" fn SetIconLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetIconLocation(this, core::mem::transmute(&psziconpath), core::mem::transmute_copy(&iicon)).into()
        }
        unsafe extern "system" fn SetRelativePath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpathrel: windows_core::PCWSTR, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetRelativePath(this, core::mem::transmute(&pszpathrel), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn Resolve<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::Resolve(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&fflags)).into()
        }
        unsafe extern "system" fn SetPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellLinkW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellLinkW_Impl::SetPath(this, core::mem::transmute(&pszfile)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPath: GetPath::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            SetIDList: SetIDList::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            GetWorkingDirectory: GetWorkingDirectory::<Identity, OFFSET>,
            SetWorkingDirectory: SetWorkingDirectory::<Identity, OFFSET>,
            GetArguments: GetArguments::<Identity, OFFSET>,
            SetArguments: SetArguments::<Identity, OFFSET>,
            GetHotkey: GetHotkey::<Identity, OFFSET>,
            SetHotkey: SetHotkey::<Identity, OFFSET>,
            GetShowCmd: GetShowCmd::<Identity, OFFSET>,
            SetShowCmd: SetShowCmd::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            SetIconLocation: SetIconLocation::<Identity, OFFSET>,
            SetRelativePath: SetRelativePath::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkW as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellMenu_Impl: Sized {
    fn Initialize(&self, psmc: Option<&IShellMenuCallback>, uid: u32, uidancestor: u32, dwflags: u32) -> windows_core::Result<()>;
    fn GetMenuInfo(&self, ppsmc: *mut Option<IShellMenuCallback>, puid: *mut u32, puidancestor: *mut u32, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn SetShellFolder(&self, psf: Option<&IShellFolder>, pidlfolder: *const Common::ITEMIDLIST, hkey: super::super::System::Registry::HKEY, dwflags: u32) -> windows_core::Result<()>;
    fn GetShellFolder(&self, pdwflags: *mut u32, ppidl: *mut *mut Common::ITEMIDLIST, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetMenu(&self, hmenu: super::WindowsAndMessaging::HMENU, hwnd: super::super::Foundation::HWND, dwflags: u32) -> windows_core::Result<()>;
    fn GetMenu(&self, phmenu: *mut super::WindowsAndMessaging::HMENU, phwnd: *mut super::super::Foundation::HWND, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn InvalidateItem(&self, psmd: *const SMDATA, dwflags: u32) -> windows_core::Result<()>;
    fn GetState(&self, psmd: *mut SMDATA) -> windows_core::Result<()>;
    fn SetMenuToolbar(&self, punk: Option<&windows_core::IUnknown>, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellMenu {}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellMenu_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellMenu_Vtbl
    where
        Identity: IShellMenu_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmc: *mut core::ffi::c_void, uid: u32, uidancestor: u32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::Initialize(this, windows_core::from_raw_borrowed(&psmc), core::mem::transmute_copy(&uid), core::mem::transmute_copy(&uidancestor), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetMenuInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsmc: *mut *mut core::ffi::c_void, puid: *mut u32, puidancestor: *mut u32, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::GetMenuInfo(this, core::mem::transmute_copy(&ppsmc), core::mem::transmute_copy(&puid), core::mem::transmute_copy(&puidancestor), core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn SetShellFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, hkey: super::super::System::Registry::HKEY, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::SetShellFolder(this, windows_core::from_raw_borrowed(&psf), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&hkey), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetShellFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32, ppidl: *mut *mut Common::ITEMIDLIST, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::GetShellFolder(this, core::mem::transmute_copy(&pdwflags), core::mem::transmute_copy(&ppidl), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn SetMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenu: super::WindowsAndMessaging::HMENU, hwnd: super::super::Foundation::HWND, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::SetMenu(this, core::mem::transmute_copy(&hmenu), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phmenu: *mut super::WindowsAndMessaging::HMENU, phwnd: *mut super::super::Foundation::HWND, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::GetMenu(this, core::mem::transmute_copy(&phmenu), core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn InvalidateItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmd: *const SMDATA, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::InvalidateItem(this, core::mem::transmute_copy(&psmd), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmd: *mut SMDATA) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::GetState(this, core::mem::transmute_copy(&psmd)).into()
        }
        unsafe extern "system" fn SetMenuToolbar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenu_Impl::SetMenuToolbar(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetMenuInfo: GetMenuInfo::<Identity, OFFSET>,
            SetShellFolder: SetShellFolder::<Identity, OFFSET>,
            GetShellFolder: GetShellFolder::<Identity, OFFSET>,
            SetMenu: SetMenu::<Identity, OFFSET>,
            GetMenu: GetMenu::<Identity, OFFSET>,
            InvalidateItem: InvalidateItem::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            SetMenuToolbar: SetMenuToolbar::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellMenu as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellMenuCallback_Impl: Sized {
    fn CallbackSM(&self, psmd: *mut SMDATA, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellMenuCallback {}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellMenuCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellMenuCallback_Vtbl
    where
        Identity: IShellMenuCallback_Impl,
    {
        unsafe extern "system" fn CallbackSM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmd: *mut SMDATA, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellMenuCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellMenuCallback_Impl::CallbackSM(this, core::mem::transmute_copy(&psmd), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CallbackSM: CallbackSM::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellMenuCallback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellNameSpace_Impl: Sized + IShellFavoritesNameSpace_Impl {
    fn EnumOptions(&self) -> windows_core::Result<i32>;
    fn SetEnumOptions(&self, lval: i32) -> windows_core::Result<()>;
    fn SelectedItem(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn SetSelectedItem(&self, pitem: Option<&super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
    fn Root(&self) -> windows_core::Result<windows_core::VARIANT>;
    fn SetRoot(&self, var: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn Depth(&self) -> windows_core::Result<i32>;
    fn SetDepth(&self, idepth: i32) -> windows_core::Result<()>;
    fn Mode(&self) -> windows_core::Result<u32>;
    fn SetMode(&self, umode: u32) -> windows_core::Result<()>;
    fn Flags(&self) -> windows_core::Result<u32>;
    fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()>;
    fn SetTVFlags(&self, dwflags: u32) -> windows_core::Result<()>;
    fn TVFlags(&self) -> windows_core::Result<u32>;
    fn Columns(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetColumns(&self, bstrcolumns: &windows_core::BSTR) -> windows_core::Result<()>;
    fn CountViewTypes(&self) -> windows_core::Result<i32>;
    fn SetViewType(&self, itype: i32) -> windows_core::Result<()>;
    fn SelectedItems(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Expand(&self, var: &windows_core::VARIANT, idepth: i32) -> windows_core::Result<()>;
    fn UnselectAll(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellNameSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IShellNameSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellNameSpace_Vtbl
    where
        Identity: IShellNameSpace_Impl,
    {
        unsafe extern "system" fn EnumOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pgrfenumflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::EnumOptions(this) {
                Ok(ok__) => {
                    pgrfenumflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnumOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lval: i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetEnumOptions(this, core::mem::transmute_copy(&lval)).into()
        }
        unsafe extern "system" fn SelectedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::SelectedItem(this) {
                Ok(ok__) => {
                    pitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSelectedItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetSelectedItem(this, windows_core::from_raw_borrowed(&pitem)).into()
        }
        unsafe extern "system" fn Root<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvar: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::Root(this) {
                Ok(ok__) => {
                    pvar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, var: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetRoot(this, core::mem::transmute(&var)).into()
        }
        unsafe extern "system" fn Depth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidepth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::Depth(this) {
                Ok(ok__) => {
                    pidepth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDepth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idepth: i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetDepth(this, core::mem::transmute_copy(&idepth)).into()
        }
        unsafe extern "system" fn Mode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pumode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::Mode(this) {
                Ok(ok__) => {
                    pumode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umode: u32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetMode(this, core::mem::transmute_copy(&umode)).into()
        }
        unsafe extern "system" fn Flags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::Flags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SetTVFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetTVFlags(this, core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn TVFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::TVFlags(this) {
                Ok(ok__) => {
                    dwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Columns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrcolumns: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::Columns(this) {
                Ok(ok__) => {
                    bstrcolumns.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetColumns<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrcolumns: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetColumns(this, core::mem::transmute(&bstrcolumns)).into()
        }
        unsafe extern "system" fn CountViewTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitypes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::CountViewTypes(this) {
                Ok(ok__) => {
                    pitypes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetViewType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itype: i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::SetViewType(this, core::mem::transmute_copy(&itype)).into()
        }
        unsafe extern "system" fn SelectedItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellNameSpace_Impl::SelectedItems(this) {
                Ok(ok__) => {
                    ppid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Expand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, var: core::mem::MaybeUninit<windows_core::VARIANT>, idepth: i32) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::Expand(this, core::mem::transmute(&var), core::mem::transmute_copy(&idepth)).into()
        }
        unsafe extern "system" fn UnselectAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellNameSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellNameSpace_Impl::UnselectAll(this).into()
        }
        Self {
            base__: IShellFavoritesNameSpace_Vtbl::new::<Identity, OFFSET>(),
            EnumOptions: EnumOptions::<Identity, OFFSET>,
            SetEnumOptions: SetEnumOptions::<Identity, OFFSET>,
            SelectedItem: SelectedItem::<Identity, OFFSET>,
            SetSelectedItem: SetSelectedItem::<Identity, OFFSET>,
            Root: Root::<Identity, OFFSET>,
            SetRoot: SetRoot::<Identity, OFFSET>,
            Depth: Depth::<Identity, OFFSET>,
            SetDepth: SetDepth::<Identity, OFFSET>,
            Mode: Mode::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            Flags: Flags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            SetTVFlags: SetTVFlags::<Identity, OFFSET>,
            TVFlags: TVFlags::<Identity, OFFSET>,
            Columns: Columns::<Identity, OFFSET>,
            SetColumns: SetColumns::<Identity, OFFSET>,
            CountViewTypes: CountViewTypes::<Identity, OFFSET>,
            SetViewType: SetViewType::<Identity, OFFSET>,
            SelectedItems: SelectedItems::<Identity, OFFSET>,
            Expand: Expand::<Identity, OFFSET>,
            UnselectAll: UnselectAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellNameSpace as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellFavoritesNameSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IShellPropSheetExt_Impl: Sized {
    fn AddPages(&self, pfnaddpage: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn ReplacePage(&self, upageid: u32, pfnreplacewith: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IShellPropSheetExt {}
#[cfg(feature = "Win32_UI_Controls")]
impl IShellPropSheetExt_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellPropSheetExt_Vtbl
    where
        Identity: IShellPropSheetExt_Impl,
    {
        unsafe extern "system" fn AddPages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfnaddpage: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellPropSheetExt_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellPropSheetExt_Impl::AddPages(this, core::mem::transmute_copy(&pfnaddpage), core::mem::transmute_copy(&lparam)).into()
        }
        unsafe extern "system" fn ReplacePage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, upageid: u32, pfnreplacewith: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellPropSheetExt_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellPropSheetExt_Impl::ReplacePage(this, core::mem::transmute_copy(&upageid), core::mem::transmute_copy(&pfnreplacewith), core::mem::transmute_copy(&lparam)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddPages: AddPages::<Identity, OFFSET>,
            ReplacePage: ReplacePage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellPropSheetExt as windows_core::Interface>::IID
    }
}
pub trait IShellRunDll_Impl: Sized {
    fn Run(&self, pszargs: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellRunDll {}
impl IShellRunDll_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellRunDll_Vtbl
    where
        Identity: IShellRunDll_Impl,
    {
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IShellRunDll_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellRunDll_Impl::Run(this, core::mem::transmute(&pszargs)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Run: Run::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellRunDll as windows_core::Interface>::IID
    }
}
pub trait IShellService_Impl: Sized {
    fn SetOwner(&self, punkowner: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellService {}
impl IShellService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellService_Vtbl
    where
        Identity: IShellService_Impl,
    {
        unsafe extern "system" fn SetOwner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkowner: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellService_Impl::SetOwner(this, windows_core::from_raw_borrowed(&punkowner)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetOwner: SetOwner::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellService as windows_core::Interface>::IID
    }
}
pub trait IShellTaskScheduler_Impl: Sized {
    fn AddTask(&self, prt: Option<&IRunnableTask>, rtoid: *const windows_core::GUID, lparam: usize, dwpriority: u32) -> windows_core::Result<()>;
    fn RemoveTasks(&self, rtoid: *const windows_core::GUID, lparam: usize, bwaitifrunning: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CountTasks(&self, rtoid: *const windows_core::GUID) -> u32;
    fn Status(&self, dwreleasestatus: u32, dwthreadtimeout: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IShellTaskScheduler {}
impl IShellTaskScheduler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellTaskScheduler_Vtbl
    where
        Identity: IShellTaskScheduler_Impl,
    {
        unsafe extern "system" fn AddTask<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prt: *mut core::ffi::c_void, rtoid: *const windows_core::GUID, lparam: usize, dwpriority: u32) -> windows_core::HRESULT
        where
            Identity: IShellTaskScheduler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellTaskScheduler_Impl::AddTask(this, windows_core::from_raw_borrowed(&prt), core::mem::transmute_copy(&rtoid), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&dwpriority)).into()
        }
        unsafe extern "system" fn RemoveTasks<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtoid: *const windows_core::GUID, lparam: usize, bwaitifrunning: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellTaskScheduler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellTaskScheduler_Impl::RemoveTasks(this, core::mem::transmute_copy(&rtoid), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&bwaitifrunning)).into()
        }
        unsafe extern "system" fn CountTasks<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtoid: *const windows_core::GUID) -> u32
        where
            Identity: IShellTaskScheduler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellTaskScheduler_Impl::CountTasks(this, core::mem::transmute_copy(&rtoid))
        }
        unsafe extern "system" fn Status<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreleasestatus: u32, dwthreadtimeout: u32) -> windows_core::HRESULT
        where
            Identity: IShellTaskScheduler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellTaskScheduler_Impl::Status(this, core::mem::transmute_copy(&dwreleasestatus), core::mem::transmute_copy(&dwthreadtimeout)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddTask: AddTask::<Identity, OFFSET>,
            RemoveTasks: RemoveTasks::<Identity, OFFSET>,
            CountTasks: CountTasks::<Identity, OFFSET>,
            Status: Status::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellTaskScheduler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn ResetFirstBootMode(&self) -> windows_core::Result<()>;
    fn ResetSafeMode(&self) -> windows_core::Result<()>;
    fn RefreshOfflineDesktop(&self) -> windows_core::Result<()>;
    fn AddFavorite(&self, url: &windows_core::BSTR, title: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn AddChannel(&self, url: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AddDesktopComponent(&self, url: &windows_core::BSTR, r#type: &windows_core::BSTR, left: *const windows_core::VARIANT, top: *const windows_core::VARIANT, width: *const windows_core::VARIANT, height: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn IsSubscribed(&self, url: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn NavigateAndFind(&self, url: &windows_core::BSTR, strquery: &windows_core::BSTR, vartargetframe: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn ImportExportFavorites(&self, fimport: super::super::Foundation::VARIANT_BOOL, strimpexppath: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AutoCompleteSaveForm(&self, form: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn AutoScan(&self, strsearch: &windows_core::BSTR, strfailureurl: &windows_core::BSTR, pvartargetframe: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn AutoCompleteAttach(&self, reserved: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn ShowBrowserUI(&self, bstrname: &windows_core::BSTR, pvarin: *const windows_core::VARIANT) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper_Vtbl
    where
        Identity: IShellUIHelper_Impl,
    {
        unsafe extern "system" fn ResetFirstBootMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::ResetFirstBootMode(this).into()
        }
        unsafe extern "system" fn ResetSafeMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::ResetSafeMode(this).into()
        }
        unsafe extern "system" fn RefreshOfflineDesktop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::RefreshOfflineDesktop(this).into()
        }
        unsafe extern "system" fn AddFavorite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, title: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::AddFavorite(this, core::mem::transmute(&url), core::mem::transmute_copy(&title)).into()
        }
        unsafe extern "system" fn AddChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::AddChannel(this, core::mem::transmute(&url)).into()
        }
        unsafe extern "system" fn AddDesktopComponent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, r#type: core::mem::MaybeUninit<windows_core::BSTR>, left: *const core::mem::MaybeUninit<windows_core::VARIANT>, top: *const core::mem::MaybeUninit<windows_core::VARIANT>, width: *const core::mem::MaybeUninit<windows_core::VARIANT>, height: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::AddDesktopComponent(this, core::mem::transmute(&url), core::mem::transmute(&r#type), core::mem::transmute_copy(&left), core::mem::transmute_copy(&top), core::mem::transmute_copy(&width), core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn IsSubscribed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper_Impl::IsSubscribed(this, core::mem::transmute(&url)) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NavigateAndFind<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, strquery: core::mem::MaybeUninit<windows_core::BSTR>, vartargetframe: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::NavigateAndFind(this, core::mem::transmute(&url), core::mem::transmute(&strquery), core::mem::transmute_copy(&vartargetframe)).into()
        }
        unsafe extern "system" fn ImportExportFavorites<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fimport: super::super::Foundation::VARIANT_BOOL, strimpexppath: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::ImportExportFavorites(this, core::mem::transmute_copy(&fimport), core::mem::transmute(&strimpexppath)).into()
        }
        unsafe extern "system" fn AutoCompleteSaveForm<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, form: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::AutoCompleteSaveForm(this, core::mem::transmute_copy(&form)).into()
        }
        unsafe extern "system" fn AutoScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strsearch: core::mem::MaybeUninit<windows_core::BSTR>, strfailureurl: core::mem::MaybeUninit<windows_core::BSTR>, pvartargetframe: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::AutoScan(this, core::mem::transmute(&strsearch), core::mem::transmute(&strfailureurl), core::mem::transmute_copy(&pvartargetframe)).into()
        }
        unsafe extern "system" fn AutoCompleteAttach<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, reserved: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper_Impl::AutoCompleteAttach(this, core::mem::transmute_copy(&reserved)).into()
        }
        unsafe extern "system" fn ShowBrowserUI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: core::mem::MaybeUninit<windows_core::BSTR>, pvarin: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarout: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper_Impl::ShowBrowserUI(this, core::mem::transmute(&bstrname), core::mem::transmute_copy(&pvarin)) {
                Ok(ok__) => {
                    pvarout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            ResetFirstBootMode: ResetFirstBootMode::<Identity, OFFSET>,
            ResetSafeMode: ResetSafeMode::<Identity, OFFSET>,
            RefreshOfflineDesktop: RefreshOfflineDesktop::<Identity, OFFSET>,
            AddFavorite: AddFavorite::<Identity, OFFSET>,
            AddChannel: AddChannel::<Identity, OFFSET>,
            AddDesktopComponent: AddDesktopComponent::<Identity, OFFSET>,
            IsSubscribed: IsSubscribed::<Identity, OFFSET>,
            NavigateAndFind: NavigateAndFind::<Identity, OFFSET>,
            ImportExportFavorites: ImportExportFavorites::<Identity, OFFSET>,
            AutoCompleteSaveForm: AutoCompleteSaveForm::<Identity, OFFSET>,
            AutoScan: AutoScan::<Identity, OFFSET>,
            AutoCompleteAttach: AutoCompleteAttach::<Identity, OFFSET>,
            ShowBrowserUI: ShowBrowserUI::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper2_Impl: Sized + IShellUIHelper_Impl {
    fn AddSearchProvider(&self, url: &windows_core::BSTR) -> windows_core::Result<()>;
    fn RunOnceShown(&self) -> windows_core::Result<()>;
    fn SkipRunOnce(&self) -> windows_core::Result<()>;
    fn CustomizeSettings(&self, fsqm: super::super::Foundation::VARIANT_BOOL, fphishing: super::super::Foundation::VARIANT_BOOL, bstrlocale: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SqmEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn PhishingEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn BrandImageUri(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SkipTabsWelcome(&self) -> windows_core::Result<()>;
    fn DiagnoseConnection(&self) -> windows_core::Result<()>;
    fn CustomizeClearType(&self, fset: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn IsSearchProviderInstalled(&self, url: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn IsSearchMigrated(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn DefaultSearchProvider(&self) -> windows_core::Result<windows_core::BSTR>;
    fn RunOnceRequiredSettingsComplete(&self, fcomplete: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn RunOnceHasShown(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SearchGuideUrl(&self) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper2 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper2_Vtbl
    where
        Identity: IShellUIHelper2_Impl,
    {
        unsafe extern "system" fn AddSearchProvider<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::AddSearchProvider(this, core::mem::transmute(&url)).into()
        }
        unsafe extern "system" fn RunOnceShown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::RunOnceShown(this).into()
        }
        unsafe extern "system" fn SkipRunOnce<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::SkipRunOnce(this).into()
        }
        unsafe extern "system" fn CustomizeSettings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fsqm: super::super::Foundation::VARIANT_BOOL, fphishing: super::super::Foundation::VARIANT_BOOL, bstrlocale: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::CustomizeSettings(this, core::mem::transmute_copy(&fsqm), core::mem::transmute_copy(&fphishing), core::mem::transmute(&bstrlocale)).into()
        }
        unsafe extern "system" fn SqmEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::SqmEnabled(this) {
                Ok(ok__) => {
                    pfenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PhishingEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::PhishingEnabled(this) {
                Ok(ok__) => {
                    pfenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BrandImageUri<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstruri: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::BrandImageUri(this) {
                Ok(ok__) => {
                    pbstruri.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SkipTabsWelcome<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::SkipTabsWelcome(this).into()
        }
        unsafe extern "system" fn DiagnoseConnection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::DiagnoseConnection(this).into()
        }
        unsafe extern "system" fn CustomizeClearType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fset: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::CustomizeClearType(this, core::mem::transmute_copy(&fset)).into()
        }
        unsafe extern "system" fn IsSearchProviderInstalled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, pdwresult: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::IsSearchProviderInstalled(this, core::mem::transmute(&url)) {
                Ok(ok__) => {
                    pdwresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsSearchMigrated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfmigrated: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::IsSearchMigrated(this) {
                Ok(ok__) => {
                    pfmigrated.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultSearchProvider<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::DefaultSearchProvider(this) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RunOnceRequiredSettingsComplete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fcomplete: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper2_Impl::RunOnceRequiredSettingsComplete(this, core::mem::transmute_copy(&fcomplete)).into()
        }
        unsafe extern "system" fn RunOnceHasShown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfshown: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::RunOnceHasShown(this) {
                Ok(ok__) => {
                    pfshown.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SearchGuideUrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper2_Impl::SearchGuideUrl(this) {
                Ok(ok__) => {
                    pbstrurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IShellUIHelper_Vtbl::new::<Identity, OFFSET>(),
            AddSearchProvider: AddSearchProvider::<Identity, OFFSET>,
            RunOnceShown: RunOnceShown::<Identity, OFFSET>,
            SkipRunOnce: SkipRunOnce::<Identity, OFFSET>,
            CustomizeSettings: CustomizeSettings::<Identity, OFFSET>,
            SqmEnabled: SqmEnabled::<Identity, OFFSET>,
            PhishingEnabled: PhishingEnabled::<Identity, OFFSET>,
            BrandImageUri: BrandImageUri::<Identity, OFFSET>,
            SkipTabsWelcome: SkipTabsWelcome::<Identity, OFFSET>,
            DiagnoseConnection: DiagnoseConnection::<Identity, OFFSET>,
            CustomizeClearType: CustomizeClearType::<Identity, OFFSET>,
            IsSearchProviderInstalled: IsSearchProviderInstalled::<Identity, OFFSET>,
            IsSearchMigrated: IsSearchMigrated::<Identity, OFFSET>,
            DefaultSearchProvider: DefaultSearchProvider::<Identity, OFFSET>,
            RunOnceRequiredSettingsComplete: RunOnceRequiredSettingsComplete::<Identity, OFFSET>,
            RunOnceHasShown: RunOnceHasShown::<Identity, OFFSET>,
            SearchGuideUrl: SearchGuideUrl::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper3_Impl: Sized + IShellUIHelper2_Impl {
    fn AddService(&self, url: &windows_core::BSTR) -> windows_core::Result<()>;
    fn IsServiceInstalled(&self, url: &windows_core::BSTR, verb: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn InPrivateFilteringEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn AddToFavoritesBar(&self, url: &windows_core::BSTR, title: &windows_core::BSTR, r#type: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn BuildNewTabPage(&self) -> windows_core::Result<()>;
    fn SetRecentlyClosedVisible(&self, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetActivitiesVisible(&self, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ContentDiscoveryReset(&self) -> windows_core::Result<()>;
    fn IsSuggestedSitesEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn EnableSuggestedSites(&self, fenable: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn NavigateToSuggestedSites(&self, bstrrelativeurl: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ShowTabsHelp(&self) -> windows_core::Result<()>;
    fn ShowInPrivateHelp(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper3 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper3_Vtbl
    where
        Identity: IShellUIHelper3_Impl,
    {
        unsafe extern "system" fn AddService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::AddService(this, core::mem::transmute(&url)).into()
        }
        unsafe extern "system" fn IsServiceInstalled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, verb: core::mem::MaybeUninit<windows_core::BSTR>, pdwresult: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper3_Impl::IsServiceInstalled(this, core::mem::transmute(&url), core::mem::transmute(&verb)) {
                Ok(ok__) => {
                    pdwresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InPrivateFilteringEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper3_Impl::InPrivateFilteringEnabled(this) {
                Ok(ok__) => {
                    pfenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddToFavoritesBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, title: core::mem::MaybeUninit<windows_core::BSTR>, r#type: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::AddToFavoritesBar(this, core::mem::transmute(&url), core::mem::transmute(&title), core::mem::transmute_copy(&r#type)).into()
        }
        unsafe extern "system" fn BuildNewTabPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::BuildNewTabPage(this).into()
        }
        unsafe extern "system" fn SetRecentlyClosedVisible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::SetRecentlyClosedVisible(this, core::mem::transmute_copy(&fvisible)).into()
        }
        unsafe extern "system" fn SetActivitiesVisible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::SetActivitiesVisible(this, core::mem::transmute_copy(&fvisible)).into()
        }
        unsafe extern "system" fn ContentDiscoveryReset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::ContentDiscoveryReset(this).into()
        }
        unsafe extern "system" fn IsSuggestedSitesEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper3_Impl::IsSuggestedSitesEnabled(this) {
                Ok(ok__) => {
                    pfenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnableSuggestedSites<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::EnableSuggestedSites(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn NavigateToSuggestedSites<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrrelativeurl: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::NavigateToSuggestedSites(this, core::mem::transmute(&bstrrelativeurl)).into()
        }
        unsafe extern "system" fn ShowTabsHelp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::ShowTabsHelp(this).into()
        }
        unsafe extern "system" fn ShowInPrivateHelp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper3_Impl::ShowInPrivateHelp(this).into()
        }
        Self {
            base__: IShellUIHelper2_Vtbl::new::<Identity, OFFSET>(),
            AddService: AddService::<Identity, OFFSET>,
            IsServiceInstalled: IsServiceInstalled::<Identity, OFFSET>,
            InPrivateFilteringEnabled: InPrivateFilteringEnabled::<Identity, OFFSET>,
            AddToFavoritesBar: AddToFavoritesBar::<Identity, OFFSET>,
            BuildNewTabPage: BuildNewTabPage::<Identity, OFFSET>,
            SetRecentlyClosedVisible: SetRecentlyClosedVisible::<Identity, OFFSET>,
            SetActivitiesVisible: SetActivitiesVisible::<Identity, OFFSET>,
            ContentDiscoveryReset: ContentDiscoveryReset::<Identity, OFFSET>,
            IsSuggestedSitesEnabled: IsSuggestedSitesEnabled::<Identity, OFFSET>,
            EnableSuggestedSites: EnableSuggestedSites::<Identity, OFFSET>,
            NavigateToSuggestedSites: NavigateToSuggestedSites::<Identity, OFFSET>,
            ShowTabsHelp: ShowTabsHelp::<Identity, OFFSET>,
            ShowInPrivateHelp: ShowInPrivateHelp::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper4_Impl: Sized + IShellUIHelper3_Impl {
    fn msIsSiteMode(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn msSiteModeShowThumbBar(&self) -> windows_core::Result<()>;
    fn msSiteModeAddThumbBarButton(&self, bstriconurl: &windows_core::BSTR, bstrtooltip: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn msSiteModeUpdateThumbBarButton(&self, buttonid: &windows_core::VARIANT, fenabled: super::super::Foundation::VARIANT_BOOL, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msSiteModeSetIconOverlay(&self, iconurl: &windows_core::BSTR, pvardescription: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn msSiteModeClearIconOverlay(&self) -> windows_core::Result<()>;
    fn msAddSiteMode(&self) -> windows_core::Result<()>;
    fn msSiteModeCreateJumpList(&self, bstrheader: &windows_core::BSTR) -> windows_core::Result<()>;
    fn msSiteModeAddJumpListItem(&self, bstrname: &windows_core::BSTR, bstractionuri: &windows_core::BSTR, bstriconuri: &windows_core::BSTR, pvarwindowtype: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn msSiteModeClearJumpList(&self) -> windows_core::Result<()>;
    fn msSiteModeShowJumpList(&self) -> windows_core::Result<()>;
    fn msSiteModeAddButtonStyle(&self, uibuttonid: &windows_core::VARIANT, bstriconurl: &windows_core::BSTR, bstrtooltip: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn msSiteModeShowButtonStyle(&self, uibuttonid: &windows_core::VARIANT, uistyleid: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn msSiteModeActivate(&self) -> windows_core::Result<()>;
    fn msIsSiteModeFirstRun(&self, fpreservestate: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<windows_core::VARIANT>;
    fn msAddTrackingProtectionList(&self, url: &windows_core::BSTR, bstrfiltername: &windows_core::BSTR) -> windows_core::Result<()>;
    fn msTrackingProtectionEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn msActiveXFilteringEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper4 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper4_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper4_Vtbl
    where
        Identity: IShellUIHelper4_Impl,
    {
        unsafe extern "system" fn msIsSiteMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfsitemode: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper4_Impl::msIsSiteMode(this) {
                Ok(ok__) => {
                    pfsitemode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msSiteModeShowThumbBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeShowThumbBar(this).into()
        }
        unsafe extern "system" fn msSiteModeAddThumbBarButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstriconurl: core::mem::MaybeUninit<windows_core::BSTR>, bstrtooltip: core::mem::MaybeUninit<windows_core::BSTR>, pvarbuttonid: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper4_Impl::msSiteModeAddThumbBarButton(this, core::mem::transmute(&bstriconurl), core::mem::transmute(&bstrtooltip)) {
                Ok(ok__) => {
                    pvarbuttonid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msSiteModeUpdateThumbBarButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, buttonid: core::mem::MaybeUninit<windows_core::VARIANT>, fenabled: super::super::Foundation::VARIANT_BOOL, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeUpdateThumbBarButton(this, core::mem::transmute(&buttonid), core::mem::transmute_copy(&fenabled), core::mem::transmute_copy(&fvisible)).into()
        }
        unsafe extern "system" fn msSiteModeSetIconOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iconurl: core::mem::MaybeUninit<windows_core::BSTR>, pvardescription: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeSetIconOverlay(this, core::mem::transmute(&iconurl), core::mem::transmute_copy(&pvardescription)).into()
        }
        unsafe extern "system" fn msSiteModeClearIconOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeClearIconOverlay(this).into()
        }
        unsafe extern "system" fn msAddSiteMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msAddSiteMode(this).into()
        }
        unsafe extern "system" fn msSiteModeCreateJumpList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrheader: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeCreateJumpList(this, core::mem::transmute(&bstrheader)).into()
        }
        unsafe extern "system" fn msSiteModeAddJumpListItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: core::mem::MaybeUninit<windows_core::BSTR>, bstractionuri: core::mem::MaybeUninit<windows_core::BSTR>, bstriconuri: core::mem::MaybeUninit<windows_core::BSTR>, pvarwindowtype: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeAddJumpListItem(this, core::mem::transmute(&bstrname), core::mem::transmute(&bstractionuri), core::mem::transmute(&bstriconuri), core::mem::transmute_copy(&pvarwindowtype)).into()
        }
        unsafe extern "system" fn msSiteModeClearJumpList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeClearJumpList(this).into()
        }
        unsafe extern "system" fn msSiteModeShowJumpList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeShowJumpList(this).into()
        }
        unsafe extern "system" fn msSiteModeAddButtonStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uibuttonid: core::mem::MaybeUninit<windows_core::VARIANT>, bstriconurl: core::mem::MaybeUninit<windows_core::BSTR>, bstrtooltip: core::mem::MaybeUninit<windows_core::BSTR>, pvarstyleid: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper4_Impl::msSiteModeAddButtonStyle(this, core::mem::transmute(&uibuttonid), core::mem::transmute(&bstriconurl), core::mem::transmute(&bstrtooltip)) {
                Ok(ok__) => {
                    pvarstyleid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msSiteModeShowButtonStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uibuttonid: core::mem::MaybeUninit<windows_core::VARIANT>, uistyleid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeShowButtonStyle(this, core::mem::transmute(&uibuttonid), core::mem::transmute(&uistyleid)).into()
        }
        unsafe extern "system" fn msSiteModeActivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msSiteModeActivate(this).into()
        }
        unsafe extern "system" fn msIsSiteModeFirstRun<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpreservestate: super::super::Foundation::VARIANT_BOOL, puifirstrun: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper4_Impl::msIsSiteModeFirstRun(this, core::mem::transmute_copy(&fpreservestate)) {
                Ok(ok__) => {
                    puifirstrun.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msAddTrackingProtectionList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, bstrfiltername: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper4_Impl::msAddTrackingProtectionList(this, core::mem::transmute(&url), core::mem::transmute(&bstrfiltername)).into()
        }
        unsafe extern "system" fn msTrackingProtectionEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper4_Impl::msTrackingProtectionEnabled(this) {
                Ok(ok__) => {
                    pfenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msActiveXFilteringEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper4_Impl::msActiveXFilteringEnabled(this) {
                Ok(ok__) => {
                    pfenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IShellUIHelper3_Vtbl::new::<Identity, OFFSET>(),
            msIsSiteMode: msIsSiteMode::<Identity, OFFSET>,
            msSiteModeShowThumbBar: msSiteModeShowThumbBar::<Identity, OFFSET>,
            msSiteModeAddThumbBarButton: msSiteModeAddThumbBarButton::<Identity, OFFSET>,
            msSiteModeUpdateThumbBarButton: msSiteModeUpdateThumbBarButton::<Identity, OFFSET>,
            msSiteModeSetIconOverlay: msSiteModeSetIconOverlay::<Identity, OFFSET>,
            msSiteModeClearIconOverlay: msSiteModeClearIconOverlay::<Identity, OFFSET>,
            msAddSiteMode: msAddSiteMode::<Identity, OFFSET>,
            msSiteModeCreateJumpList: msSiteModeCreateJumpList::<Identity, OFFSET>,
            msSiteModeAddJumpListItem: msSiteModeAddJumpListItem::<Identity, OFFSET>,
            msSiteModeClearJumpList: msSiteModeClearJumpList::<Identity, OFFSET>,
            msSiteModeShowJumpList: msSiteModeShowJumpList::<Identity, OFFSET>,
            msSiteModeAddButtonStyle: msSiteModeAddButtonStyle::<Identity, OFFSET>,
            msSiteModeShowButtonStyle: msSiteModeShowButtonStyle::<Identity, OFFSET>,
            msSiteModeActivate: msSiteModeActivate::<Identity, OFFSET>,
            msIsSiteModeFirstRun: msIsSiteModeFirstRun::<Identity, OFFSET>,
            msAddTrackingProtectionList: msAddTrackingProtectionList::<Identity, OFFSET>,
            msTrackingProtectionEnabled: msTrackingProtectionEnabled::<Identity, OFFSET>,
            msActiveXFilteringEnabled: msActiveXFilteringEnabled::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper5_Impl: Sized + IShellUIHelper4_Impl {
    fn msProvisionNetworks(&self, bstrprovisioningxml: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn msReportSafeUrl(&self) -> windows_core::Result<()>;
    fn msSiteModeRefreshBadge(&self) -> windows_core::Result<()>;
    fn msSiteModeClearBadge(&self) -> windows_core::Result<()>;
    fn msDiagnoseConnectionUILess(&self) -> windows_core::Result<()>;
    fn msLaunchNetworkClientHelp(&self) -> windows_core::Result<()>;
    fn msChangeDefaultBrowser(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper5 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper5_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper5_Vtbl
    where
        Identity: IShellUIHelper5_Impl,
    {
        unsafe extern "system" fn msProvisionNetworks<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrprovisioningxml: core::mem::MaybeUninit<windows_core::BSTR>, puiresult: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper5_Impl::msProvisionNetworks(this, core::mem::transmute(&bstrprovisioningxml)) {
                Ok(ok__) => {
                    puiresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msReportSafeUrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper5_Impl::msReportSafeUrl(this).into()
        }
        unsafe extern "system" fn msSiteModeRefreshBadge<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper5_Impl::msSiteModeRefreshBadge(this).into()
        }
        unsafe extern "system" fn msSiteModeClearBadge<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper5_Impl::msSiteModeClearBadge(this).into()
        }
        unsafe extern "system" fn msDiagnoseConnectionUILess<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper5_Impl::msDiagnoseConnectionUILess(this).into()
        }
        unsafe extern "system" fn msLaunchNetworkClientHelp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper5_Impl::msLaunchNetworkClientHelp(this).into()
        }
        unsafe extern "system" fn msChangeDefaultBrowser<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper5_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper5_Impl::msChangeDefaultBrowser(this, core::mem::transmute_copy(&fchange)).into()
        }
        Self {
            base__: IShellUIHelper4_Vtbl::new::<Identity, OFFSET>(),
            msProvisionNetworks: msProvisionNetworks::<Identity, OFFSET>,
            msReportSafeUrl: msReportSafeUrl::<Identity, OFFSET>,
            msSiteModeRefreshBadge: msSiteModeRefreshBadge::<Identity, OFFSET>,
            msSiteModeClearBadge: msSiteModeClearBadge::<Identity, OFFSET>,
            msDiagnoseConnectionUILess: msDiagnoseConnectionUILess::<Identity, OFFSET>,
            msLaunchNetworkClientHelp: msLaunchNetworkClientHelp::<Identity, OFFSET>,
            msChangeDefaultBrowser: msChangeDefaultBrowser::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper6_Impl: Sized + IShellUIHelper5_Impl {
    fn msStopPeriodicTileUpdate(&self) -> windows_core::Result<()>;
    fn msStartPeriodicTileUpdate(&self, pollinguris: &windows_core::VARIANT, starttime: &windows_core::VARIANT, uiupdaterecurrence: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn msStartPeriodicTileUpdateBatch(&self, pollinguris: &windows_core::VARIANT, starttime: &windows_core::VARIANT, uiupdaterecurrence: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn msClearTile(&self) -> windows_core::Result<()>;
    fn msEnableTileNotificationQueue(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msPinnedSiteState(&self) -> windows_core::Result<windows_core::VARIANT>;
    fn msEnableTileNotificationQueueForSquare150x150(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msEnableTileNotificationQueueForWide310x150(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msEnableTileNotificationQueueForSquare310x310(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msScheduledTileNotification(&self, bstrnotificationxml: &windows_core::BSTR, bstrnotificationid: &windows_core::BSTR, bstrnotificationtag: &windows_core::BSTR, starttime: &windows_core::VARIANT, expirationtime: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn msRemoveScheduledTileNotification(&self, bstrnotificationid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn msStartPeriodicBadgeUpdate(&self, pollinguri: &windows_core::BSTR, starttime: &windows_core::VARIANT, uiupdaterecurrence: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn msStopPeriodicBadgeUpdate(&self) -> windows_core::Result<()>;
    fn msLaunchInternetOptions(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper6 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper6_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper6_Vtbl
    where
        Identity: IShellUIHelper6_Impl,
    {
        unsafe extern "system" fn msStopPeriodicTileUpdate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msStopPeriodicTileUpdate(this).into()
        }
        unsafe extern "system" fn msStartPeriodicTileUpdate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pollinguris: core::mem::MaybeUninit<windows_core::VARIANT>, starttime: core::mem::MaybeUninit<windows_core::VARIANT>, uiupdaterecurrence: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msStartPeriodicTileUpdate(this, core::mem::transmute(&pollinguris), core::mem::transmute(&starttime), core::mem::transmute(&uiupdaterecurrence)).into()
        }
        unsafe extern "system" fn msStartPeriodicTileUpdateBatch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pollinguris: core::mem::MaybeUninit<windows_core::VARIANT>, starttime: core::mem::MaybeUninit<windows_core::VARIANT>, uiupdaterecurrence: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msStartPeriodicTileUpdateBatch(this, core::mem::transmute(&pollinguris), core::mem::transmute(&starttime), core::mem::transmute(&uiupdaterecurrence)).into()
        }
        unsafe extern "system" fn msClearTile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msClearTile(this).into()
        }
        unsafe extern "system" fn msEnableTileNotificationQueue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msEnableTileNotificationQueue(this, core::mem::transmute_copy(&fchange)).into()
        }
        unsafe extern "system" fn msPinnedSiteState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarsitestate: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper6_Impl::msPinnedSiteState(this) {
                Ok(ok__) => {
                    pvarsitestate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn msEnableTileNotificationQueueForSquare150x150<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msEnableTileNotificationQueueForSquare150x150(this, core::mem::transmute_copy(&fchange)).into()
        }
        unsafe extern "system" fn msEnableTileNotificationQueueForWide310x150<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msEnableTileNotificationQueueForWide310x150(this, core::mem::transmute_copy(&fchange)).into()
        }
        unsafe extern "system" fn msEnableTileNotificationQueueForSquare310x310<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msEnableTileNotificationQueueForSquare310x310(this, core::mem::transmute_copy(&fchange)).into()
        }
        unsafe extern "system" fn msScheduledTileNotification<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrnotificationxml: core::mem::MaybeUninit<windows_core::BSTR>, bstrnotificationid: core::mem::MaybeUninit<windows_core::BSTR>, bstrnotificationtag: core::mem::MaybeUninit<windows_core::BSTR>, starttime: core::mem::MaybeUninit<windows_core::VARIANT>, expirationtime: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msScheduledTileNotification(this, core::mem::transmute(&bstrnotificationxml), core::mem::transmute(&bstrnotificationid), core::mem::transmute(&bstrnotificationtag), core::mem::transmute(&starttime), core::mem::transmute(&expirationtime)).into()
        }
        unsafe extern "system" fn msRemoveScheduledTileNotification<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrnotificationid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msRemoveScheduledTileNotification(this, core::mem::transmute(&bstrnotificationid)).into()
        }
        unsafe extern "system" fn msStartPeriodicBadgeUpdate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pollinguri: core::mem::MaybeUninit<windows_core::BSTR>, starttime: core::mem::MaybeUninit<windows_core::VARIANT>, uiupdaterecurrence: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msStartPeriodicBadgeUpdate(this, core::mem::transmute(&pollinguri), core::mem::transmute(&starttime), core::mem::transmute(&uiupdaterecurrence)).into()
        }
        unsafe extern "system" fn msStopPeriodicBadgeUpdate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msStopPeriodicBadgeUpdate(this).into()
        }
        unsafe extern "system" fn msLaunchInternetOptions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper6_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper6_Impl::msLaunchInternetOptions(this).into()
        }
        Self {
            base__: IShellUIHelper5_Vtbl::new::<Identity, OFFSET>(),
            msStopPeriodicTileUpdate: msStopPeriodicTileUpdate::<Identity, OFFSET>,
            msStartPeriodicTileUpdate: msStartPeriodicTileUpdate::<Identity, OFFSET>,
            msStartPeriodicTileUpdateBatch: msStartPeriodicTileUpdateBatch::<Identity, OFFSET>,
            msClearTile: msClearTile::<Identity, OFFSET>,
            msEnableTileNotificationQueue: msEnableTileNotificationQueue::<Identity, OFFSET>,
            msPinnedSiteState: msPinnedSiteState::<Identity, OFFSET>,
            msEnableTileNotificationQueueForSquare150x150: msEnableTileNotificationQueueForSquare150x150::<Identity, OFFSET>,
            msEnableTileNotificationQueueForWide310x150: msEnableTileNotificationQueueForWide310x150::<Identity, OFFSET>,
            msEnableTileNotificationQueueForSquare310x310: msEnableTileNotificationQueueForSquare310x310::<Identity, OFFSET>,
            msScheduledTileNotification: msScheduledTileNotification::<Identity, OFFSET>,
            msRemoveScheduledTileNotification: msRemoveScheduledTileNotification::<Identity, OFFSET>,
            msStartPeriodicBadgeUpdate: msStartPeriodicBadgeUpdate::<Identity, OFFSET>,
            msStopPeriodicBadgeUpdate: msStopPeriodicBadgeUpdate::<Identity, OFFSET>,
            msLaunchInternetOptions: msLaunchInternetOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper6 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper7_Impl: Sized + IShellUIHelper6_Impl {
    fn SetExperimentalFlag(&self, bstrflagstring: &windows_core::BSTR, vfflag: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn GetExperimentalFlag(&self, bstrflagstring: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetExperimentalValue(&self, bstrvaluestring: &windows_core::BSTR, dwvalue: u32) -> windows_core::Result<()>;
    fn GetExperimentalValue(&self, bstrvaluestring: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn ResetAllExperimentalFlagsAndValues(&self) -> windows_core::Result<()>;
    fn GetNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR, flag: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn HasNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn LaunchIE(&self, bstrurl: &windows_core::BSTR, automated: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper7 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper7_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper7_Vtbl
    where
        Identity: IShellUIHelper7_Impl,
    {
        unsafe extern "system" fn SetExperimentalFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrflagstring: core::mem::MaybeUninit<windows_core::BSTR>, vfflag: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper7_Impl::SetExperimentalFlag(this, core::mem::transmute(&bstrflagstring), core::mem::transmute_copy(&vfflag)).into()
        }
        unsafe extern "system" fn GetExperimentalFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrflagstring: core::mem::MaybeUninit<windows_core::BSTR>, vfflag: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper7_Impl::GetExperimentalFlag(this, core::mem::transmute(&bstrflagstring)) {
                Ok(ok__) => {
                    vfflag.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetExperimentalValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrvaluestring: core::mem::MaybeUninit<windows_core::BSTR>, dwvalue: u32) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper7_Impl::SetExperimentalValue(this, core::mem::transmute(&bstrvaluestring), core::mem::transmute_copy(&dwvalue)).into()
        }
        unsafe extern "system" fn GetExperimentalValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrvaluestring: core::mem::MaybeUninit<windows_core::BSTR>, pdwvalue: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper7_Impl::GetExperimentalValue(this, core::mem::transmute(&bstrvaluestring)) {
                Ok(ok__) => {
                    pdwvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ResetAllExperimentalFlagsAndValues<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper7_Impl::ResetAllExperimentalFlagsAndValues(this).into()
        }
        unsafe extern "system" fn GetNeedIEAutoLaunchFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: core::mem::MaybeUninit<windows_core::BSTR>, flag: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper7_Impl::GetNeedIEAutoLaunchFlag(this, core::mem::transmute(&bstrurl)) {
                Ok(ok__) => {
                    flag.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNeedIEAutoLaunchFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: core::mem::MaybeUninit<windows_core::BSTR>, flag: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper7_Impl::SetNeedIEAutoLaunchFlag(this, core::mem::transmute(&bstrurl), core::mem::transmute_copy(&flag)).into()
        }
        unsafe extern "system" fn HasNeedIEAutoLaunchFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: core::mem::MaybeUninit<windows_core::BSTR>, exists: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper7_Impl::HasNeedIEAutoLaunchFlag(this, core::mem::transmute(&bstrurl)) {
                Ok(ok__) => {
                    exists.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LaunchIE<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: core::mem::MaybeUninit<windows_core::BSTR>, automated: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper7_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper7_Impl::LaunchIE(this, core::mem::transmute(&bstrurl), core::mem::transmute_copy(&automated)).into()
        }
        Self {
            base__: IShellUIHelper6_Vtbl::new::<Identity, OFFSET>(),
            SetExperimentalFlag: SetExperimentalFlag::<Identity, OFFSET>,
            GetExperimentalFlag: GetExperimentalFlag::<Identity, OFFSET>,
            SetExperimentalValue: SetExperimentalValue::<Identity, OFFSET>,
            GetExperimentalValue: GetExperimentalValue::<Identity, OFFSET>,
            ResetAllExperimentalFlagsAndValues: ResetAllExperimentalFlagsAndValues::<Identity, OFFSET>,
            GetNeedIEAutoLaunchFlag: GetNeedIEAutoLaunchFlag::<Identity, OFFSET>,
            SetNeedIEAutoLaunchFlag: SetNeedIEAutoLaunchFlag::<Identity, OFFSET>,
            HasNeedIEAutoLaunchFlag: HasNeedIEAutoLaunchFlag::<Identity, OFFSET>,
            LaunchIE: LaunchIE::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper7 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<IShellUIHelper6 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper8_Impl: Sized + IShellUIHelper7_Impl {
    fn GetCVListData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetCVListLocalData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetEMIEListData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetEMIEListLocalData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn OpenFavoritesPane(&self) -> windows_core::Result<()>;
    fn OpenFavoritesSettings(&self) -> windows_core::Result<()>;
    fn LaunchInHVSI(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper8 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper8_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper8_Vtbl
    where
        Identity: IShellUIHelper8_Impl,
    {
        unsafe extern "system" fn GetCVListData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper8_Impl::GetCVListData(this) {
                Ok(ok__) => {
                    pbstrresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCVListLocalData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper8_Impl::GetCVListLocalData(this) {
                Ok(ok__) => {
                    pbstrresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEMIEListData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper8_Impl::GetEMIEListData(this) {
                Ok(ok__) => {
                    pbstrresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEMIEListLocalData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper8_Impl::GetEMIEListLocalData(this) {
                Ok(ok__) => {
                    pbstrresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OpenFavoritesPane<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper8_Impl::OpenFavoritesPane(this).into()
        }
        unsafe extern "system" fn OpenFavoritesSettings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper8_Impl::OpenFavoritesSettings(this).into()
        }
        unsafe extern "system" fn LaunchInHVSI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper8_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellUIHelper8_Impl::LaunchInHVSI(this, core::mem::transmute(&bstrurl)).into()
        }
        Self {
            base__: IShellUIHelper7_Vtbl::new::<Identity, OFFSET>(),
            GetCVListData: GetCVListData::<Identity, OFFSET>,
            GetCVListLocalData: GetCVListLocalData::<Identity, OFFSET>,
            GetEMIEListData: GetEMIEListData::<Identity, OFFSET>,
            GetEMIEListLocalData: GetEMIEListLocalData::<Identity, OFFSET>,
            OpenFavoritesPane: OpenFavoritesPane::<Identity, OFFSET>,
            OpenFavoritesSettings: OpenFavoritesSettings::<Identity, OFFSET>,
            LaunchInHVSI: LaunchInHVSI::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper8 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<IShellUIHelper6 as windows_core::Interface>::IID || iid == &<IShellUIHelper7 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellUIHelper9_Impl: Sized + IShellUIHelper8_Impl {
    fn GetOSSku(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellUIHelper9 {}
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellUIHelper9_Vtbl
    where
        Identity: IShellUIHelper9_Impl,
    {
        unsafe extern "system" fn GetOSSku<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwresult: *mut u32) -> windows_core::HRESULT
        where
            Identity: IShellUIHelper9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellUIHelper9_Impl::GetOSSku(this) {
                Ok(ok__) => {
                    pdwresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IShellUIHelper8_Vtbl::new::<Identity, OFFSET>(), GetOSSku: GetOSSku::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper9 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<IShellUIHelper6 as windows_core::Interface>::IID || iid == &<IShellUIHelper7 as windows_core::Interface>::IID || iid == &<IShellUIHelper8 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellView_Impl: Sized + super::super::System::Ole::IOleWindow_Impl {
    fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT;
    fn EnableModeless(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn UIActivate(&self, ustate: u32) -> windows_core::Result<()>;
    fn Refresh(&self) -> windows_core::Result<()>;
    fn CreateViewWindow(&self, psvprevious: Option<&IShellView>, pfs: *const FOLDERSETTINGS, psb: Option<&IShellBrowser>, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>;
    fn DestroyViewWindow(&self) -> windows_core::Result<()>;
    fn GetCurrentInfo(&self) -> windows_core::Result<FOLDERSETTINGS>;
    fn AddPropertySheetPages(&self, dwreserved: u32, pfn: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn SaveViewState(&self) -> windows_core::Result<()>;
    fn SelectItem(&self, pidlitem: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::Result<()>;
    fn GetItemObject(&self, uitem: &_SVGIO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellView {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellView_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellView_Vtbl
    where
        Identity: IShellView_Impl,
    {
        unsafe extern "system" fn TranslateAccelerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::TranslateAccelerator(this, core::mem::transmute_copy(&pmsg))
        }
        unsafe extern "system" fn EnableModeless<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::EnableModeless(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn UIActivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ustate: u32) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::UIActivate(this, core::mem::transmute_copy(&ustate)).into()
        }
        unsafe extern "system" fn Refresh<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::Refresh(this).into()
        }
        unsafe extern "system" fn CreateViewWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psvprevious: *mut core::ffi::c_void, pfs: *const FOLDERSETTINGS, psb: *mut core::ffi::c_void, prcview: *const super::super::Foundation::RECT, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellView_Impl::CreateViewWindow(this, windows_core::from_raw_borrowed(&psvprevious), core::mem::transmute_copy(&pfs), windows_core::from_raw_borrowed(&psb), core::mem::transmute_copy(&prcview)) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DestroyViewWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::DestroyViewWindow(this).into()
        }
        unsafe extern "system" fn GetCurrentInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfs: *mut FOLDERSETTINGS) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellView_Impl::GetCurrentInfo(this) {
                Ok(ok__) => {
                    pfs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddPropertySheetPages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32, pfn: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::AddPropertySheetPages(this, core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&pfn), core::mem::transmute_copy(&lparam)).into()
        }
        unsafe extern "system" fn SaveViewState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::SaveViewState(this).into()
        }
        unsafe extern "system" fn SelectItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlitem: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::SelectItem(this, core::mem::transmute_copy(&pidlitem), core::mem::transmute_copy(&uflags)).into()
        }
        unsafe extern "system" fn GetItemObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uitem: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellView_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView_Impl::GetItemObject(this, core::mem::transmute(&uitem), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            TranslateAccelerator: TranslateAccelerator::<Identity, OFFSET>,
            EnableModeless: EnableModeless::<Identity, OFFSET>,
            UIActivate: UIActivate::<Identity, OFFSET>,
            Refresh: Refresh::<Identity, OFFSET>,
            CreateViewWindow: CreateViewWindow::<Identity, OFFSET>,
            DestroyViewWindow: DestroyViewWindow::<Identity, OFFSET>,
            GetCurrentInfo: GetCurrentInfo::<Identity, OFFSET>,
            AddPropertySheetPages: AddPropertySheetPages::<Identity, OFFSET>,
            SaveViewState: SaveViewState::<Identity, OFFSET>,
            SelectItem: SelectItem::<Identity, OFFSET>,
            GetItemObject: GetItemObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellView as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellView2_Impl: Sized + IShellView_Impl {
    fn GetView(&self, pvid: *mut windows_core::GUID, uview: u32) -> windows_core::Result<()>;
    fn CreateViewWindow2(&self, lpparams: *const SV2CVW2_PARAMS) -> windows_core::Result<()>;
    fn HandleRename(&self, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn SelectAndPositionItem(&self, pidlitem: *const Common::ITEMIDLIST, uflags: u32, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellView2 {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellView2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellView2_Vtbl
    where
        Identity: IShellView2_Impl,
    {
        unsafe extern "system" fn GetView<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvid: *mut windows_core::GUID, uview: u32) -> windows_core::HRESULT
        where
            Identity: IShellView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView2_Impl::GetView(this, core::mem::transmute_copy(&pvid), core::mem::transmute_copy(&uview)).into()
        }
        unsafe extern "system" fn CreateViewWindow2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpparams: *const SV2CVW2_PARAMS) -> windows_core::HRESULT
        where
            Identity: IShellView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView2_Impl::CreateViewWindow2(this, core::mem::transmute_copy(&lpparams)).into()
        }
        unsafe extern "system" fn HandleRename<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlnew: *const Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IShellView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView2_Impl::HandleRename(this, core::mem::transmute_copy(&pidlnew)).into()
        }
        unsafe extern "system" fn SelectAndPositionItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlitem: *const Common::ITEMIDLIST, uflags: u32, ppt: *const super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IShellView2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellView2_Impl::SelectAndPositionItem(this, core::mem::transmute_copy(&pidlitem), core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&ppt)).into()
        }
        Self {
            base__: IShellView_Vtbl::new::<Identity, OFFSET>(),
            GetView: GetView::<Identity, OFFSET>,
            CreateViewWindow2: CreateViewWindow2::<Identity, OFFSET>,
            HandleRename: HandleRename::<Identity, OFFSET>,
            SelectAndPositionItem: SelectAndPositionItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellView2 as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IShellView as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellView3_Impl: Sized + IShellView2_Impl {
    fn CreateViewWindow3(&self, psbowner: Option<&IShellBrowser>, psvprev: Option<&IShellView>, dwviewflags: u32, dwmask: FOLDERFLAGS, dwflags: FOLDERFLAGS, fvmode: FOLDERVIEWMODE, pvid: *const windows_core::GUID, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellView3 {}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellView3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellView3_Vtbl
    where
        Identity: IShellView3_Impl,
    {
        unsafe extern "system" fn CreateViewWindow3<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psbowner: *mut core::ffi::c_void, psvprev: *mut core::ffi::c_void, dwviewflags: u32, dwmask: FOLDERFLAGS, dwflags: FOLDERFLAGS, fvmode: FOLDERVIEWMODE, pvid: *const windows_core::GUID, prcview: *const super::super::Foundation::RECT, phwndview: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IShellView3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellView3_Impl::CreateViewWindow3(this, windows_core::from_raw_borrowed(&psbowner), windows_core::from_raw_borrowed(&psvprev), core::mem::transmute_copy(&dwviewflags), core::mem::transmute_copy(&dwmask), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&fvmode), core::mem::transmute_copy(&pvid), core::mem::transmute_copy(&prcview)) {
                Ok(ok__) => {
                    phwndview.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IShellView2_Vtbl::new::<Identity, OFFSET>(), CreateViewWindow3: CreateViewWindow3::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellView3 as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IShellView as windows_core::Interface>::IID || iid == &<IShellView2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellWindows_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Item(&self, index: &windows_core::VARIANT) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn Register(&self, pid: Option<&super::super::System::Com::IDispatch>, hwnd: i32, swclass: ShellWindowTypeConstants) -> windows_core::Result<i32>;
    fn RegisterPending(&self, lthreadid: i32, pvarloc: *const windows_core::VARIANT, pvarlocroot: *const windows_core::VARIANT, swclass: ShellWindowTypeConstants) -> windows_core::Result<i32>;
    fn Revoke(&self, lcookie: i32) -> windows_core::Result<()>;
    fn OnNavigate(&self, lcookie: i32, pvarloc: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn OnActivated(&self, lcookie: i32, factive: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn FindWindowSW(&self, pvarloc: *const windows_core::VARIANT, pvarlocroot: *const windows_core::VARIANT, swclass: ShellWindowTypeConstants, phwnd: *mut i32, swfwoptions: ShellWindowFindWindowOptions) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn OnCreated(&self, lcookie: i32, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ProcessAttachDetach(&self, fattach: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellWindows {}
#[cfg(feature = "Win32_System_Com")]
impl IShellWindows_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IShellWindows_Vtbl
    where
        Identity: IShellWindows_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellWindows_Impl::Count(this) {
                Ok(ok__) => {
                    count.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, folder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellWindows_Impl::Item(this, core::mem::transmute(&index)) {
                Ok(ok__) => {
                    folder.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellWindows_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Register<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: *mut core::ffi::c_void, hwnd: i32, swclass: ShellWindowTypeConstants, plcookie: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellWindows_Impl::Register(this, windows_core::from_raw_borrowed(&pid), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&swclass)) {
                Ok(ok__) => {
                    plcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterPending<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lthreadid: i32, pvarloc: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarlocroot: *const core::mem::MaybeUninit<windows_core::VARIANT>, swclass: ShellWindowTypeConstants, plcookie: *mut i32) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellWindows_Impl::RegisterPending(this, core::mem::transmute_copy(&lthreadid), core::mem::transmute_copy(&pvarloc), core::mem::transmute_copy(&pvarlocroot), core::mem::transmute_copy(&swclass)) {
                Ok(ok__) => {
                    plcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Revoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellWindows_Impl::Revoke(this, core::mem::transmute_copy(&lcookie)).into()
        }
        unsafe extern "system" fn OnNavigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32, pvarloc: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellWindows_Impl::OnNavigate(this, core::mem::transmute_copy(&lcookie), core::mem::transmute_copy(&pvarloc)).into()
        }
        unsafe extern "system" fn OnActivated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32, factive: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellWindows_Impl::OnActivated(this, core::mem::transmute_copy(&lcookie), core::mem::transmute_copy(&factive)).into()
        }
        unsafe extern "system" fn FindWindowSW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarloc: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarlocroot: *const core::mem::MaybeUninit<windows_core::VARIANT>, swclass: ShellWindowTypeConstants, phwnd: *mut i32, swfwoptions: ShellWindowFindWindowOptions, ppdispout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IShellWindows_Impl::FindWindowSW(this, core::mem::transmute_copy(&pvarloc), core::mem::transmute_copy(&pvarlocroot), core::mem::transmute_copy(&swclass), core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&swfwoptions)) {
                Ok(ok__) => {
                    ppdispout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnCreated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellWindows_Impl::OnCreated(this, core::mem::transmute_copy(&lcookie), windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn ProcessAttachDetach<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fattach: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IShellWindows_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IShellWindows_Impl::ProcessAttachDetach(this, core::mem::transmute_copy(&fattach)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            Register: Register::<Identity, OFFSET>,
            RegisterPending: RegisterPending::<Identity, OFFSET>,
            Revoke: Revoke::<Identity, OFFSET>,
            OnNavigate: OnNavigate::<Identity, OFFSET>,
            OnActivated: OnActivated::<Identity, OFFSET>,
            FindWindowSW: FindWindowSW::<Identity, OFFSET>,
            OnCreated: OnCreated::<Identity, OFFSET>,
            ProcessAttachDetach: ProcessAttachDetach::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellWindows as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait ISortColumnArray_Impl: Sized {
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetAt(&self, index: u32, sortcolumn: *mut SORTCOLUMN) -> windows_core::Result<()>;
    fn GetSortType(&self) -> windows_core::Result<SORT_ORDER_TYPE>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for ISortColumnArray {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl ISortColumnArray_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISortColumnArray_Vtbl
    where
        Identity: ISortColumnArray_Impl,
    {
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, columncount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISortColumnArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISortColumnArray_Impl::GetCount(this) {
                Ok(ok__) => {
                    columncount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, sortcolumn: *mut SORTCOLUMN) -> windows_core::HRESULT
        where
            Identity: ISortColumnArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISortColumnArray_Impl::GetAt(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&sortcolumn)).into()
        }
        unsafe extern "system" fn GetSortType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut SORT_ORDER_TYPE) -> windows_core::HRESULT
        where
            Identity: ISortColumnArray_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISortColumnArray_Impl::GetSortType(this) {
                Ok(ok__) => {
                    r#type.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCount: GetCount::<Identity, OFFSET>,
            GetAt: GetAt::<Identity, OFFSET>,
            GetSortType: GetSortType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISortColumnArray as windows_core::Interface>::IID
    }
}
pub trait IStartMenuPinnedList_Impl: Sized {
    fn RemoveFromList(&self, pitem: Option<&IShellItem>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStartMenuPinnedList {}
impl IStartMenuPinnedList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStartMenuPinnedList_Vtbl
    where
        Identity: IStartMenuPinnedList_Impl,
    {
        unsafe extern "system" fn RemoveFromList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStartMenuPinnedList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStartMenuPinnedList_Impl::RemoveFromList(this, windows_core::from_raw_borrowed(&pitem)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RemoveFromList: RemoveFromList::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStartMenuPinnedList as windows_core::Interface>::IID
    }
}
pub trait IStorageProviderBanners_Impl: Sized {
    fn SetBanner(&self, provideridentity: &windows_core::PCWSTR, subscriptionid: &windows_core::PCWSTR, contentid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ClearBanner(&self, provideridentity: &windows_core::PCWSTR, subscriptionid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ClearAllBanners(&self, provideridentity: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetBanner(&self, provideridentity: &windows_core::PCWSTR, subscriptionid: &windows_core::PCWSTR) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IStorageProviderBanners {}
impl IStorageProviderBanners_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStorageProviderBanners_Vtbl
    where
        Identity: IStorageProviderBanners_Impl,
    {
        unsafe extern "system" fn SetBanner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR, subscriptionid: windows_core::PCWSTR, contentid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStorageProviderBanners_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStorageProviderBanners_Impl::SetBanner(this, core::mem::transmute(&provideridentity), core::mem::transmute(&subscriptionid), core::mem::transmute(&contentid)).into()
        }
        unsafe extern "system" fn ClearBanner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR, subscriptionid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStorageProviderBanners_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStorageProviderBanners_Impl::ClearBanner(this, core::mem::transmute(&provideridentity), core::mem::transmute(&subscriptionid)).into()
        }
        unsafe extern "system" fn ClearAllBanners<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStorageProviderBanners_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStorageProviderBanners_Impl::ClearAllBanners(this, core::mem::transmute(&provideridentity)).into()
        }
        unsafe extern "system" fn GetBanner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR, subscriptionid: windows_core::PCWSTR, contentid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IStorageProviderBanners_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStorageProviderBanners_Impl::GetBanner(this, core::mem::transmute(&provideridentity), core::mem::transmute(&subscriptionid)) {
                Ok(ok__) => {
                    contentid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBanner: SetBanner::<Identity, OFFSET>,
            ClearBanner: ClearBanner::<Identity, OFFSET>,
            ClearAllBanners: ClearAllBanners::<Identity, OFFSET>,
            GetBanner: GetBanner::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderBanners as windows_core::Interface>::IID
    }
}
pub trait IStorageProviderCopyHook_Impl: Sized {
    fn CopyCallback(&self, hwnd: super::super::Foundation::HWND, operation: u32, flags: u32, srcfile: &windows_core::PCWSTR, srcattribs: u32, destfile: &windows_core::PCWSTR, destattribs: u32) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IStorageProviderCopyHook {}
impl IStorageProviderCopyHook_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStorageProviderCopyHook_Vtbl
    where
        Identity: IStorageProviderCopyHook_Impl,
    {
        unsafe extern "system" fn CopyCallback<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, operation: u32, flags: u32, srcfile: windows_core::PCWSTR, srcattribs: u32, destfile: windows_core::PCWSTR, destattribs: u32, result: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStorageProviderCopyHook_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStorageProviderCopyHook_Impl::CopyCallback(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&operation), core::mem::transmute_copy(&flags), core::mem::transmute(&srcfile), core::mem::transmute_copy(&srcattribs), core::mem::transmute(&destfile), core::mem::transmute_copy(&destattribs)) {
                Ok(ok__) => {
                    result.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CopyCallback: CopyCallback::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderCopyHook as windows_core::Interface>::IID
    }
}
pub trait IStorageProviderHandler_Impl: Sized {
    fn GetPropertyHandlerFromPath(&self, path: &windows_core::PCWSTR) -> windows_core::Result<IStorageProviderPropertyHandler>;
    fn GetPropertyHandlerFromUri(&self, uri: &windows_core::PCWSTR) -> windows_core::Result<IStorageProviderPropertyHandler>;
    fn GetPropertyHandlerFromFileId(&self, fileid: &windows_core::PCWSTR) -> windows_core::Result<IStorageProviderPropertyHandler>;
}
impl windows_core::RuntimeName for IStorageProviderHandler {}
impl IStorageProviderHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStorageProviderHandler_Vtbl
    where
        Identity: IStorageProviderHandler_Impl,
    {
        unsafe extern "system" fn GetPropertyHandlerFromPath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, propertyhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStorageProviderHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStorageProviderHandler_Impl::GetPropertyHandlerFromPath(this, core::mem::transmute(&path)) {
                Ok(ok__) => {
                    propertyhandler.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPropertyHandlerFromUri<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uri: windows_core::PCWSTR, propertyhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStorageProviderHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStorageProviderHandler_Impl::GetPropertyHandlerFromUri(this, core::mem::transmute(&uri)) {
                Ok(ok__) => {
                    propertyhandler.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPropertyHandlerFromFileId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fileid: windows_core::PCWSTR, propertyhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStorageProviderHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStorageProviderHandler_Impl::GetPropertyHandlerFromFileId(this, core::mem::transmute(&fileid)) {
                Ok(ok__) => {
                    propertyhandler.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPropertyHandlerFromPath: GetPropertyHandlerFromPath::<Identity, OFFSET>,
            GetPropertyHandlerFromUri: GetPropertyHandlerFromUri::<Identity, OFFSET>,
            GetPropertyHandlerFromFileId: GetPropertyHandlerFromFileId::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IStorageProviderPropertyHandler_Impl: Sized {
    fn RetrieveProperties(&self, propertiestoretrieve: *const PropertiesSystem::PROPERTYKEY, propertiestoretrievecount: u32) -> windows_core::Result<PropertiesSystem::IPropertyStore>;
    fn SaveProperties(&self, propertiestosave: Option<&PropertiesSystem::IPropertyStore>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IStorageProviderPropertyHandler {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IStorageProviderPropertyHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStorageProviderPropertyHandler_Vtbl
    where
        Identity: IStorageProviderPropertyHandler_Impl,
    {
        unsafe extern "system" fn RetrieveProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, propertiestoretrieve: *const PropertiesSystem::PROPERTYKEY, propertiestoretrievecount: u32, retrievedproperties: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStorageProviderPropertyHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStorageProviderPropertyHandler_Impl::RetrieveProperties(this, core::mem::transmute_copy(&propertiestoretrieve), core::mem::transmute_copy(&propertiestoretrievecount)) {
                Ok(ok__) => {
                    retrievedproperties.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SaveProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, propertiestosave: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStorageProviderPropertyHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStorageProviderPropertyHandler_Impl::SaveProperties(this, windows_core::from_raw_borrowed(&propertiestosave)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RetrieveProperties: RetrieveProperties::<Identity, OFFSET>,
            SaveProperties: SaveProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderPropertyHandler as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_IO"))]
pub trait IStreamAsync_Impl: Sized + super::super::System::Com::IStream_Impl {
    fn ReadAsync(&self, pv: *mut core::ffi::c_void, cb: u32, pcbread: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::Result<()>;
    fn WriteAsync(&self, lpbuffer: *const core::ffi::c_void, cb: u32, pcbwritten: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::Result<()>;
    fn OverlappedResult(&self, lpoverlapped: *const super::super::System::IO::OVERLAPPED, lpnumberofbytestransferred: *mut u32, bwait: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CancelIo(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_IO"))]
impl windows_core::RuntimeName for IStreamAsync {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_IO"))]
impl IStreamAsync_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamAsync_Vtbl
    where
        Identity: IStreamAsync_Impl,
    {
        unsafe extern "system" fn ReadAsync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pv: *mut core::ffi::c_void, cb: u32, pcbread: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::HRESULT
        where
            Identity: IStreamAsync_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamAsync_Impl::ReadAsync(this, core::mem::transmute_copy(&pv), core::mem::transmute_copy(&cb), core::mem::transmute_copy(&pcbread), core::mem::transmute_copy(&lpoverlapped)).into()
        }
        unsafe extern "system" fn WriteAsync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbuffer: *const core::ffi::c_void, cb: u32, pcbwritten: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::HRESULT
        where
            Identity: IStreamAsync_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamAsync_Impl::WriteAsync(this, core::mem::transmute_copy(&lpbuffer), core::mem::transmute_copy(&cb), core::mem::transmute_copy(&pcbwritten), core::mem::transmute_copy(&lpoverlapped)).into()
        }
        unsafe extern "system" fn OverlappedResult<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpoverlapped: *const super::super::System::IO::OVERLAPPED, lpnumberofbytestransferred: *mut u32, bwait: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IStreamAsync_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamAsync_Impl::OverlappedResult(this, core::mem::transmute_copy(&lpoverlapped), core::mem::transmute_copy(&lpnumberofbytestransferred), core::mem::transmute_copy(&bwait)).into()
        }
        unsafe extern "system" fn CancelIo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamAsync_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamAsync_Impl::CancelIo(this).into()
        }
        Self {
            base__: super::super::System::Com::IStream_Vtbl::new::<Identity, OFFSET>(),
            ReadAsync: ReadAsync::<Identity, OFFSET>,
            WriteAsync: WriteAsync::<Identity, OFFSET>,
            OverlappedResult: OverlappedResult::<Identity, OFFSET>,
            CancelIo: CancelIo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamAsync as windows_core::Interface>::IID || iid == &<super::super::System::Com::ISequentialStream as windows_core::Interface>::IID || iid == &<super::super::System::Com::IStream as windows_core::Interface>::IID
    }
}
pub trait IStreamUnbufferedInfo_Impl: Sized {
    fn GetSectorSize(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IStreamUnbufferedInfo {}
impl IStreamUnbufferedInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamUnbufferedInfo_Vtbl
    where
        Identity: IStreamUnbufferedInfo_Impl,
    {
        unsafe extern "system" fn GetSectorSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcbsectorsize: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStreamUnbufferedInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamUnbufferedInfo_Impl::GetSectorSize(this) {
                Ok(ok__) => {
                    pcbsectorsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSectorSize: GetSectorSize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamUnbufferedInfo as windows_core::Interface>::IID
    }
}
pub trait ISuspensionDependencyManager_Impl: Sized {
    fn RegisterAsChild(&self, processhandle: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GroupChildWithParent(&self, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn UngroupChildFromParent(&self, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISuspensionDependencyManager {}
impl ISuspensionDependencyManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISuspensionDependencyManager_Vtbl
    where
        Identity: ISuspensionDependencyManager_Impl,
    {
        unsafe extern "system" fn RegisterAsChild<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, processhandle: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ISuspensionDependencyManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISuspensionDependencyManager_Impl::RegisterAsChild(this, core::mem::transmute_copy(&processhandle)).into()
        }
        unsafe extern "system" fn GroupChildWithParent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ISuspensionDependencyManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISuspensionDependencyManager_Impl::GroupChildWithParent(this, core::mem::transmute_copy(&childprocesshandle)).into()
        }
        unsafe extern "system" fn UngroupChildFromParent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ISuspensionDependencyManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISuspensionDependencyManager_Impl::UngroupChildFromParent(this, core::mem::transmute_copy(&childprocesshandle)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterAsChild: RegisterAsChild::<Identity, OFFSET>,
            GroupChildWithParent: GroupChildWithParent::<Identity, OFFSET>,
            UngroupChildFromParent: UngroupChildFromParent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISuspensionDependencyManager as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait ISyncMgrConflict_Impl: Sized {
    fn GetProperty(&self, propkey: *const PropertiesSystem::PROPERTYKEY) -> windows_core::Result<windows_core::PROPVARIANT>;
    fn GetConflictIdInfo(&self) -> windows_core::Result<SYNCMGR_CONFLICT_ID_INFO>;
    fn GetItemsArray(&self) -> windows_core::Result<ISyncMgrConflictItems>;
    fn Resolve(&self, presolveinfo: Option<&ISyncMgrConflictResolveInfo>) -> windows_core::Result<()>;
    fn GetResolutionHandler(&self, riid: *const windows_core::GUID, ppvresolutionhandler: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for ISyncMgrConflict {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl ISyncMgrConflict_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflict_Vtbl
    where
        Identity: ISyncMgrConflict_Impl,
    {
        unsafe extern "system" fn GetProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, propkey: *const PropertiesSystem::PROPERTYKEY, ppropvar: *mut core::mem::MaybeUninit<windows_core::PROPVARIANT>) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflict_Impl::GetProperty(this, core::mem::transmute_copy(&propkey)) {
                Ok(ok__) => {
                    ppropvar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConflictIdInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflictidinfo: *mut SYNCMGR_CONFLICT_ID_INFO) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflict_Impl::GetConflictIdInfo(this) {
                Ok(ok__) => {
                    pconflictidinfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemsArray<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pparray: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflict_Impl::GetItemsArray(this) {
                Ok(ok__) => {
                    pparray.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Resolve<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, presolveinfo: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflict_Impl::Resolve(this, windows_core::from_raw_borrowed(&presolveinfo)).into()
        }
        unsafe extern "system" fn GetResolutionHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppvresolutionhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflict_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflict_Impl::GetResolutionHandler(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvresolutionhandler)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetProperty: GetProperty::<Identity, OFFSET>,
            GetConflictIdInfo: GetConflictIdInfo::<Identity, OFFSET>,
            GetItemsArray: GetItemsArray::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            GetResolutionHandler: GetResolutionHandler::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflict as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ISyncMgrConflictFolder_Impl: Sized {
    fn GetConflictIDList(&self, pconflict: Option<&ISyncMgrConflict>) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ISyncMgrConflictFolder {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ISyncMgrConflictFolder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflictFolder_Vtbl
    where
        Identity: ISyncMgrConflictFolder_Impl,
    {
        unsafe extern "system" fn GetConflictIDList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflict: *mut core::ffi::c_void, ppidlconflict: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictFolder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictFolder_Impl::GetConflictIDList(this, windows_core::from_raw_borrowed(&pconflict)) {
                Ok(ok__) => {
                    ppidlconflict.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetConflictIDList: GetConflictIDList::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictFolder as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrConflictItems_Impl: Sized {
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetItem(&self, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_ITEM) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrConflictItems {}
impl ISyncMgrConflictItems_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflictItems_Vtbl
    where
        Identity: ISyncMgrConflictItems_Impl,
    {
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictItems_Impl::GetCount(this) {
                Ok(ok__) => {
                    pcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_ITEM) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictItems_Impl::GetItem(this, core::mem::transmute_copy(&iindex), core::mem::transmute_copy(&piteminfo)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCount: GetCount::<Identity, OFFSET>, GetItem: GetItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictItems as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrConflictPresenter_Impl: Sized {
    fn PresentConflict(&self, pconflict: Option<&ISyncMgrConflict>, presolveinfo: Option<&ISyncMgrConflictResolveInfo>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrConflictPresenter {}
impl ISyncMgrConflictPresenter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflictPresenter_Vtbl
    where
        Identity: ISyncMgrConflictPresenter_Impl,
    {
        unsafe extern "system" fn PresentConflict<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflict: *mut core::ffi::c_void, presolveinfo: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictPresenter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictPresenter_Impl::PresentConflict(this, windows_core::from_raw_borrowed(&pconflict), windows_core::from_raw_borrowed(&presolveinfo)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PresentConflict: PresentConflict::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictPresenter as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrConflictResolutionItems_Impl: Sized {
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetItem(&self, iindex: u32) -> windows_core::Result<CONFIRM_CONFLICT_RESULT_INFO>;
}
impl windows_core::RuntimeName for ISyncMgrConflictResolutionItems {}
impl ISyncMgrConflictResolutionItems_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflictResolutionItems_Vtbl
    where
        Identity: ISyncMgrConflictResolutionItems_Impl,
    {
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolutionItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictResolutionItems_Impl::GetCount(this) {
                Ok(ok__) => {
                    pcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_RESULT_INFO) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolutionItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictResolutionItems_Impl::GetItem(this, core::mem::transmute_copy(&iindex)) {
                Ok(ok__) => {
                    piteminfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCount: GetCount::<Identity, OFFSET>, GetItem: GetItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictResolutionItems as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrConflictResolveInfo_Impl: Sized {
    fn GetIterationInfo(&self, pncurrentconflict: *mut u32, pcconflicts: *mut u32, pcremainingforapplytoall: *mut u32) -> windows_core::Result<()>;
    fn GetPresenterNextStep(&self) -> windows_core::Result<SYNCMGR_PRESENTER_NEXT_STEP>;
    fn GetPresenterChoice(&self, pnpresenterchoice: *mut SYNCMGR_PRESENTER_CHOICE, pfapplytoall: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetItemChoiceCount(&self) -> windows_core::Result<u32>;
    fn GetItemChoice(&self, ichoice: u32) -> windows_core::Result<u32>;
    fn SetPresenterNextStep(&self, npresenternextstep: SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::Result<()>;
    fn SetPresenterChoice(&self, npresenterchoice: SYNCMGR_PRESENTER_CHOICE, fapplytoall: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetItemChoices(&self, prgiconflictitemindexes: *mut u32, cchoices: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrConflictResolveInfo {}
impl ISyncMgrConflictResolveInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflictResolveInfo_Vtbl
    where
        Identity: ISyncMgrConflictResolveInfo_Impl,
    {
        unsafe extern "system" fn GetIterationInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pncurrentconflict: *mut u32, pcconflicts: *mut u32, pcremainingforapplytoall: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictResolveInfo_Impl::GetIterationInfo(this, core::mem::transmute_copy(&pncurrentconflict), core::mem::transmute_copy(&pcconflicts), core::mem::transmute_copy(&pcremainingforapplytoall)).into()
        }
        unsafe extern "system" fn GetPresenterNextStep<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnpresenternextstep: *mut SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictResolveInfo_Impl::GetPresenterNextStep(this) {
                Ok(ok__) => {
                    pnpresenternextstep.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPresenterChoice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnpresenterchoice: *mut SYNCMGR_PRESENTER_CHOICE, pfapplytoall: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictResolveInfo_Impl::GetPresenterChoice(this, core::mem::transmute_copy(&pnpresenterchoice), core::mem::transmute_copy(&pfapplytoall)).into()
        }
        unsafe extern "system" fn GetItemChoiceCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcchoices: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictResolveInfo_Impl::GetItemChoiceCount(this) {
                Ok(ok__) => {
                    pcchoices.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemChoice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ichoice: u32, pichoiceindex: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictResolveInfo_Impl::GetItemChoice(this, core::mem::transmute_copy(&ichoice)) {
                Ok(ok__) => {
                    pichoiceindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPresenterNextStep<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, npresenternextstep: SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictResolveInfo_Impl::SetPresenterNextStep(this, core::mem::transmute_copy(&npresenternextstep)).into()
        }
        unsafe extern "system" fn SetPresenterChoice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, npresenterchoice: SYNCMGR_PRESENTER_CHOICE, fapplytoall: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictResolveInfo_Impl::SetPresenterChoice(this, core::mem::transmute_copy(&npresenterchoice), core::mem::transmute_copy(&fapplytoall)).into()
        }
        unsafe extern "system" fn SetItemChoices<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prgiconflictitemindexes: *mut u32, cchoices: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictResolveInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictResolveInfo_Impl::SetItemChoices(this, core::mem::transmute_copy(&prgiconflictitemindexes), core::mem::transmute_copy(&cchoices)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetIterationInfo: GetIterationInfo::<Identity, OFFSET>,
            GetPresenterNextStep: GetPresenterNextStep::<Identity, OFFSET>,
            GetPresenterChoice: GetPresenterChoice::<Identity, OFFSET>,
            GetItemChoiceCount: GetItemChoiceCount::<Identity, OFFSET>,
            GetItemChoice: GetItemChoice::<Identity, OFFSET>,
            SetPresenterNextStep: SetPresenterNextStep::<Identity, OFFSET>,
            SetPresenterChoice: SetPresenterChoice::<Identity, OFFSET>,
            SetItemChoices: SetItemChoices::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictResolveInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ISyncMgrConflictStore_Impl: Sized {
    fn EnumConflicts(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<IEnumSyncMgrConflict>;
    fn BindToConflict(&self, pconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RemoveConflicts(&self, rgconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, cconflicts: u32) -> windows_core::Result<()>;
    fn GetCount(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ISyncMgrConflictStore {}
#[cfg(feature = "Win32_System_Com")]
impl ISyncMgrConflictStore_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrConflictStore_Vtbl
    where
        Identity: ISyncMgrConflictStore_Impl,
    {
        unsafe extern "system" fn EnumConflicts<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictStore_Impl::EnumConflicts(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid)) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BindToConflict<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictStore_Impl::BindToConflict(this, core::mem::transmute_copy(&pconflictidinfo), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn RemoveConflicts<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, cconflicts: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrConflictStore_Impl::RemoveConflicts(this, core::mem::transmute_copy(&rgconflictidinfo), core::mem::transmute_copy(&cconflicts)).into()
        }
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, pnconflicts: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrConflictStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrConflictStore_Impl::GetCount(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid)) {
                Ok(ok__) => {
                    pnconflicts.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnumConflicts: EnumConflicts::<Identity, OFFSET>,
            BindToConflict: BindToConflict::<Identity, OFFSET>,
            RemoveConflicts: RemoveConflicts::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictStore as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrControl_Impl: Sized {
    fn StartHandlerSync(&self, pszhandlerid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, punk: Option<&windows_core::IUnknown>, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: Option<&ISyncMgrSyncResult>) -> windows_core::Result<()>;
    fn StartItemSync(&self, pszhandlerid: &windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, punk: Option<&windows_core::IUnknown>, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: Option<&ISyncMgrSyncResult>) -> windows_core::Result<()>;
    fn StartSyncAll(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn StopHandlerSync(&self, pszhandlerid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StopItemSync(&self, pszhandlerid: &windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32) -> windows_core::Result<()>;
    fn StopSyncAll(&self) -> windows_core::Result<()>;
    fn UpdateHandlerCollection(&self, rclsidcollectionid: *const windows_core::GUID, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateHandler(&self, pszhandlerid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateItem(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateEvents(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateConflict(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, pconflict: Option<&ISyncMgrConflict>, nreason: SYNCMGR_UPDATE_REASON) -> windows_core::Result<()>;
    fn UpdateConflicts(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn ActivateHandler(&self, factivate: super::super::Foundation::BOOL, pszhandlerid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn EnableHandler(&self, fenable: super::super::Foundation::BOOL, pszhandlerid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn EnableItem(&self, fenable: super::super::Foundation::BOOL, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrControl {}
impl ISyncMgrControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrControl_Vtbl
    where
        Identity: ISyncMgrControl_Impl,
    {
        unsafe extern "system" fn StartHandlerSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, punk: *mut core::ffi::c_void, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::StartHandlerSync(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&hwndowner), windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&nsynccontrolflags), windows_core::from_raw_borrowed(&presult)).into()
        }
        unsafe extern "system" fn StartItemSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, punk: *mut core::ffi::c_void, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::StartItemSync(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems), core::mem::transmute_copy(&hwndowner), windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&nsynccontrolflags), windows_core::from_raw_borrowed(&presult)).into()
        }
        unsafe extern "system" fn StartSyncAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::StartSyncAll(this, core::mem::transmute_copy(&hwndowner)).into()
        }
        unsafe extern "system" fn StopHandlerSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::StopHandlerSync(this, core::mem::transmute(&pszhandlerid)).into()
        }
        unsafe extern "system" fn StopItemSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::StopItemSync(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems)).into()
        }
        unsafe extern "system" fn StopSyncAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::StopSyncAll(this).into()
        }
        unsafe extern "system" fn UpdateHandlerCollection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidcollectionid: *const windows_core::GUID, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::UpdateHandlerCollection(this, core::mem::transmute_copy(&rclsidcollectionid), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn UpdateHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::UpdateHandler(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn UpdateItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::UpdateItem(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn UpdateEvents<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::UpdateEvents(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn UpdateConflict<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, pconflict: *mut core::ffi::c_void, nreason: SYNCMGR_UPDATE_REASON) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::UpdateConflict(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), windows_core::from_raw_borrowed(&pconflict), core::mem::transmute_copy(&nreason)).into()
        }
        unsafe extern "system" fn UpdateConflicts<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::UpdateConflicts(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn ActivateHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, factivate: super::super::Foundation::BOOL, pszhandlerid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::ActivateHandler(this, core::mem::transmute_copy(&factivate), core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn EnableHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL, pszhandlerid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::EnableHandler(this, core::mem::transmute_copy(&fenable), core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        unsafe extern "system" fn EnableItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrControl_Impl::EnableItem(this, core::mem::transmute_copy(&fenable), core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&ncontrolflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartHandlerSync: StartHandlerSync::<Identity, OFFSET>,
            StartItemSync: StartItemSync::<Identity, OFFSET>,
            StartSyncAll: StartSyncAll::<Identity, OFFSET>,
            StopHandlerSync: StopHandlerSync::<Identity, OFFSET>,
            StopItemSync: StopItemSync::<Identity, OFFSET>,
            StopSyncAll: StopSyncAll::<Identity, OFFSET>,
            UpdateHandlerCollection: UpdateHandlerCollection::<Identity, OFFSET>,
            UpdateHandler: UpdateHandler::<Identity, OFFSET>,
            UpdateItem: UpdateItem::<Identity, OFFSET>,
            UpdateEvents: UpdateEvents::<Identity, OFFSET>,
            UpdateConflict: UpdateConflict::<Identity, OFFSET>,
            UpdateConflicts: UpdateConflicts::<Identity, OFFSET>,
            ActivateHandler: ActivateHandler::<Identity, OFFSET>,
            EnableHandler: EnableHandler::<Identity, OFFSET>,
            EnableItem: EnableItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait ISyncMgrEnumItems_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut SYNCMGRITEM, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ISyncMgrEnumItems>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for ISyncMgrEnumItems {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl ISyncMgrEnumItems_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrEnumItems_Vtbl
    where
        Identity: ISyncMgrEnumItems_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut SYNCMGRITEM, pceltfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEnumItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrEnumItems_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEnumItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrEnumItems_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEnumItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrEnumItems_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEnumItems_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEnumItems_Impl::Clone(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEnumItems as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrEvent_Impl: Sized {
    fn GetEventID(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetHandlerID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetItemID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLevel(&self) -> windows_core::Result<SYNCMGR_EVENT_LEVEL>;
    fn GetFlags(&self) -> windows_core::Result<SYNCMGR_EVENT_FLAGS>;
    fn GetTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetDescription(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLinkText(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLinkReference(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetContext(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for ISyncMgrEvent {}
impl ISyncMgrEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrEvent_Vtbl
    where
        Identity: ISyncMgrEvent_Impl,
    {
        unsafe extern "system" fn GetEventID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguideventid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetEventID(this) {
                Ok(ok__) => {
                    pguideventid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetHandlerID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszhandlerid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetHandlerID(this) {
                Ok(ok__) => {
                    ppszhandlerid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszitemid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetItemID(this) {
                Ok(ok__) => {
                    ppszitemid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnlevel: *mut SYNCMGR_EVENT_LEVEL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetLevel(this) {
                Ok(ok__) => {
                    pnlevel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnflags: *mut SYNCMGR_EVENT_FLAGS) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetFlags(this) {
                Ok(ok__) => {
                    pnflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcreationtime: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetTime(this) {
                Ok(ok__) => {
                    pfcreationtime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetName(this) {
                Ok(ok__) => {
                    ppszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszdescription: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetDescription(this) {
                Ok(ok__) => {
                    ppszdescription.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLinkText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszlinktext: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetLinkText(this) {
                Ok(ok__) => {
                    ppszlinktext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLinkReference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszlinkreference: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetLinkReference(this) {
                Ok(ok__) => {
                    ppszlinkreference.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszcontext: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEvent_Impl::GetContext(this) {
                Ok(ok__) => {
                    ppszcontext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventID: GetEventID::<Identity, OFFSET>,
            GetHandlerID: GetHandlerID::<Identity, OFFSET>,
            GetItemID: GetItemID::<Identity, OFFSET>,
            GetLevel: GetLevel::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            GetTime: GetTime::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetLinkText: GetLinkText::<Identity, OFFSET>,
            GetLinkReference: GetLinkReference::<Identity, OFFSET>,
            GetContext: GetContext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEvent as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrEventLinkUIOperation_Impl: Sized + ISyncMgrUIOperation_Impl {
    fn Init(&self, rguideventid: *const windows_core::GUID, pevent: Option<&ISyncMgrEvent>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrEventLinkUIOperation {}
impl ISyncMgrEventLinkUIOperation_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrEventLinkUIOperation_Vtbl
    where
        Identity: ISyncMgrEventLinkUIOperation_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguideventid: *const windows_core::GUID, pevent: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEventLinkUIOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrEventLinkUIOperation_Impl::Init(this, core::mem::transmute_copy(&rguideventid), windows_core::from_raw_borrowed(&pevent)).into()
        }
        Self { base__: ISyncMgrUIOperation_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEventLinkUIOperation as windows_core::Interface>::IID || iid == &<ISyncMgrUIOperation as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrEventStore_Impl: Sized {
    fn GetEventEnumerator(&self) -> windows_core::Result<IEnumSyncMgrEvents>;
    fn GetEventCount(&self) -> windows_core::Result<u32>;
    fn GetEvent(&self, rguideventid: *const windows_core::GUID) -> windows_core::Result<ISyncMgrEvent>;
    fn RemoveEvent(&self, pguideventids: *const windows_core::GUID, cevents: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrEventStore {}
impl ISyncMgrEventStore_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrEventStore_Vtbl
    where
        Identity: ISyncMgrEventStore_Impl,
    {
        unsafe extern "system" fn GetEventEnumerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEventStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEventStore_Impl::GetEventEnumerator(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEventCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcevents: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEventStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEventStore_Impl::GetEventCount(this) {
                Ok(ok__) => {
                    pcevents.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguideventid: *const windows_core::GUID, ppevent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEventStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrEventStore_Impl::GetEvent(this, core::mem::transmute_copy(&rguideventid)) {
                Ok(ok__) => {
                    ppevent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguideventids: *const windows_core::GUID, cevents: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrEventStore_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrEventStore_Impl::RemoveEvent(this, core::mem::transmute_copy(&pguideventids), core::mem::transmute_copy(&cevents)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventEnumerator: GetEventEnumerator::<Identity, OFFSET>,
            GetEventCount: GetEventCount::<Identity, OFFSET>,
            GetEvent: GetEvent::<Identity, OFFSET>,
            RemoveEvent: RemoveEvent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEventStore as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrHandler_Impl: Sized {
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetHandlerInfo(&self) -> windows_core::Result<ISyncMgrHandlerInfo>;
    fn GetObject(&self, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetCapabilities(&self) -> windows_core::Result<SYNCMGR_HANDLER_CAPABILITIES>;
    fn GetPolicies(&self) -> windows_core::Result<SYNCMGR_HANDLER_POLICIES>;
    fn Activate(&self, factivate: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Enable(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Synchronize(&self, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, psessioncreator: Option<&ISyncMgrSessionCreator>, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrHandler {}
impl ISyncMgrHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrHandler_Vtbl
    where
        Identity: ISyncMgrHandler_Impl,
    {
        unsafe extern "system" fn GetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandler_Impl::GetName(this) {
                Ok(ok__) => {
                    ppszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetHandlerInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pphandlerinfo: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandler_Impl::GetHandlerInfo(this) {
                Ok(ok__) => {
                    pphandlerinfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandler_Impl::GetObject(this, core::mem::transmute_copy(&rguidobjectid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmcapabilities: *mut SYNCMGR_HANDLER_CAPABILITIES) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandler_Impl::GetCapabilities(this) {
                Ok(ok__) => {
                    pmcapabilities.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPolicies<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmpolicies: *mut SYNCMGR_HANDLER_POLICIES) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandler_Impl::GetPolicies(this) {
                Ok(ok__) => {
                    pmpolicies.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Activate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, factivate: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandler_Impl::Activate(this, core::mem::transmute_copy(&factivate)).into()
        }
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandler_Impl::Enable(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn Synchronize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, psessioncreator: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandler_Impl::Synchronize(this, core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems), core::mem::transmute_copy(&hwndowner), windows_core::from_raw_borrowed(&psessioncreator), windows_core::from_raw_borrowed(&punk)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetHandlerInfo: GetHandlerInfo::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            GetPolicies: GetPolicies::<Identity, OFFSET>,
            Activate: Activate::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ISyncMgrHandlerCollection_Impl: Sized {
    fn GetHandlerEnumerator(&self) -> windows_core::Result<super::super::System::Com::IEnumString>;
    fn BindToHandler(&self, pszhandlerid: &windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ISyncMgrHandlerCollection {}
#[cfg(feature = "Win32_System_Com")]
impl ISyncMgrHandlerCollection_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrHandlerCollection_Vtbl
    where
        Identity: ISyncMgrHandlerCollection_Impl,
    {
        unsafe extern "system" fn GetHandlerEnumerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerCollection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandlerCollection_Impl::GetHandlerEnumerator(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BindToHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerCollection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandlerCollection_Impl::BindToHandler(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetHandlerEnumerator: GetHandlerEnumerator::<Identity, OFFSET>,
            BindToHandler: BindToHandler::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrHandlerCollection as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrHandlerInfo_Impl: Sized {
    fn GetType(&self) -> windows_core::Result<SYNCMGR_HANDLER_TYPE>;
    fn GetTypeLabel(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetComment(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLastSyncTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn IsActive(&self) -> windows_core::Result<()>;
    fn IsEnabled(&self) -> windows_core::Result<()>;
    fn IsConnected(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrHandlerInfo {}
impl ISyncMgrHandlerInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrHandlerInfo_Vtbl
    where
        Identity: ISyncMgrHandlerInfo_Impl,
    {
        unsafe extern "system" fn GetType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pntype: *mut SYNCMGR_HANDLER_TYPE) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandlerInfo_Impl::GetType(this) {
                Ok(ok__) => {
                    pntype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTypeLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztypelabel: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandlerInfo_Impl::GetTypeLabel(this) {
                Ok(ok__) => {
                    ppsztypelabel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComment<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszcomment: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandlerInfo_Impl::GetComment(this) {
                Ok(ok__) => {
                    ppszcomment.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastSyncTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftlastsync: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrHandlerInfo_Impl::GetLastSyncTime(this) {
                Ok(ok__) => {
                    pftlastsync.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandlerInfo_Impl::IsActive(this).into()
        }
        unsafe extern "system" fn IsEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandlerInfo_Impl::IsEnabled(this).into()
        }
        unsafe extern "system" fn IsConnected<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrHandlerInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrHandlerInfo_Impl::IsConnected(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetType: GetType::<Identity, OFFSET>,
            GetTypeLabel: GetTypeLabel::<Identity, OFFSET>,
            GetComment: GetComment::<Identity, OFFSET>,
            GetLastSyncTime: GetLastSyncTime::<Identity, OFFSET>,
            IsActive: IsActive::<Identity, OFFSET>,
            IsEnabled: IsEnabled::<Identity, OFFSET>,
            IsConnected: IsConnected::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrHandlerInfo as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrRegister_Impl: Sized {
    fn RegisterSyncMgrHandler(&self, clsidhandler: *const windows_core::GUID, pwszdescription: &windows_core::PCWSTR, dwsyncmgrregisterflags: u32) -> windows_core::Result<()>;
    fn UnregisterSyncMgrHandler(&self, clsidhandler: *const windows_core::GUID, dwreserved: u32) -> windows_core::Result<()>;
    fn GetHandlerRegistrationInfo(&self, clsidhandler: *const windows_core::GUID, pdwsyncmgrregisterflags: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrRegister {}
impl ISyncMgrRegister_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrRegister_Vtbl
    where
        Identity: ISyncMgrRegister_Impl,
    {
        unsafe extern "system" fn RegisterSyncMgrHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, pwszdescription: windows_core::PCWSTR, dwsyncmgrregisterflags: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrRegister_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrRegister_Impl::RegisterSyncMgrHandler(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute(&pwszdescription), core::mem::transmute_copy(&dwsyncmgrregisterflags)).into()
        }
        unsafe extern "system" fn UnregisterSyncMgrHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrRegister_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrRegister_Impl::UnregisterSyncMgrHandler(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn GetHandlerRegistrationInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, pdwsyncmgrregisterflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrRegister_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrRegister_Impl::GetHandlerRegistrationInfo(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute_copy(&pdwsyncmgrregisterflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterSyncMgrHandler: RegisterSyncMgrHandler::<Identity, OFFSET>,
            UnregisterSyncMgrHandler: UnregisterSyncMgrHandler::<Identity, OFFSET>,
            GetHandlerRegistrationInfo: GetHandlerRegistrationInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrRegister as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrResolutionHandler_Impl: Sized {
    fn QueryAbilities(&self) -> windows_core::Result<u32>;
    fn KeepOther(&self, psiother: Option<&IShellItem>) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
    fn KeepRecent(&self) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
    fn RemoveFromSyncSet(&self) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
    fn KeepItems(&self, parray: Option<&ISyncMgrConflictResolutionItems>) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
}
impl windows_core::RuntimeName for ISyncMgrResolutionHandler {}
impl ISyncMgrResolutionHandler_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrResolutionHandler_Vtbl
    where
        Identity: ISyncMgrResolutionHandler_Impl,
    {
        unsafe extern "system" fn QueryAbilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwabilities: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrResolutionHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrResolutionHandler_Impl::QueryAbilities(this) {
                Ok(ok__) => {
                    pdwabilities.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn KeepOther<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiother: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT
        where
            Identity: ISyncMgrResolutionHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrResolutionHandler_Impl::KeepOther(this, windows_core::from_raw_borrowed(&psiother)) {
                Ok(ok__) => {
                    pfeedback.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn KeepRecent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT
        where
            Identity: ISyncMgrResolutionHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrResolutionHandler_Impl::KeepRecent(this) {
                Ok(ok__) => {
                    pfeedback.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveFromSyncSet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT
        where
            Identity: ISyncMgrResolutionHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrResolutionHandler_Impl::RemoveFromSyncSet(this) {
                Ok(ok__) => {
                    pfeedback.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn KeepItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, parray: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT
        where
            Identity: ISyncMgrResolutionHandler_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrResolutionHandler_Impl::KeepItems(this, windows_core::from_raw_borrowed(&parray)) {
                Ok(ok__) => {
                    pfeedback.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryAbilities: QueryAbilities::<Identity, OFFSET>,
            KeepOther: KeepOther::<Identity, OFFSET>,
            KeepRecent: KeepRecent::<Identity, OFFSET>,
            RemoveFromSyncSet: RemoveFromSyncSet::<Identity, OFFSET>,
            KeepItems: KeepItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrResolutionHandler as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrScheduleWizardUIOperation_Impl: Sized + ISyncMgrUIOperation_Impl {
    fn InitWizard(&self, pszhandlerid: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrScheduleWizardUIOperation {}
impl ISyncMgrScheduleWizardUIOperation_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrScheduleWizardUIOperation_Vtbl
    where
        Identity: ISyncMgrScheduleWizardUIOperation_Impl,
    {
        unsafe extern "system" fn InitWizard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrScheduleWizardUIOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrScheduleWizardUIOperation_Impl::InitWizard(this, core::mem::transmute(&pszhandlerid)).into()
        }
        Self { base__: ISyncMgrUIOperation_Vtbl::new::<Identity, OFFSET>(), InitWizard: InitWizard::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrScheduleWizardUIOperation as windows_core::Interface>::IID || iid == &<ISyncMgrUIOperation as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSessionCreator_Impl: Sized {
    fn CreateSession(&self, pszhandlerid: &windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32) -> windows_core::Result<ISyncMgrSyncCallback>;
}
impl windows_core::RuntimeName for ISyncMgrSessionCreator {}
impl ISyncMgrSessionCreator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSessionCreator_Vtbl
    where
        Identity: ISyncMgrSessionCreator_Impl,
    {
        unsafe extern "system" fn CreateSession<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32, ppcallback: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSessionCreator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSessionCreator_Impl::CreateSession(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems)) {
                Ok(ok__) => {
                    ppcallback.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateSession: CreateSession::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSessionCreator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ISyncMgrSyncCallback_Impl: Sized {
    fn ReportProgress(&self, pszitemid: &windows_core::PCWSTR, pszprogresstext: &windows_core::PCWSTR, nstatus: SYNCMGR_PROGRESS_STATUS, ucurrentstep: u32, umaxstep: u32, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::Result<()>;
    fn SetHandlerProgressText(&self, pszprogresstext: &windows_core::PCWSTR, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::Result<()>;
    fn ReportEvent(&self, pszitemid: &windows_core::PCWSTR, nlevel: SYNCMGR_EVENT_LEVEL, nflags: SYNCMGR_EVENT_FLAGS, pszname: &windows_core::PCWSTR, pszdescription: &windows_core::PCWSTR, pszlinktext: &windows_core::PCWSTR, pszlinkreference: &windows_core::PCWSTR, pszcontext: &windows_core::PCWSTR) -> windows_core::Result<windows_core::GUID>;
    fn CanContinue(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn QueryForAdditionalItems(&self, ppenumitemids: *mut Option<super::super::System::Com::IEnumString>, ppenumpunks: *mut Option<super::super::System::Com::IEnumUnknown>) -> windows_core::Result<()>;
    fn AddItemToSession(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddIUnknownToSession(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ProposeItem(&self, pnewitem: Option<&ISyncMgrSyncItem>) -> windows_core::Result<()>;
    fn CommitItem(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ReportManualSync(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ISyncMgrSyncCallback {}
#[cfg(feature = "Win32_System_Com")]
impl ISyncMgrSyncCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSyncCallback_Vtbl
    where
        Identity: ISyncMgrSyncCallback_Impl,
    {
        unsafe extern "system" fn ReportProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR, pszprogresstext: windows_core::PCWSTR, nstatus: SYNCMGR_PROGRESS_STATUS, ucurrentstep: u32, umaxstep: u32, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::ReportProgress(this, core::mem::transmute(&pszitemid), core::mem::transmute(&pszprogresstext), core::mem::transmute_copy(&nstatus), core::mem::transmute_copy(&ucurrentstep), core::mem::transmute_copy(&umaxstep), core::mem::transmute_copy(&pncancelrequest)).into()
        }
        unsafe extern "system" fn SetHandlerProgressText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszprogresstext: windows_core::PCWSTR, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::SetHandlerProgressText(this, core::mem::transmute(&pszprogresstext), core::mem::transmute_copy(&pncancelrequest)).into()
        }
        unsafe extern "system" fn ReportEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR, nlevel: SYNCMGR_EVENT_LEVEL, nflags: SYNCMGR_EVENT_FLAGS, pszname: windows_core::PCWSTR, pszdescription: windows_core::PCWSTR, pszlinktext: windows_core::PCWSTR, pszlinkreference: windows_core::PCWSTR, pszcontext: windows_core::PCWSTR, pguideventid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncCallback_Impl::ReportEvent(this, core::mem::transmute(&pszitemid), core::mem::transmute_copy(&nlevel), core::mem::transmute_copy(&nflags), core::mem::transmute(&pszname), core::mem::transmute(&pszdescription), core::mem::transmute(&pszlinktext), core::mem::transmute(&pszlinkreference), core::mem::transmute(&pszcontext)) {
                Ok(ok__) => {
                    pguideventid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanContinue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::CanContinue(this, core::mem::transmute(&pszitemid)).into()
        }
        unsafe extern "system" fn QueryForAdditionalItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumitemids: *mut *mut core::ffi::c_void, ppenumpunks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::QueryForAdditionalItems(this, core::mem::transmute_copy(&ppenumitemids), core::mem::transmute_copy(&ppenumpunks)).into()
        }
        unsafe extern "system" fn AddItemToSession<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::AddItemToSession(this, core::mem::transmute(&pszitemid)).into()
        }
        unsafe extern "system" fn AddIUnknownToSession<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::AddIUnknownToSession(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn ProposeItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnewitem: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::ProposeItem(this, windows_core::from_raw_borrowed(&pnewitem)).into()
        }
        unsafe extern "system" fn CommitItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::CommitItem(this, core::mem::transmute(&pszitemid)).into()
        }
        unsafe extern "system" fn ReportManualSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncCallback_Impl::ReportManualSync(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReportProgress: ReportProgress::<Identity, OFFSET>,
            SetHandlerProgressText: SetHandlerProgressText::<Identity, OFFSET>,
            ReportEvent: ReportEvent::<Identity, OFFSET>,
            CanContinue: CanContinue::<Identity, OFFSET>,
            QueryForAdditionalItems: QueryForAdditionalItems::<Identity, OFFSET>,
            AddItemToSession: AddItemToSession::<Identity, OFFSET>,
            AddIUnknownToSession: AddIUnknownToSession::<Identity, OFFSET>,
            ProposeItem: ProposeItem::<Identity, OFFSET>,
            CommitItem: CommitItem::<Identity, OFFSET>,
            ReportManualSync: ReportManualSync::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncCallback as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSyncItem_Impl: Sized {
    fn GetItemID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetItemInfo(&self) -> windows_core::Result<ISyncMgrSyncItemInfo>;
    fn GetObject(&self, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetCapabilities(&self) -> windows_core::Result<SYNCMGR_ITEM_CAPABILITIES>;
    fn GetPolicies(&self) -> windows_core::Result<SYNCMGR_ITEM_POLICIES>;
    fn Enable(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Delete(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrSyncItem {}
impl ISyncMgrSyncItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSyncItem_Vtbl
    where
        Identity: ISyncMgrSyncItem_Impl,
    {
        unsafe extern "system" fn GetItemID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszitemid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItem_Impl::GetItemID(this) {
                Ok(ok__) => {
                    ppszitemid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItem_Impl::GetName(this) {
                Ok(ok__) => {
                    ppszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppiteminfo: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItem_Impl::GetItemInfo(this) {
                Ok(ok__) => {
                    ppiteminfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncItem_Impl::GetObject(this, core::mem::transmute_copy(&rguidobjectid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn GetCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmcapabilities: *mut SYNCMGR_ITEM_CAPABILITIES) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItem_Impl::GetCapabilities(this) {
                Ok(ok__) => {
                    pmcapabilities.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPolicies<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmpolicies: *mut SYNCMGR_ITEM_POLICIES) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItem_Impl::GetPolicies(this) {
                Ok(ok__) => {
                    pmpolicies.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncItem_Impl::Enable(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn Delete<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncItem_Impl::Delete(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetItemID: GetItemID::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetItemInfo: GetItemInfo::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            GetPolicies: GetPolicies::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
            Delete: Delete::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncItem as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSyncItemContainer_Impl: Sized {
    fn GetSyncItem(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<ISyncMgrSyncItem>;
    fn GetSyncItemEnumerator(&self) -> windows_core::Result<IEnumSyncMgrSyncItems>;
    fn GetSyncItemCount(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for ISyncMgrSyncItemContainer {}
impl ISyncMgrSyncItemContainer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSyncItemContainer_Vtbl
    where
        Identity: ISyncMgrSyncItemContainer_Impl,
    {
        unsafe extern "system" fn GetSyncItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR, ppitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItemContainer_Impl::GetSyncItem(this, core::mem::transmute(&pszitemid)) {
                Ok(ok__) => {
                    ppitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSyncItemEnumerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItemContainer_Impl::GetSyncItemEnumerator(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSyncItemCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcitems: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItemContainer_Impl::GetSyncItemCount(this) {
                Ok(ok__) => {
                    pcitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSyncItem: GetSyncItem::<Identity, OFFSET>,
            GetSyncItemEnumerator: GetSyncItemEnumerator::<Identity, OFFSET>,
            GetSyncItemCount: GetSyncItemCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncItemContainer as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSyncItemInfo_Impl: Sized {
    fn GetTypeLabel(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetComment(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLastSyncTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn IsEnabled(&self) -> windows_core::Result<()>;
    fn IsConnected(&self) -> windows_core::HRESULT;
}
impl windows_core::RuntimeName for ISyncMgrSyncItemInfo {}
impl ISyncMgrSyncItemInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSyncItemInfo_Vtbl
    where
        Identity: ISyncMgrSyncItemInfo_Impl,
    {
        unsafe extern "system" fn GetTypeLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztypelabel: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItemInfo_Impl::GetTypeLabel(this) {
                Ok(ok__) => {
                    ppsztypelabel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComment<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszcomment: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItemInfo_Impl::GetComment(this) {
                Ok(ok__) => {
                    ppszcomment.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastSyncTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftlastsync: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSyncItemInfo_Impl::GetLastSyncTime(this) {
                Ok(ok__) => {
                    pftlastsync.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncItemInfo_Impl::IsEnabled(this).into()
        }
        unsafe extern "system" fn IsConnected<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncItemInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncItemInfo_Impl::IsConnected(this)
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTypeLabel: GetTypeLabel::<Identity, OFFSET>,
            GetComment: GetComment::<Identity, OFFSET>,
            GetLastSyncTime: GetLastSyncTime::<Identity, OFFSET>,
            IsEnabled: IsEnabled::<Identity, OFFSET>,
            IsConnected: IsConnected::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncItemInfo as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSyncResult_Impl: Sized {
    fn Result(&self, nstatus: SYNCMGR_PROGRESS_STATUS, cerror: u32, cconflicts: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrSyncResult {}
impl ISyncMgrSyncResult_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSyncResult_Vtbl
    where
        Identity: ISyncMgrSyncResult_Impl,
    {
        unsafe extern "system" fn Result<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstatus: SYNCMGR_PROGRESS_STATUS, cerror: u32, cconflicts: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSyncResult_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSyncResult_Impl::Result(this, core::mem::transmute_copy(&nstatus), core::mem::transmute_copy(&cerror), core::mem::transmute_copy(&cconflicts)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Result: Result::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncResult as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait ISyncMgrSynchronize_Impl: Sized {
    fn Initialize(&self, dwreserved: u32, dwsyncmgrflags: u32, cbcookie: u32, lpcookie: *const u8) -> windows_core::Result<()>;
    fn GetHandlerInfo(&self) -> windows_core::Result<*mut SYNCMGRHANDLERINFO>;
    fn EnumSyncMgrItems(&self) -> windows_core::Result<ISyncMgrEnumItems>;
    fn GetItemObject(&self, itemid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn ShowProperties(&self, hwndparent: super::super::Foundation::HWND, itemid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn SetProgressCallback(&self, lpcallback: Option<&ISyncMgrSynchronizeCallback>) -> windows_core::Result<()>;
    fn PrepareForSync(&self, cbnumitems: u32, pitemids: *const windows_core::GUID, hwndparent: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::Result<()>;
    fn Synchronize(&self, hwndparent: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetItemStatus(&self, pitemid: *const windows_core::GUID, dwsyncmgrstatus: u32) -> windows_core::Result<()>;
    fn ShowError(&self, hwndparent: super::super::Foundation::HWND, errorid: *const windows_core::GUID) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for ISyncMgrSynchronize {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl ISyncMgrSynchronize_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSynchronize_Vtbl
    where
        Identity: ISyncMgrSynchronize_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32, dwsyncmgrflags: u32, cbcookie: u32, lpcookie: *const u8) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::Initialize(this, core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&dwsyncmgrflags), core::mem::transmute_copy(&cbcookie), core::mem::transmute_copy(&lpcookie)).into()
        }
        unsafe extern "system" fn GetHandlerInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsyncmgrhandlerinfo: *mut *mut SYNCMGRHANDLERINFO) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSynchronize_Impl::GetHandlerInfo(this) {
                Ok(ok__) => {
                    ppsyncmgrhandlerinfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumSyncMgrItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsyncmgrenumitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISyncMgrSynchronize_Impl::EnumSyncMgrItems(this) {
                Ok(ok__) => {
                    ppsyncmgrenumitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itemid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::GetItemObject(this, core::mem::transmute_copy(&itemid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn ShowProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, itemid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::ShowProperties(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&itemid)).into()
        }
        unsafe extern "system" fn SetProgressCallback<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpcallback: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::SetProgressCallback(this, windows_core::from_raw_borrowed(&lpcallback)).into()
        }
        unsafe extern "system" fn PrepareForSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbnumitems: u32, pitemids: *const windows_core::GUID, hwndparent: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::PrepareForSync(this, core::mem::transmute_copy(&cbnumitems), core::mem::transmute_copy(&pitemids), core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn Synchronize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::Synchronize(this, core::mem::transmute_copy(&hwndparent)).into()
        }
        unsafe extern "system" fn SetItemStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitemid: *const windows_core::GUID, dwsyncmgrstatus: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::SetItemStatus(this, core::mem::transmute_copy(&pitemid), core::mem::transmute_copy(&dwsyncmgrstatus)).into()
        }
        unsafe extern "system" fn ShowError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, errorid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronize_Impl::ShowError(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&errorid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetHandlerInfo: GetHandlerInfo::<Identity, OFFSET>,
            EnumSyncMgrItems: EnumSyncMgrItems::<Identity, OFFSET>,
            GetItemObject: GetItemObject::<Identity, OFFSET>,
            ShowProperties: ShowProperties::<Identity, OFFSET>,
            SetProgressCallback: SetProgressCallback::<Identity, OFFSET>,
            PrepareForSync: PrepareForSync::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
            SetItemStatus: SetItemStatus::<Identity, OFFSET>,
            ShowError: ShowError::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSynchronize as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSynchronizeCallback_Impl: Sized {
    fn ShowPropertiesCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn PrepareForSyncCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn SynchronizeCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn ShowErrorCompleted(&self, hr: windows_core::HRESULT, citems: u32, pitemids: *const windows_core::GUID) -> windows_core::Result<()>;
    fn EnableModeless(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Progress(&self, itemid: *const windows_core::GUID, psyncprogressitem: *const SYNCMGRPROGRESSITEM) -> windows_core::Result<()>;
    fn LogError(&self, dwerrorlevel: u32, pszerrortext: &windows_core::PCWSTR, psynclogerror: *const SYNCMGRLOGERRORINFO) -> windows_core::Result<()>;
    fn DeleteLogError(&self, errorid: *const windows_core::GUID, dwreserved: u32) -> windows_core::Result<()>;
    fn EstablishConnection(&self, pwszconnection: &windows_core::PCWSTR, dwreserved: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrSynchronizeCallback {}
impl ISyncMgrSynchronizeCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSynchronizeCallback_Vtbl
    where
        Identity: ISyncMgrSynchronizeCallback_Impl,
    {
        unsafe extern "system" fn ShowPropertiesCompleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::ShowPropertiesCompleted(this, core::mem::transmute_copy(&hr)).into()
        }
        unsafe extern "system" fn PrepareForSyncCompleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::PrepareForSyncCompleted(this, core::mem::transmute_copy(&hr)).into()
        }
        unsafe extern "system" fn SynchronizeCompleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::SynchronizeCompleted(this, core::mem::transmute_copy(&hr)).into()
        }
        unsafe extern "system" fn ShowErrorCompleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT, citems: u32, pitemids: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::ShowErrorCompleted(this, core::mem::transmute_copy(&hr), core::mem::transmute_copy(&citems), core::mem::transmute_copy(&pitemids)).into()
        }
        unsafe extern "system" fn EnableModeless<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::EnableModeless(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn Progress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, itemid: *const windows_core::GUID, psyncprogressitem: *const SYNCMGRPROGRESSITEM) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::Progress(this, core::mem::transmute_copy(&itemid), core::mem::transmute_copy(&psyncprogressitem)).into()
        }
        unsafe extern "system" fn LogError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwerrorlevel: u32, pszerrortext: windows_core::PCWSTR, psynclogerror: *const SYNCMGRLOGERRORINFO) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::LogError(this, core::mem::transmute_copy(&dwerrorlevel), core::mem::transmute(&pszerrortext), core::mem::transmute_copy(&psynclogerror)).into()
        }
        unsafe extern "system" fn DeleteLogError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, errorid: *const windows_core::GUID, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::DeleteLogError(this, core::mem::transmute_copy(&errorid), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn EstablishConnection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszconnection: windows_core::PCWSTR, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeCallback_Impl::EstablishConnection(this, core::mem::transmute(&pwszconnection), core::mem::transmute_copy(&dwreserved)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShowPropertiesCompleted: ShowPropertiesCompleted::<Identity, OFFSET>,
            PrepareForSyncCompleted: PrepareForSyncCompleted::<Identity, OFFSET>,
            SynchronizeCompleted: SynchronizeCompleted::<Identity, OFFSET>,
            ShowErrorCompleted: ShowErrorCompleted::<Identity, OFFSET>,
            EnableModeless: EnableModeless::<Identity, OFFSET>,
            Progress: Progress::<Identity, OFFSET>,
            LogError: LogError::<Identity, OFFSET>,
            DeleteLogError: DeleteLogError::<Identity, OFFSET>,
            EstablishConnection: EstablishConnection::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSynchronizeCallback as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrSynchronizeInvoke_Impl: Sized {
    fn UpdateItems(&self, dwinvokeflags: u32, clsid: *const windows_core::GUID, cbcookie: u32, pcookie: *const u8) -> windows_core::Result<()>;
    fn UpdateAll(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISyncMgrSynchronizeInvoke {}
impl ISyncMgrSynchronizeInvoke_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrSynchronizeInvoke_Vtbl
    where
        Identity: ISyncMgrSynchronizeInvoke_Impl,
    {
        unsafe extern "system" fn UpdateItems<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwinvokeflags: u32, clsid: *const windows_core::GUID, cbcookie: u32, pcookie: *const u8) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeInvoke_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeInvoke_Impl::UpdateItems(this, core::mem::transmute_copy(&dwinvokeflags), core::mem::transmute_copy(&clsid), core::mem::transmute_copy(&cbcookie), core::mem::transmute_copy(&pcookie)).into()
        }
        unsafe extern "system" fn UpdateAll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISyncMgrSynchronizeInvoke_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrSynchronizeInvoke_Impl::UpdateAll(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            UpdateItems: UpdateItems::<Identity, OFFSET>,
            UpdateAll: UpdateAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSynchronizeInvoke as windows_core::Interface>::IID
    }
}
pub trait ISyncMgrUIOperation_Impl: Sized {
    fn Run(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT;
}
impl windows_core::RuntimeName for ISyncMgrUIOperation {}
impl ISyncMgrUIOperation_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISyncMgrUIOperation_Vtbl
    where
        Identity: ISyncMgrUIOperation_Impl,
    {
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ISyncMgrUIOperation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISyncMgrUIOperation_Impl::Run(this, core::mem::transmute_copy(&hwndowner))
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Run: Run::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrUIOperation as windows_core::Interface>::IID
    }
}
pub trait ITaskbarList_Impl: Sized {
    fn HrInit(&self) -> windows_core::Result<()>;
    fn AddTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn DeleteTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn ActivateTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetActiveAlt(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ITaskbarList {}
impl ITaskbarList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITaskbarList_Vtbl
    where
        Identity: ITaskbarList_Impl,
    {
        unsafe extern "system" fn HrInit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITaskbarList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList_Impl::HrInit(this).into()
        }
        unsafe extern "system" fn AddTab<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList_Impl::AddTab(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn DeleteTab<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList_Impl::DeleteTab(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn ActivateTab<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList_Impl::ActivateTab(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn SetActiveAlt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList_Impl::SetActiveAlt(this, core::mem::transmute_copy(&hwnd)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            HrInit: HrInit::<Identity, OFFSET>,
            AddTab: AddTab::<Identity, OFFSET>,
            DeleteTab: DeleteTab::<Identity, OFFSET>,
            ActivateTab: ActivateTab::<Identity, OFFSET>,
            SetActiveAlt: SetActiveAlt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList as windows_core::Interface>::IID
    }
}
pub trait ITaskbarList2_Impl: Sized + ITaskbarList_Impl {
    fn MarkFullscreenWindow(&self, hwnd: super::super::Foundation::HWND, ffullscreen: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ITaskbarList2 {}
impl ITaskbarList2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITaskbarList2_Vtbl
    where
        Identity: ITaskbarList2_Impl,
    {
        unsafe extern "system" fn MarkFullscreenWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ffullscreen: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ITaskbarList2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList2_Impl::MarkFullscreenWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ffullscreen)).into()
        }
        Self { base__: ITaskbarList_Vtbl::new::<Identity, OFFSET>(), MarkFullscreenWindow: MarkFullscreenWindow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList2 as windows_core::Interface>::IID || iid == &<ITaskbarList as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITaskbarList3_Impl: Sized + ITaskbarList2_Impl {
    fn SetProgressValue(&self, hwnd: super::super::Foundation::HWND, ullcompleted: u64, ulltotal: u64) -> windows_core::Result<()>;
    fn SetProgressState(&self, hwnd: super::super::Foundation::HWND, tbpflags: TBPFLAG) -> windows_core::Result<()>;
    fn RegisterTab(&self, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn UnregisterTab(&self, hwndtab: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetTabOrder(&self, hwndtab: super::super::Foundation::HWND, hwndinsertbefore: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetTabActive(&self, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::Result<()>;
    fn ThumbBarAddButtons(&self, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::Result<()>;
    fn ThumbBarUpdateButtons(&self, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::Result<()>;
    fn ThumbBarSetImageList(&self, hwnd: super::super::Foundation::HWND, himl: super::Controls::HIMAGELIST) -> windows_core::Result<()>;
    fn SetOverlayIcon(&self, hwnd: super::super::Foundation::HWND, hicon: super::WindowsAndMessaging::HICON, pszdescription: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetThumbnailTooltip(&self, hwnd: super::super::Foundation::HWND, psztip: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetThumbnailClip(&self, hwnd: super::super::Foundation::HWND, prcclip: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITaskbarList3 {}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITaskbarList3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITaskbarList3_Vtbl
    where
        Identity: ITaskbarList3_Impl,
    {
        unsafe extern "system" fn SetProgressValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ullcompleted: u64, ulltotal: u64) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetProgressValue(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ullcompleted), core::mem::transmute_copy(&ulltotal)).into()
        }
        unsafe extern "system" fn SetProgressState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, tbpflags: TBPFLAG) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetProgressState(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&tbpflags)).into()
        }
        unsafe extern "system" fn RegisterTab<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::RegisterTab(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&hwndmdi)).into()
        }
        unsafe extern "system" fn UnregisterTab<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::UnregisterTab(this, core::mem::transmute_copy(&hwndtab)).into()
        }
        unsafe extern "system" fn SetTabOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, hwndinsertbefore: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetTabOrder(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&hwndinsertbefore)).into()
        }
        unsafe extern "system" fn SetTabActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetTabActive(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&hwndmdi), core::mem::transmute_copy(&dwreserved)).into()
        }
        unsafe extern "system" fn ThumbBarAddButtons<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::ThumbBarAddButtons(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&cbuttons), core::mem::transmute_copy(&pbutton)).into()
        }
        unsafe extern "system" fn ThumbBarUpdateButtons<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::ThumbBarUpdateButtons(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&cbuttons), core::mem::transmute_copy(&pbutton)).into()
        }
        unsafe extern "system" fn ThumbBarSetImageList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, himl: super::Controls::HIMAGELIST) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::ThumbBarSetImageList(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&himl)).into()
        }
        unsafe extern "system" fn SetOverlayIcon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, hicon: super::WindowsAndMessaging::HICON, pszdescription: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetOverlayIcon(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&hicon), core::mem::transmute(&pszdescription)).into()
        }
        unsafe extern "system" fn SetThumbnailTooltip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, psztip: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetThumbnailTooltip(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&psztip)).into()
        }
        unsafe extern "system" fn SetThumbnailClip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prcclip: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: ITaskbarList3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList3_Impl::SetThumbnailClip(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prcclip)).into()
        }
        Self {
            base__: ITaskbarList2_Vtbl::new::<Identity, OFFSET>(),
            SetProgressValue: SetProgressValue::<Identity, OFFSET>,
            SetProgressState: SetProgressState::<Identity, OFFSET>,
            RegisterTab: RegisterTab::<Identity, OFFSET>,
            UnregisterTab: UnregisterTab::<Identity, OFFSET>,
            SetTabOrder: SetTabOrder::<Identity, OFFSET>,
            SetTabActive: SetTabActive::<Identity, OFFSET>,
            ThumbBarAddButtons: ThumbBarAddButtons::<Identity, OFFSET>,
            ThumbBarUpdateButtons: ThumbBarUpdateButtons::<Identity, OFFSET>,
            ThumbBarSetImageList: ThumbBarSetImageList::<Identity, OFFSET>,
            SetOverlayIcon: SetOverlayIcon::<Identity, OFFSET>,
            SetThumbnailTooltip: SetThumbnailTooltip::<Identity, OFFSET>,
            SetThumbnailClip: SetThumbnailClip::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList3 as windows_core::Interface>::IID || iid == &<ITaskbarList as windows_core::Interface>::IID || iid == &<ITaskbarList2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITaskbarList4_Impl: Sized + ITaskbarList3_Impl {
    fn SetTabProperties(&self, hwndtab: super::super::Foundation::HWND, stpflags: STPFLAG) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITaskbarList4 {}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITaskbarList4_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITaskbarList4_Vtbl
    where
        Identity: ITaskbarList4_Impl,
    {
        unsafe extern "system" fn SetTabProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, stpflags: STPFLAG) -> windows_core::HRESULT
        where
            Identity: ITaskbarList4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITaskbarList4_Impl::SetTabProperties(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&stpflags)).into()
        }
        Self { base__: ITaskbarList3_Vtbl::new::<Identity, OFFSET>(), SetTabProperties: SetTabProperties::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList4 as windows_core::Interface>::IID || iid == &<ITaskbarList as windows_core::Interface>::IID || iid == &<ITaskbarList2 as windows_core::Interface>::IID || iid == &<ITaskbarList3 as windows_core::Interface>::IID
    }
}
pub trait IThumbnailCache_Impl: Sized {
    fn GetThumbnail(&self, pshellitem: Option<&IShellItem>, cxyrequestedthumbsize: u32, flags: WTS_FLAGS, ppvthumb: *mut Option<ISharedBitmap>, poutflags: *mut WTS_CACHEFLAGS, pthumbnailid: *mut WTS_THUMBNAILID) -> windows_core::Result<()>;
    fn GetThumbnailByID(&self, thumbnailid: &WTS_THUMBNAILID, cxyrequestedthumbsize: u32, ppvthumb: *mut Option<ISharedBitmap>, poutflags: *mut WTS_CACHEFLAGS) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IThumbnailCache {}
impl IThumbnailCache_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailCache_Vtbl
    where
        Identity: IThumbnailCache_Impl,
    {
        unsafe extern "system" fn GetThumbnail<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshellitem: *mut core::ffi::c_void, cxyrequestedthumbsize: u32, flags: WTS_FLAGS, ppvthumb: *mut *mut core::ffi::c_void, poutflags: *mut WTS_CACHEFLAGS, pthumbnailid: *mut WTS_THUMBNAILID) -> windows_core::HRESULT
        where
            Identity: IThumbnailCache_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailCache_Impl::GetThumbnail(this, windows_core::from_raw_borrowed(&pshellitem), core::mem::transmute_copy(&cxyrequestedthumbsize), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ppvthumb), core::mem::transmute_copy(&poutflags), core::mem::transmute_copy(&pthumbnailid)).into()
        }
        unsafe extern "system" fn GetThumbnailByID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, thumbnailid: WTS_THUMBNAILID, cxyrequestedthumbsize: u32, ppvthumb: *mut *mut core::ffi::c_void, poutflags: *mut WTS_CACHEFLAGS) -> windows_core::HRESULT
        where
            Identity: IThumbnailCache_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailCache_Impl::GetThumbnailByID(this, core::mem::transmute(&thumbnailid), core::mem::transmute_copy(&cxyrequestedthumbsize), core::mem::transmute_copy(&ppvthumb), core::mem::transmute_copy(&poutflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThumbnail: GetThumbnail::<Identity, OFFSET>,
            GetThumbnailByID: GetThumbnailByID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailCache as windows_core::Interface>::IID
    }
}
pub trait IThumbnailCachePrimer_Impl: Sized {
    fn PageInThumbnail(&self, psi: Option<&IShellItem>, wtsflags: WTS_FLAGS, cxyrequestedthumbsize: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IThumbnailCachePrimer {}
impl IThumbnailCachePrimer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailCachePrimer_Vtbl
    where
        Identity: IThumbnailCachePrimer_Impl,
    {
        unsafe extern "system" fn PageInThumbnail<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, wtsflags: WTS_FLAGS, cxyrequestedthumbsize: u32) -> windows_core::HRESULT
        where
            Identity: IThumbnailCachePrimer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailCachePrimer_Impl::PageInThumbnail(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&wtsflags), core::mem::transmute_copy(&cxyrequestedthumbsize)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PageInThumbnail: PageInThumbnail::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailCachePrimer as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IThumbnailCapture_Impl: Sized {
    fn CaptureThumbnail(&self, pmaxsize: *const super::super::Foundation::SIZE, phtmldoc2: Option<&windows_core::IUnknown>) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IThumbnailCapture {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IThumbnailCapture_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailCapture_Vtbl
    where
        Identity: IThumbnailCapture_Impl,
    {
        unsafe extern "system" fn CaptureThumbnail<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmaxsize: *const super::super::Foundation::SIZE, phtmldoc2: *mut core::ffi::c_void, phbmthumbnail: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT
        where
            Identity: IThumbnailCapture_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IThumbnailCapture_Impl::CaptureThumbnail(this, core::mem::transmute_copy(&pmaxsize), windows_core::from_raw_borrowed(&phtmldoc2)) {
                Ok(ok__) => {
                    phbmthumbnail.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CaptureThumbnail: CaptureThumbnail::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailCapture as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IThumbnailHandlerFactory_Impl: Sized {
    fn GetThumbnailHandler(&self, pidlchild: *const Common::ITEMIDLIST, pbc: Option<&super::super::System::Com::IBindCtx>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IThumbnailHandlerFactory {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IThumbnailHandlerFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailHandlerFactory_Vtbl
    where
        Identity: IThumbnailHandlerFactory_Impl,
    {
        unsafe extern "system" fn GetThumbnailHandler<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlchild: *const Common::ITEMIDLIST, pbc: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IThumbnailHandlerFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailHandlerFactory_Impl::GetThumbnailHandler(this, core::mem::transmute_copy(&pidlchild), windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetThumbnailHandler: GetThumbnailHandler::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailHandlerFactory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IThumbnailProvider_Impl: Sized {
    fn GetThumbnail(&self, cx: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP, pdwalpha: *mut WTS_ALPHATYPE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IThumbnailProvider {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IThumbnailProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailProvider_Vtbl
    where
        Identity: IThumbnailProvider_Impl,
    {
        unsafe extern "system" fn GetThumbnail<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cx: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP, pdwalpha: *mut WTS_ALPHATYPE) -> windows_core::HRESULT
        where
            Identity: IThumbnailProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailProvider_Impl::GetThumbnail(this, core::mem::transmute_copy(&cx), core::mem::transmute_copy(&phbmp), core::mem::transmute_copy(&pdwalpha)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetThumbnail: GetThumbnail::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailProvider as windows_core::Interface>::IID
    }
}
pub trait IThumbnailSettings_Impl: Sized {
    fn SetContext(&self, dwcontext: WTS_CONTEXTFLAGS) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IThumbnailSettings {}
impl IThumbnailSettings_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailSettings_Vtbl
    where
        Identity: IThumbnailSettings_Impl,
    {
        unsafe extern "system" fn SetContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcontext: WTS_CONTEXTFLAGS) -> windows_core::HRESULT
        where
            Identity: IThumbnailSettings_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailSettings_Impl::SetContext(this, core::mem::transmute_copy(&dwcontext)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetContext: SetContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailSettings as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IThumbnailStreamCache_Impl: Sized {
    fn GetThumbnailStream(&self, path: &windows_core::PCWSTR, cacheid: u64, options: ThumbnailStreamCacheOptions, requestedthumbnailsize: u32, thumbnailsize: *mut super::super::Foundation::SIZE, thumbnailstream: *mut Option<super::super::System::Com::IStream>) -> windows_core::Result<()>;
    fn SetThumbnailStream(&self, path: &windows_core::PCWSTR, cacheid: u64, thumbnailsize: &super::super::Foundation::SIZE, thumbnailstream: Option<&super::super::System::Com::IStream>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IThumbnailStreamCache {}
#[cfg(feature = "Win32_System_Com")]
impl IThumbnailStreamCache_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IThumbnailStreamCache_Vtbl
    where
        Identity: IThumbnailStreamCache_Impl,
    {
        unsafe extern "system" fn GetThumbnailStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, cacheid: u64, options: ThumbnailStreamCacheOptions, requestedthumbnailsize: u32, thumbnailsize: *mut super::super::Foundation::SIZE, thumbnailstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IThumbnailStreamCache_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailStreamCache_Impl::GetThumbnailStream(this, core::mem::transmute(&path), core::mem::transmute_copy(&cacheid), core::mem::transmute_copy(&options), core::mem::transmute_copy(&requestedthumbnailsize), core::mem::transmute_copy(&thumbnailsize), core::mem::transmute_copy(&thumbnailstream)).into()
        }
        unsafe extern "system" fn SetThumbnailStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, cacheid: u64, thumbnailsize: super::super::Foundation::SIZE, thumbnailstream: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IThumbnailStreamCache_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IThumbnailStreamCache_Impl::SetThumbnailStream(this, core::mem::transmute(&path), core::mem::transmute_copy(&cacheid), core::mem::transmute(&thumbnailsize), windows_core::from_raw_borrowed(&thumbnailstream)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThumbnailStream: GetThumbnailStream::<Identity, OFFSET>,
            SetThumbnailStream: SetThumbnailStream::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailStreamCache as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITrackShellMenu_Impl: Sized + IShellMenu_Impl {
    fn SetObscured(&self, hwndtb: super::super::Foundation::HWND, punkband: Option<&windows_core::IUnknown>, dwsmsetflags: u32) -> windows_core::Result<()>;
    fn Popup(&self, hwnd: super::super::Foundation::HWND, ppt: *mut super::super::Foundation::POINTL, prcexclude: *mut super::super::Foundation::RECTL, dwflags: i32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITrackShellMenu {}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITrackShellMenu_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITrackShellMenu_Vtbl
    where
        Identity: ITrackShellMenu_Impl,
    {
        unsafe extern "system" fn SetObscured<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtb: super::super::Foundation::HWND, punkband: *mut core::ffi::c_void, dwsmsetflags: u32) -> windows_core::HRESULT
        where
            Identity: ITrackShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITrackShellMenu_Impl::SetObscured(this, core::mem::transmute_copy(&hwndtb), windows_core::from_raw_borrowed(&punkband), core::mem::transmute_copy(&dwsmsetflags)).into()
        }
        unsafe extern "system" fn Popup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ppt: *mut super::super::Foundation::POINTL, prcexclude: *mut super::super::Foundation::RECTL, dwflags: i32) -> windows_core::HRESULT
        where
            Identity: ITrackShellMenu_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITrackShellMenu_Impl::Popup(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&prcexclude), core::mem::transmute_copy(&dwflags)).into()
        }
        Self { base__: IShellMenu_Vtbl::new::<Identity, OFFSET>(), SetObscured: SetObscured::<Identity, OFFSET>, Popup: Popup::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITrackShellMenu as windows_core::Interface>::IID || iid == &<IShellMenu as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITranscodeImage_Impl: Sized {
    fn TranscodeImage(&self, pshellitem: Option<&IShellItem>, uimaxwidth: u32, uimaxheight: u32, flags: u32, pvimage: Option<&super::super::System::Com::IStream>, puiwidth: *mut u32, puiheight: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITranscodeImage {}
#[cfg(feature = "Win32_System_Com")]
impl ITranscodeImage_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITranscodeImage_Vtbl
    where
        Identity: ITranscodeImage_Impl,
    {
        unsafe extern "system" fn TranscodeImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshellitem: *mut core::ffi::c_void, uimaxwidth: u32, uimaxheight: u32, flags: u32, pvimage: *mut core::ffi::c_void, puiwidth: *mut u32, puiheight: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITranscodeImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITranscodeImage_Impl::TranscodeImage(this, windows_core::from_raw_borrowed(&pshellitem), core::mem::transmute_copy(&uimaxwidth), core::mem::transmute_copy(&uimaxheight), core::mem::transmute_copy(&flags), windows_core::from_raw_borrowed(&pvimage), core::mem::transmute_copy(&puiwidth), core::mem::transmute_copy(&puiheight)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), TranscodeImage: TranscodeImage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITranscodeImage as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait ITransferAdviseSink_Impl: Sized {
    fn UpdateProgress(&self, ullsizecurrent: u64, ullsizetotal: u64, nfilescurrent: i32, nfilestotal: i32, nfolderscurrent: i32, nfolderstotal: i32) -> windows_core::Result<()>;
    fn UpdateTransferState(&self, ts: u32) -> windows_core::Result<()>;
    fn ConfirmOverwrite(&self, psisource: Option<&IShellItem>, psidestparent: Option<&IShellItem>, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ConfirmEncryptionLoss(&self, psisource: Option<&IShellItem>) -> windows_core::Result<()>;
    fn FileFailure(&self, psi: Option<&IShellItem>, pszitem: &windows_core::PCWSTR, hrerror: windows_core::HRESULT, pszrename: &windows_core::PWSTR, cchrename: u32) -> windows_core::Result<()>;
    fn SubStreamFailure(&self, psi: Option<&IShellItem>, pszstreamname: &windows_core::PCWSTR, hrerror: windows_core::HRESULT) -> windows_core::Result<()>;
    fn PropertyFailure(&self, psi: Option<&IShellItem>, pkey: *const PropertiesSystem::PROPERTYKEY, hrerror: windows_core::HRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for ITransferAdviseSink {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl ITransferAdviseSink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITransferAdviseSink_Vtbl
    where
        Identity: ITransferAdviseSink_Impl,
    {
        unsafe extern "system" fn UpdateProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullsizecurrent: u64, ullsizetotal: u64, nfilescurrent: i32, nfilestotal: i32, nfolderscurrent: i32, nfolderstotal: i32) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::UpdateProgress(this, core::mem::transmute_copy(&ullsizecurrent), core::mem::transmute_copy(&ullsizetotal), core::mem::transmute_copy(&nfilescurrent), core::mem::transmute_copy(&nfilestotal), core::mem::transmute_copy(&nfolderscurrent), core::mem::transmute_copy(&nfolderstotal)).into()
        }
        unsafe extern "system" fn UpdateTransferState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ts: u32) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::UpdateTransferState(this, core::mem::transmute_copy(&ts)).into()
        }
        unsafe extern "system" fn ConfirmOverwrite<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psidestparent: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::ConfirmOverwrite(this, windows_core::from_raw_borrowed(&psisource), windows_core::from_raw_borrowed(&psidestparent), core::mem::transmute(&pszname)).into()
        }
        unsafe extern "system" fn ConfirmEncryptionLoss<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::ConfirmEncryptionLoss(this, windows_core::from_raw_borrowed(&psisource)).into()
        }
        unsafe extern "system" fn FileFailure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pszitem: windows_core::PCWSTR, hrerror: windows_core::HRESULT, pszrename: windows_core::PWSTR, cchrename: u32) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::FileFailure(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute(&pszitem), core::mem::transmute_copy(&hrerror), core::mem::transmute(&pszrename), core::mem::transmute_copy(&cchrename)).into()
        }
        unsafe extern "system" fn SubStreamFailure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pszstreamname: windows_core::PCWSTR, hrerror: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::SubStreamFailure(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute(&pszstreamname), core::mem::transmute_copy(&hrerror)).into()
        }
        unsafe extern "system" fn PropertyFailure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pkey: *const PropertiesSystem::PROPERTYKEY, hrerror: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: ITransferAdviseSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferAdviseSink_Impl::PropertyFailure(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&hrerror)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            UpdateTransferState: UpdateTransferState::<Identity, OFFSET>,
            ConfirmOverwrite: ConfirmOverwrite::<Identity, OFFSET>,
            ConfirmEncryptionLoss: ConfirmEncryptionLoss::<Identity, OFFSET>,
            FileFailure: FileFailure::<Identity, OFFSET>,
            SubStreamFailure: SubStreamFailure::<Identity, OFFSET>,
            PropertyFailure: PropertyFailure::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferAdviseSink as windows_core::Interface>::IID
    }
}
pub trait ITransferDestination_Impl: Sized {
    fn Advise(&self, psink: Option<&ITransferAdviseSink>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn CreateItem(&self, pszname: &windows_core::PCWSTR, dwattributes: u32, ullsize: u64, flags: u32, riiditem: *const windows_core::GUID, ppvitem: *mut *mut core::ffi::c_void, riidresources: *const windows_core::GUID, ppvresources: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ITransferDestination {}
impl ITransferDestination_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITransferDestination_Vtbl
    where
        Identity: ITransferDestination_Impl,
    {
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psink: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITransferDestination_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferDestination_Impl::Advise(this, windows_core::from_raw_borrowed(&psink)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: ITransferDestination_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferDestination_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn CreateItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, dwattributes: u32, ullsize: u64, flags: u32, riiditem: *const windows_core::GUID, ppvitem: *mut *mut core::ffi::c_void, riidresources: *const windows_core::GUID, ppvresources: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferDestination_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferDestination_Impl::CreateItem(this, core::mem::transmute(&pszname), core::mem::transmute_copy(&dwattributes), core::mem::transmute_copy(&ullsize), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riiditem), core::mem::transmute_copy(&ppvitem), core::mem::transmute_copy(&riidresources), core::mem::transmute_copy(&ppvresources)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            CreateItem: CreateItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferDestination as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ITransferMediumItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ITransferMediumItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ITransferMediumItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITransferMediumItem_Vtbl
    where
        Identity: ITransferMediumItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferMediumItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait ITransferSource_Impl: Sized {
    fn Advise(&self, psink: Option<&ITransferAdviseSink>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetProperties(&self, pproparray: Option<&PropertiesSystem::IPropertyChangeArray>) -> windows_core::Result<()>;
    fn OpenItem(&self, psi: Option<&IShellItem>, flags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn MoveItem(&self, psi: Option<&IShellItem>, psiparentdst: Option<&IShellItem>, psznamedst: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<IShellItem>;
    fn RecycleItem(&self, psisource: Option<&IShellItem>, psiparentdest: Option<&IShellItem>, flags: u32) -> windows_core::Result<IShellItem>;
    fn RemoveItem(&self, psisource: Option<&IShellItem>, flags: u32) -> windows_core::Result<()>;
    fn RenameItem(&self, psisource: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<IShellItem>;
    fn LinkItem(&self, psisource: Option<&IShellItem>, psiparentdest: Option<&IShellItem>, psznewname: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<IShellItem>;
    fn ApplyPropertiesToItem(&self, psisource: Option<&IShellItem>) -> windows_core::Result<IShellItem>;
    fn GetDefaultDestinationName(&self, psisource: Option<&IShellItem>, psiparentdest: Option<&IShellItem>) -> windows_core::Result<windows_core::PWSTR>;
    fn EnterFolder(&self, psichildfolderdest: Option<&IShellItem>) -> windows_core::Result<()>;
    fn LeaveFolder(&self, psichildfolderdest: Option<&IShellItem>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for ITransferSource {}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl ITransferSource_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITransferSource_Vtbl
    where
        Identity: ITransferSource_Impl,
    {
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psink: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::Advise(this, windows_core::from_raw_borrowed(&psink)) {
                Ok(ok__) => {
                    pdwcookie.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferSource_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn SetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pproparray: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferSource_Impl::SetProperties(this, windows_core::from_raw_borrowed(&pproparray)).into()
        }
        unsafe extern "system" fn OpenItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, flags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferSource_Impl::OpenItem(this, windows_core::from_raw_borrowed(&psi), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
        }
        unsafe extern "system" fn MoveItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, psiparentdst: *mut core::ffi::c_void, psznamedst: windows_core::PCWSTR, flags: u32, ppsinew: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::MoveItem(this, windows_core::from_raw_borrowed(&psi), windows_core::from_raw_borrowed(&psiparentdst), core::mem::transmute(&psznamedst), core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    ppsinew.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecycleItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psiparentdest: *mut core::ffi::c_void, flags: u32, ppsinewdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::RecycleItem(this, windows_core::from_raw_borrowed(&psisource), windows_core::from_raw_borrowed(&psiparentdest), core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    ppsinewdest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferSource_Impl::RemoveItem(this, windows_core::from_raw_borrowed(&psisource), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn RenameItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, flags: u32, ppsinewdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::RenameItem(this, windows_core::from_raw_borrowed(&psisource), core::mem::transmute(&psznewname), core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    ppsinewdest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LinkItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psiparentdest: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, flags: u32, ppsinewdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::LinkItem(this, windows_core::from_raw_borrowed(&psisource), windows_core::from_raw_borrowed(&psiparentdest), core::mem::transmute(&psznewname), core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    ppsinewdest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ApplyPropertiesToItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, ppsinew: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::ApplyPropertiesToItem(this, windows_core::from_raw_borrowed(&psisource)) {
                Ok(ok__) => {
                    ppsinew.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultDestinationName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psiparentdest: *mut core::ffi::c_void, ppszdestinationname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITransferSource_Impl::GetDefaultDestinationName(this, windows_core::from_raw_borrowed(&psisource), windows_core::from_raw_borrowed(&psiparentdest)) {
                Ok(ok__) => {
                    ppszdestinationname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnterFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psichildfolderdest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferSource_Impl::EnterFolder(this, windows_core::from_raw_borrowed(&psichildfolderdest)).into()
        }
        unsafe extern "system" fn LeaveFolder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psichildfolderdest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITransferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITransferSource_Impl::LeaveFolder(this, windows_core::from_raw_borrowed(&psichildfolderdest)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
            OpenItem: OpenItem::<Identity, OFFSET>,
            MoveItem: MoveItem::<Identity, OFFSET>,
            RecycleItem: RecycleItem::<Identity, OFFSET>,
            RemoveItem: RemoveItem::<Identity, OFFSET>,
            RenameItem: RenameItem::<Identity, OFFSET>,
            LinkItem: LinkItem::<Identity, OFFSET>,
            ApplyPropertiesToItem: ApplyPropertiesToItem::<Identity, OFFSET>,
            GetDefaultDestinationName: GetDefaultDestinationName::<Identity, OFFSET>,
            EnterFolder: EnterFolder::<Identity, OFFSET>,
            LeaveFolder: LeaveFolder::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferSource as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ITravelEntry_Impl: Sized {
    fn Invoke(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Update(&self, punk: Option<&windows_core::IUnknown>, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetPidl(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ITravelEntry {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ITravelEntry_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITravelEntry_Vtbl
    where
        Identity: ITravelEntry_Impl,
    {
        unsafe extern "system" fn Invoke<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelEntry_Impl::Invoke(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn Update<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ITravelEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelEntry_Impl::Update(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&fislocalanchor)).into()
        }
        unsafe extern "system" fn GetPidl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: ITravelEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelEntry_Impl::GetPidl(this) {
                Ok(ok__) => {
                    ppidl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Invoke: Invoke::<Identity, OFFSET>,
            Update: Update::<Identity, OFFSET>,
            GetPidl: GetPidl::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelEntry as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITravelLog_Impl: Sized {
    fn AddEntry(&self, punk: Option<&windows_core::IUnknown>, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn UpdateEntry(&self, punk: Option<&windows_core::IUnknown>, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn UpdateExternal(&self, punk: Option<&windows_core::IUnknown>, punkhlbrowsecontext: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Travel(&self, punk: Option<&windows_core::IUnknown>, ioffset: i32) -> windows_core::Result<()>;
    fn GetTravelEntry(&self, punk: Option<&windows_core::IUnknown>, ioffset: i32, ppte: *mut Option<ITravelEntry>) -> windows_core::Result<()>;
    fn FindTravelEntry(&self, punk: Option<&windows_core::IUnknown>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<ITravelEntry>;
    fn GetToolTipText(&self, punk: Option<&windows_core::IUnknown>, ioffset: i32, idstemplate: i32, pwztext: windows_core::PWSTR, cchtext: u32) -> windows_core::Result<()>;
    fn InsertMenuEntries(&self, punk: Option<&windows_core::IUnknown>, hmenu: super::WindowsAndMessaging::HMENU, npos: i32, idfirst: i32, idlast: i32, dwflags: u32) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ITravelLog>;
    fn CountEntries(&self, punk: Option<&windows_core::IUnknown>) -> u32;
    fn Revert(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITravelLog {}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITravelLog_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITravelLog_Vtbl
    where
        Identity: ITravelLog_Impl,
    {
        unsafe extern "system" fn AddEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::AddEntry(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&fislocalanchor)).into()
        }
        unsafe extern "system" fn UpdateEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, fislocalanchor: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::UpdateEntry(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&fislocalanchor)).into()
        }
        unsafe extern "system" fn UpdateExternal<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, punkhlbrowsecontext: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::UpdateExternal(this, windows_core::from_raw_borrowed(&punk), windows_core::from_raw_borrowed(&punkhlbrowsecontext)).into()
        }
        unsafe extern "system" fn Travel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, ioffset: i32) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::Travel(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&ioffset)).into()
        }
        unsafe extern "system" fn GetTravelEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, ioffset: i32, ppte: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::GetTravelEntry(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&ioffset), core::mem::transmute_copy(&ppte)).into()
        }
        unsafe extern "system" fn FindTravelEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppte: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLog_Impl::FindTravelEntry(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&pidl)) {
                Ok(ok__) => {
                    ppte.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetToolTipText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, ioffset: i32, idstemplate: i32, pwztext: windows_core::PWSTR, cchtext: u32) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::GetToolTipText(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&ioffset), core::mem::transmute_copy(&idstemplate), core::mem::transmute_copy(&pwztext), core::mem::transmute_copy(&cchtext)).into()
        }
        unsafe extern "system" fn InsertMenuEntries<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, hmenu: super::WindowsAndMessaging::HMENU, npos: i32, idfirst: i32, idlast: i32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::InsertMenuEntries(this, windows_core::from_raw_borrowed(&punk), core::mem::transmute_copy(&hmenu), core::mem::transmute_copy(&npos), core::mem::transmute_copy(&idfirst), core::mem::transmute_copy(&idlast), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLog_Impl::Clone(this) {
                Ok(ok__) => {
                    pptl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CountEntries<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> u32
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::CountEntries(this, windows_core::from_raw_borrowed(&punk))
        }
        unsafe extern "system" fn Revert<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLog_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLog_Impl::Revert(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddEntry: AddEntry::<Identity, OFFSET>,
            UpdateEntry: UpdateEntry::<Identity, OFFSET>,
            UpdateExternal: UpdateExternal::<Identity, OFFSET>,
            Travel: Travel::<Identity, OFFSET>,
            GetTravelEntry: GetTravelEntry::<Identity, OFFSET>,
            FindTravelEntry: FindTravelEntry::<Identity, OFFSET>,
            GetToolTipText: GetToolTipText::<Identity, OFFSET>,
            InsertMenuEntries: InsertMenuEntries::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
            CountEntries: CountEntries::<Identity, OFFSET>,
            Revert: Revert::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLog as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait ITravelLogClient_Impl: Sized {
    fn FindWindowByIndex(&self, dwid: u32) -> windows_core::Result<windows_core::IUnknown>;
    fn GetWindowData(&self, pstream: Option<&super::super::System::Com::IStream>, pwindata: *mut WINDOWDATA) -> windows_core::Result<()>;
    fn LoadHistoryPosition(&self, pszurllocation: &windows_core::PCWSTR, dwposition: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ITravelLogClient {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl ITravelLogClient_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITravelLogClient_Vtbl
    where
        Identity: ITravelLogClient_Impl,
    {
        unsafe extern "system" fn FindWindowByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwid: u32, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogClient_Impl::FindWindowByIndex(this, core::mem::transmute_copy(&dwid)) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetWindowData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstream: *mut core::ffi::c_void, pwindata: *mut WINDOWDATA) -> windows_core::HRESULT
        where
            Identity: ITravelLogClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLogClient_Impl::GetWindowData(this, windows_core::from_raw_borrowed(&pstream), core::mem::transmute_copy(&pwindata)).into()
        }
        unsafe extern "system" fn LoadHistoryPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurllocation: windows_core::PCWSTR, dwposition: u32) -> windows_core::HRESULT
        where
            Identity: ITravelLogClient_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLogClient_Impl::LoadHistoryPosition(this, core::mem::transmute(&pszurllocation), core::mem::transmute_copy(&dwposition)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindWindowByIndex: FindWindowByIndex::<Identity, OFFSET>,
            GetWindowData: GetWindowData::<Identity, OFFSET>,
            LoadHistoryPosition: LoadHistoryPosition::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLogClient as windows_core::Interface>::IID
    }
}
pub trait ITravelLogEntry_Impl: Sized {
    fn GetTitle(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetURL(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for ITravelLogEntry {}
impl ITravelLogEntry_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITravelLogEntry_Vtbl
    where
        Identity: ITravelLogEntry_Impl,
    {
        unsafe extern "system" fn GetTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztitle: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ITravelLogEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogEntry_Impl::GetTitle(this) {
                Ok(ok__) => {
                    ppsztitle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszurl: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: ITravelLogEntry_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogEntry_Impl::GetURL(this) {
                Ok(ok__) => {
                    ppszurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetTitle: GetTitle::<Identity, OFFSET>, GetURL: GetURL::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLogEntry as windows_core::Interface>::IID
    }
}
pub trait ITravelLogStg_Impl: Sized {
    fn CreateEntry(&self, pszurl: &windows_core::PCWSTR, psztitle: &windows_core::PCWSTR, ptlerelativeto: Option<&ITravelLogEntry>, fprepend: super::super::Foundation::BOOL) -> windows_core::Result<ITravelLogEntry>;
    fn TravelTo(&self, ptle: Option<&ITravelLogEntry>) -> windows_core::Result<()>;
    fn EnumEntries(&self, flags: TLENUMF) -> windows_core::Result<IEnumTravelLogEntry>;
    fn FindEntries(&self, flags: TLENUMF, pszurl: &windows_core::PCWSTR) -> windows_core::Result<IEnumTravelLogEntry>;
    fn GetCount(&self, flags: TLENUMF) -> windows_core::Result<u32>;
    fn RemoveEntry(&self, ptle: Option<&ITravelLogEntry>) -> windows_core::Result<()>;
    fn GetRelativeEntry(&self, ioffset: i32) -> windows_core::Result<ITravelLogEntry>;
}
impl windows_core::RuntimeName for ITravelLogStg {}
impl ITravelLogStg_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITravelLogStg_Vtbl
    where
        Identity: ITravelLogStg_Impl,
    {
        unsafe extern "system" fn CreateEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PCWSTR, psztitle: windows_core::PCWSTR, ptlerelativeto: *mut core::ffi::c_void, fprepend: super::super::Foundation::BOOL, pptle: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogStg_Impl::CreateEntry(this, core::mem::transmute(&pszurl), core::mem::transmute(&psztitle), windows_core::from_raw_borrowed(&ptlerelativeto), core::mem::transmute_copy(&fprepend)) {
                Ok(ok__) => {
                    pptle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TravelTo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptle: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLogStg_Impl::TravelTo(this, windows_core::from_raw_borrowed(&ptle)).into()
        }
        unsafe extern "system" fn EnumEntries<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: TLENUMF, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogStg_Impl::EnumEntries(this, core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindEntries<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: TLENUMF, pszurl: windows_core::PCWSTR, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogStg_Impl::FindEntries(this, core::mem::transmute_copy(&flags), core::mem::transmute(&pszurl)) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: TLENUMF, pcentries: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogStg_Impl::GetCount(this, core::mem::transmute_copy(&flags)) {
                Ok(ok__) => {
                    pcentries.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptle: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITravelLogStg_Impl::RemoveEntry(this, windows_core::from_raw_borrowed(&ptle)).into()
        }
        unsafe extern "system" fn GetRelativeEntry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ioffset: i32, ptle: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITravelLogStg_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITravelLogStg_Impl::GetRelativeEntry(this, core::mem::transmute_copy(&ioffset)) {
                Ok(ok__) => {
                    ptle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateEntry: CreateEntry::<Identity, OFFSET>,
            TravelTo: TravelTo::<Identity, OFFSET>,
            EnumEntries: EnumEntries::<Identity, OFFSET>,
            FindEntries: FindEntries::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
            RemoveEntry: RemoveEntry::<Identity, OFFSET>,
            GetRelativeEntry: GetRelativeEntry::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLogStg as windows_core::Interface>::IID
    }
}
pub trait ITrayDeskBand_Impl: Sized {
    fn ShowDeskBand(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn HideDeskBand(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn IsDeskBandShown(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn DeskBandRegistrationChanged(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ITrayDeskBand {}
impl ITrayDeskBand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITrayDeskBand_Vtbl
    where
        Identity: ITrayDeskBand_Impl,
    {
        unsafe extern "system" fn ShowDeskBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ITrayDeskBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITrayDeskBand_Impl::ShowDeskBand(this, core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn HideDeskBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ITrayDeskBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITrayDeskBand_Impl::HideDeskBand(this, core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn IsDeskBandShown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ITrayDeskBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITrayDeskBand_Impl::IsDeskBandShown(this, core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn DeskBandRegistrationChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITrayDeskBand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITrayDeskBand_Impl::DeskBandRegistrationChanged(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShowDeskBand: ShowDeskBand::<Identity, OFFSET>,
            HideDeskBand: HideDeskBand::<Identity, OFFSET>,
            IsDeskBandShown: IsDeskBandShown::<Identity, OFFSET>,
            DeskBandRegistrationChanged: DeskBandRegistrationChanged::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITrayDeskBand as windows_core::Interface>::IID
    }
}
pub trait IURLSearchHook_Impl: Sized {
    fn Translate(&self, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IURLSearchHook {}
impl IURLSearchHook_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IURLSearchHook_Vtbl
    where
        Identity: IURLSearchHook_Impl,
    {
        unsafe extern "system" fn Translate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32) -> windows_core::HRESULT
        where
            Identity: IURLSearchHook_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IURLSearchHook_Impl::Translate(this, core::mem::transmute_copy(&pwszsearchurl), core::mem::transmute_copy(&cchbuffersize)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Translate: Translate::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IURLSearchHook as windows_core::Interface>::IID
    }
}
pub trait IURLSearchHook2_Impl: Sized + IURLSearchHook_Impl {
    fn TranslateWithSearchContext(&self, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32, psearchcontext: Option<&ISearchContext>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IURLSearchHook2 {}
impl IURLSearchHook2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IURLSearchHook2_Vtbl
    where
        Identity: IURLSearchHook2_Impl,
    {
        unsafe extern "system" fn TranslateWithSearchContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32, psearchcontext: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IURLSearchHook2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IURLSearchHook2_Impl::TranslateWithSearchContext(this, core::mem::transmute_copy(&pwszsearchurl), core::mem::transmute_copy(&cchbuffersize), windows_core::from_raw_borrowed(&psearchcontext)).into()
        }
        Self { base__: IURLSearchHook_Vtbl::new::<Identity, OFFSET>(), TranslateWithSearchContext: TranslateWithSearchContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IURLSearchHook2 as windows_core::Interface>::IID || iid == &<IURLSearchHook as windows_core::Interface>::IID
    }
}
pub trait IUniformResourceLocatorA_Impl: Sized {
    fn SetURL(&self, pcszurl: &windows_core::PCSTR, dwinflags: u32) -> windows_core::Result<()>;
    fn GetURL(&self) -> windows_core::Result<windows_core::PSTR>;
    fn InvokeCommand(&self, purlici: *mut URLINVOKECOMMANDINFOA) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IUniformResourceLocatorA {}
impl IUniformResourceLocatorA_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUniformResourceLocatorA_Vtbl
    where
        Identity: IUniformResourceLocatorA_Impl,
    {
        unsafe extern "system" fn SetURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszurl: windows_core::PCSTR, dwinflags: u32) -> windows_core::HRESULT
        where
            Identity: IUniformResourceLocatorA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUniformResourceLocatorA_Impl::SetURL(this, core::mem::transmute(&pcszurl), core::mem::transmute_copy(&dwinflags)).into()
        }
        unsafe extern "system" fn GetURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszurl: *mut windows_core::PSTR) -> windows_core::HRESULT
        where
            Identity: IUniformResourceLocatorA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IUniformResourceLocatorA_Impl::GetURL(this) {
                Ok(ok__) => {
                    ppszurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InvokeCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, purlici: *mut URLINVOKECOMMANDINFOA) -> windows_core::HRESULT
        where
            Identity: IUniformResourceLocatorA_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUniformResourceLocatorA_Impl::InvokeCommand(this, core::mem::transmute_copy(&purlici)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetURL: SetURL::<Identity, OFFSET>,
            GetURL: GetURL::<Identity, OFFSET>,
            InvokeCommand: InvokeCommand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUniformResourceLocatorA as windows_core::Interface>::IID
    }
}
pub trait IUniformResourceLocatorW_Impl: Sized {
    fn SetURL(&self, pcszurl: &windows_core::PCWSTR, dwinflags: u32) -> windows_core::Result<()>;
    fn GetURL(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn InvokeCommand(&self, purlici: *mut URLINVOKECOMMANDINFOW) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IUniformResourceLocatorW {}
impl IUniformResourceLocatorW_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUniformResourceLocatorW_Vtbl
    where
        Identity: IUniformResourceLocatorW_Impl,
    {
        unsafe extern "system" fn SetURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszurl: windows_core::PCWSTR, dwinflags: u32) -> windows_core::HRESULT
        where
            Identity: IUniformResourceLocatorW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUniformResourceLocatorW_Impl::SetURL(this, core::mem::transmute(&pcszurl), core::mem::transmute_copy(&dwinflags)).into()
        }
        unsafe extern "system" fn GetURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszurl: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IUniformResourceLocatorW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IUniformResourceLocatorW_Impl::GetURL(this) {
                Ok(ok__) => {
                    ppszurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InvokeCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, purlici: *mut URLINVOKECOMMANDINFOW) -> windows_core::HRESULT
        where
            Identity: IUniformResourceLocatorW_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUniformResourceLocatorW_Impl::InvokeCommand(this, core::mem::transmute_copy(&purlici)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetURL: SetURL::<Identity, OFFSET>,
            GetURL: GetURL::<Identity, OFFSET>,
            InvokeCommand: InvokeCommand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUniformResourceLocatorW as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IUpdateIDList_Impl: Sized {
    fn Update(&self, pbc: Option<&super::super::System::Com::IBindCtx>, pidlin: *const Common::ITEMIDLIST) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IUpdateIDList {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IUpdateIDList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUpdateIDList_Vtbl
    where
        Identity: IUpdateIDList_Impl,
    {
        unsafe extern "system" fn Update<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, pidlin: *const Common::ITEMIDLIST, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT
        where
            Identity: IUpdateIDList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IUpdateIDList_Impl::Update(this, windows_core::from_raw_borrowed(&pbc), core::mem::transmute_copy(&pidlin)) {
                Ok(ok__) => {
                    ppidlout.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Update: Update::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUpdateIDList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IUseToBrowseItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IUseToBrowseItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IUseToBrowseItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUseToBrowseItem_Vtbl
    where
        Identity: IUseToBrowseItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUseToBrowseItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
pub trait IUserAccountChangeCallback_Impl: Sized {
    fn OnPictureChange(&self, pszusername: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IUserAccountChangeCallback {}
impl IUserAccountChangeCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUserAccountChangeCallback_Vtbl
    where
        Identity: IUserAccountChangeCallback_Impl,
    {
        unsafe extern "system" fn OnPictureChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszusername: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IUserAccountChangeCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserAccountChangeCallback_Impl::OnPictureChange(this, core::mem::transmute(&pszusername)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnPictureChange: OnPictureChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserAccountChangeCallback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IUserNotification_Impl: Sized {
    fn SetBalloonInfo(&self, psztitle: &windows_core::PCWSTR, psztext: &windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::Result<()>;
    fn SetBalloonRetry(&self, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::Result<()>;
    fn SetIconInfo(&self, hicon: super::WindowsAndMessaging::HICON, psztooltip: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Show(&self, pqc: Option<&IQueryContinue>, dwcontinuepollinterval: u32) -> windows_core::Result<()>;
    fn PlaySound(&self, pszsoundname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IUserNotification {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IUserNotification_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUserNotification_Vtbl
    where
        Identity: IUserNotification_Impl,
    {
        unsafe extern "system" fn SetBalloonInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR, psztext: windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::HRESULT
        where
            Identity: IUserNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification_Impl::SetBalloonInfo(this, core::mem::transmute(&psztitle), core::mem::transmute(&psztext), core::mem::transmute_copy(&dwinfoflags)).into()
        }
        unsafe extern "system" fn SetBalloonRetry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::HRESULT
        where
            Identity: IUserNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification_Impl::SetBalloonRetry(this, core::mem::transmute_copy(&dwshowtime), core::mem::transmute_copy(&dwinterval), core::mem::transmute_copy(&cretrycount)).into()
        }
        unsafe extern "system" fn SetIconInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hicon: super::WindowsAndMessaging::HICON, psztooltip: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IUserNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification_Impl::SetIconInfo(this, core::mem::transmute_copy(&hicon), core::mem::transmute(&psztooltip)).into()
        }
        unsafe extern "system" fn Show<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqc: *mut core::ffi::c_void, dwcontinuepollinterval: u32) -> windows_core::HRESULT
        where
            Identity: IUserNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification_Impl::Show(this, windows_core::from_raw_borrowed(&pqc), core::mem::transmute_copy(&dwcontinuepollinterval)).into()
        }
        unsafe extern "system" fn PlaySound<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsoundname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IUserNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification_Impl::PlaySound(this, core::mem::transmute(&pszsoundname)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBalloonInfo: SetBalloonInfo::<Identity, OFFSET>,
            SetBalloonRetry: SetBalloonRetry::<Identity, OFFSET>,
            SetIconInfo: SetIconInfo::<Identity, OFFSET>,
            Show: Show::<Identity, OFFSET>,
            PlaySound: PlaySound::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserNotification as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IUserNotification2_Impl: Sized {
    fn SetBalloonInfo(&self, psztitle: &windows_core::PCWSTR, psztext: &windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::Result<()>;
    fn SetBalloonRetry(&self, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::Result<()>;
    fn SetIconInfo(&self, hicon: super::WindowsAndMessaging::HICON, psztooltip: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Show(&self, pqc: Option<&IQueryContinue>, dwcontinuepollinterval: u32, psink: Option<&IUserNotificationCallback>) -> windows_core::Result<()>;
    fn PlaySound(&self, pszsoundname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IUserNotification2 {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IUserNotification2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUserNotification2_Vtbl
    where
        Identity: IUserNotification2_Impl,
    {
        unsafe extern "system" fn SetBalloonInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR, psztext: windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::HRESULT
        where
            Identity: IUserNotification2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification2_Impl::SetBalloonInfo(this, core::mem::transmute(&psztitle), core::mem::transmute(&psztext), core::mem::transmute_copy(&dwinfoflags)).into()
        }
        unsafe extern "system" fn SetBalloonRetry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::HRESULT
        where
            Identity: IUserNotification2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification2_Impl::SetBalloonRetry(this, core::mem::transmute_copy(&dwshowtime), core::mem::transmute_copy(&dwinterval), core::mem::transmute_copy(&cretrycount)).into()
        }
        unsafe extern "system" fn SetIconInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hicon: super::WindowsAndMessaging::HICON, psztooltip: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IUserNotification2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification2_Impl::SetIconInfo(this, core::mem::transmute_copy(&hicon), core::mem::transmute(&psztooltip)).into()
        }
        unsafe extern "system" fn Show<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqc: *mut core::ffi::c_void, dwcontinuepollinterval: u32, psink: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IUserNotification2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification2_Impl::Show(this, windows_core::from_raw_borrowed(&pqc), core::mem::transmute_copy(&dwcontinuepollinterval), windows_core::from_raw_borrowed(&psink)).into()
        }
        unsafe extern "system" fn PlaySound<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsoundname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IUserNotification2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotification2_Impl::PlaySound(this, core::mem::transmute(&pszsoundname)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBalloonInfo: SetBalloonInfo::<Identity, OFFSET>,
            SetBalloonRetry: SetBalloonRetry::<Identity, OFFSET>,
            SetIconInfo: SetIconInfo::<Identity, OFFSET>,
            Show: Show::<Identity, OFFSET>,
            PlaySound: PlaySound::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserNotification2 as windows_core::Interface>::IID
    }
}
pub trait IUserNotificationCallback_Impl: Sized {
    fn OnBalloonUserClick(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn OnLeftClick(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn OnContextMenu(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IUserNotificationCallback {}
impl IUserNotificationCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IUserNotificationCallback_Vtbl
    where
        Identity: IUserNotificationCallback_Impl,
    {
        unsafe extern "system" fn OnBalloonUserClick<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: *const super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IUserNotificationCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotificationCallback_Impl::OnBalloonUserClick(this, core::mem::transmute_copy(&pt)).into()
        }
        unsafe extern "system" fn OnLeftClick<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: *const super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IUserNotificationCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotificationCallback_Impl::OnLeftClick(this, core::mem::transmute_copy(&pt)).into()
        }
        unsafe extern "system" fn OnContextMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: *const super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IUserNotificationCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IUserNotificationCallback_Impl::OnContextMenu(this, core::mem::transmute_copy(&pt)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnBalloonUserClick: OnBalloonUserClick::<Identity, OFFSET>,
            OnLeftClick: OnLeftClick::<Identity, OFFSET>,
            OnContextMenu: OnContextMenu::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserNotificationCallback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IViewStateIdentityItem_Impl: Sized + IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IViewStateIdentityItem {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IViewStateIdentityItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IViewStateIdentityItem_Vtbl
    where
        Identity: IViewStateIdentityItem_Impl,
    {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IViewStateIdentityItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
pub trait IVirtualDesktopManager_Impl: Sized {
    fn IsWindowOnCurrentVirtualDesktop(&self, toplevelwindow: super::super::Foundation::HWND) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn GetWindowDesktopId(&self, toplevelwindow: super::super::Foundation::HWND) -> windows_core::Result<windows_core::GUID>;
    fn MoveWindowToDesktop(&self, toplevelwindow: super::super::Foundation::HWND, desktopid: *const windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVirtualDesktopManager {}
impl IVirtualDesktopManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVirtualDesktopManager_Vtbl
    where
        Identity: IVirtualDesktopManager_Impl,
    {
        unsafe extern "system" fn IsWindowOnCurrentVirtualDesktop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, toplevelwindow: super::super::Foundation::HWND, oncurrentdesktop: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVirtualDesktopManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVirtualDesktopManager_Impl::IsWindowOnCurrentVirtualDesktop(this, core::mem::transmute_copy(&toplevelwindow)) {
                Ok(ok__) => {
                    oncurrentdesktop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetWindowDesktopId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, toplevelwindow: super::super::Foundation::HWND, desktopid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVirtualDesktopManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVirtualDesktopManager_Impl::GetWindowDesktopId(this, core::mem::transmute_copy(&toplevelwindow)) {
                Ok(ok__) => {
                    desktopid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MoveWindowToDesktop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, toplevelwindow: super::super::Foundation::HWND, desktopid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVirtualDesktopManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVirtualDesktopManager_Impl::MoveWindowToDesktop(this, core::mem::transmute_copy(&toplevelwindow), core::mem::transmute_copy(&desktopid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsWindowOnCurrentVirtualDesktop: IsWindowOnCurrentVirtualDesktop::<Identity, OFFSET>,
            GetWindowDesktopId: GetWindowDesktopId::<Identity, OFFSET>,
            MoveWindowToDesktop: MoveWindowToDesktop::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVirtualDesktopManager as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IVisualProperties_Impl: Sized {
    fn SetWatermark(&self, hbmp: super::super::Graphics::Gdi::HBITMAP, vpwf: VPWATERMARKFLAGS) -> windows_core::Result<()>;
    fn SetColor(&self, vpcf: VPCOLORFLAGS, cr: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetColor(&self, vpcf: VPCOLORFLAGS) -> windows_core::Result<super::super::Foundation::COLORREF>;
    fn SetItemHeight(&self, cyiteminpixels: i32) -> windows_core::Result<()>;
    fn GetItemHeight(&self) -> windows_core::Result<i32>;
    fn SetFont(&self, plf: *const super::super::Graphics::Gdi::LOGFONTW, bredraw: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetFont(&self, plf: *mut super::super::Graphics::Gdi::LOGFONTW) -> windows_core::Result<()>;
    fn SetTheme(&self, pszsubappname: &windows_core::PCWSTR, pszsubidlist: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IVisualProperties {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IVisualProperties_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVisualProperties_Vtbl
    where
        Identity: IVisualProperties_Impl,
    {
        unsafe extern "system" fn SetWatermark<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hbmp: super::super::Graphics::Gdi::HBITMAP, vpwf: VPWATERMARKFLAGS) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVisualProperties_Impl::SetWatermark(this, core::mem::transmute_copy(&hbmp), core::mem::transmute_copy(&vpwf)).into()
        }
        unsafe extern "system" fn SetColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vpcf: VPCOLORFLAGS, cr: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVisualProperties_Impl::SetColor(this, core::mem::transmute_copy(&vpcf), core::mem::transmute_copy(&cr)).into()
        }
        unsafe extern "system" fn GetColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vpcf: VPCOLORFLAGS, pcr: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVisualProperties_Impl::GetColor(this, core::mem::transmute_copy(&vpcf)) {
                Ok(ok__) => {
                    pcr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetItemHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cyiteminpixels: i32) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVisualProperties_Impl::SetItemHeight(this, core::mem::transmute_copy(&cyiteminpixels)).into()
        }
        unsafe extern "system" fn GetItemHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cyiteminpixels: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVisualProperties_Impl::GetItemHeight(this) {
                Ok(ok__) => {
                    cyiteminpixels.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFont<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plf: *const super::super::Graphics::Gdi::LOGFONTW, bredraw: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVisualProperties_Impl::SetFont(this, core::mem::transmute_copy(&plf), core::mem::transmute_copy(&bredraw)).into()
        }
        unsafe extern "system" fn GetFont<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plf: *mut super::super::Graphics::Gdi::LOGFONTW) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVisualProperties_Impl::GetFont(this, core::mem::transmute_copy(&plf)).into()
        }
        unsafe extern "system" fn SetTheme<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsubappname: windows_core::PCWSTR, pszsubidlist: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IVisualProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVisualProperties_Impl::SetTheme(this, core::mem::transmute(&pszsubappname), core::mem::transmute(&pszsubidlist)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetWatermark: SetWatermark::<Identity, OFFSET>,
            SetColor: SetColor::<Identity, OFFSET>,
            GetColor: GetColor::<Identity, OFFSET>,
            SetItemHeight: SetItemHeight::<Identity, OFFSET>,
            GetItemHeight: GetItemHeight::<Identity, OFFSET>,
            SetFont: SetFont::<Identity, OFFSET>,
            GetFont: GetFont::<Identity, OFFSET>,
            SetTheme: SetTheme::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVisualProperties as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IWebBrowser_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn GoBack(&self) -> windows_core::Result<()>;
    fn GoForward(&self) -> windows_core::Result<()>;
    fn GoHome(&self) -> windows_core::Result<()>;
    fn GoSearch(&self) -> windows_core::Result<()>;
    fn Navigate(&self, url: &windows_core::BSTR, flags: *const windows_core::VARIANT, targetframename: *const windows_core::VARIANT, postdata: *const windows_core::VARIANT, headers: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn Refresh(&self) -> windows_core::Result<()>;
    fn Refresh2(&self, level: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Container(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Document(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn TopLevelContainer(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn Type(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Left(&self) -> windows_core::Result<i32>;
    fn SetLeft(&self, left: i32) -> windows_core::Result<()>;
    fn Top(&self) -> windows_core::Result<i32>;
    fn SetTop(&self, top: i32) -> windows_core::Result<()>;
    fn Width(&self) -> windows_core::Result<i32>;
    fn SetWidth(&self, width: i32) -> windows_core::Result<()>;
    fn Height(&self) -> windows_core::Result<i32>;
    fn SetHeight(&self, height: i32) -> windows_core::Result<()>;
    fn LocationName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn LocationURL(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Busy(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IWebBrowser {}
#[cfg(feature = "Win32_System_Com")]
impl IWebBrowser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWebBrowser_Vtbl
    where
        Identity: IWebBrowser_Impl,
    {
        unsafe extern "system" fn GoBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::GoBack(this).into()
        }
        unsafe extern "system" fn GoForward<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::GoForward(this).into()
        }
        unsafe extern "system" fn GoHome<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::GoHome(this).into()
        }
        unsafe extern "system" fn GoSearch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::GoSearch(this).into()
        }
        unsafe extern "system" fn Navigate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: core::mem::MaybeUninit<windows_core::BSTR>, flags: *const core::mem::MaybeUninit<windows_core::VARIANT>, targetframename: *const core::mem::MaybeUninit<windows_core::VARIANT>, postdata: *const core::mem::MaybeUninit<windows_core::VARIANT>, headers: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::Navigate(this, core::mem::transmute(&url), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&targetframename), core::mem::transmute_copy(&postdata), core::mem::transmute_copy(&headers)).into()
        }
        unsafe extern "system" fn Refresh<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::Refresh(this).into()
        }
        unsafe extern "system" fn Refresh2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::Refresh2(this, core::mem::transmute_copy(&level)).into()
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::Stop(this).into()
        }
        unsafe extern "system" fn Application<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Application(this) {
                Ok(ok__) => {
                    ppdisp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Parent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Parent(this) {
                Ok(ok__) => {
                    ppdisp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Container<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Container(this) {
                Ok(ok__) => {
                    ppdisp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Document<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Document(this) {
                Ok(ok__) => {
                    ppdisp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TopLevelContainer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::TopLevelContainer(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Type<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Type(this) {
                Ok(ok__) => {
                    r#type.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Left<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Left(this) {
                Ok(ok__) => {
                    pl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLeft<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, left: i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::SetLeft(this, core::mem::transmute_copy(&left)).into()
        }
        unsafe extern "system" fn Top<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Top(this) {
                Ok(ok__) => {
                    pl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, top: i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::SetTop(this, core::mem::transmute_copy(&top)).into()
        }
        unsafe extern "system" fn Width<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Width(this) {
                Ok(ok__) => {
                    pl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, width: i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::SetWidth(this, core::mem::transmute_copy(&width)).into()
        }
        unsafe extern "system" fn Height<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Height(this) {
                Ok(ok__) => {
                    pl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, height: i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser_Impl::SetHeight(this, core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn LocationName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::LocationName(this) {
                Ok(ok__) => {
                    locationname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LocationURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::LocationURL(this) {
                Ok(ok__) => {
                    locationurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Busy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser_Impl::Busy(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            GoBack: GoBack::<Identity, OFFSET>,
            GoForward: GoForward::<Identity, OFFSET>,
            GoHome: GoHome::<Identity, OFFSET>,
            GoSearch: GoSearch::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            Refresh: Refresh::<Identity, OFFSET>,
            Refresh2: Refresh2::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Container: Container::<Identity, OFFSET>,
            Document: Document::<Identity, OFFSET>,
            TopLevelContainer: TopLevelContainer::<Identity, OFFSET>,
            Type: Type::<Identity, OFFSET>,
            Left: Left::<Identity, OFFSET>,
            SetLeft: SetLeft::<Identity, OFFSET>,
            Top: Top::<Identity, OFFSET>,
            SetTop: SetTop::<Identity, OFFSET>,
            Width: Width::<Identity, OFFSET>,
            SetWidth: SetWidth::<Identity, OFFSET>,
            Height: Height::<Identity, OFFSET>,
            SetHeight: SetHeight::<Identity, OFFSET>,
            LocationName: LocationName::<Identity, OFFSET>,
            LocationURL: LocationURL::<Identity, OFFSET>,
            Busy: Busy::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebBrowser as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IWebBrowser2_Impl: Sized + IWebBrowserApp_Impl {
    fn Navigate2(&self, url: *const windows_core::VARIANT, flags: *const windows_core::VARIANT, targetframename: *const windows_core::VARIANT, postdata: *const windows_core::VARIANT, headers: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn QueryStatusWB(&self, cmdid: super::super::System::Ole::OLECMDID) -> windows_core::Result<super::super::System::Ole::OLECMDF>;
    fn ExecWB(&self, cmdid: super::super::System::Ole::OLECMDID, cmdexecopt: super::super::System::Ole::OLECMDEXECOPT, pvain: *const windows_core::VARIANT, pvaout: *mut windows_core::VARIANT) -> windows_core::Result<()>;
    fn ShowBrowserBar(&self, pvaclsid: *const windows_core::VARIANT, pvarshow: *const windows_core::VARIANT, pvarsize: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn ReadyState(&self) -> windows_core::Result<super::super::System::Ole::READYSTATE>;
    fn Offline(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetOffline(&self, boffline: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Silent(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetSilent(&self, bsilent: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn RegisterAsBrowser(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetRegisterAsBrowser(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn RegisterAsDropTarget(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetRegisterAsDropTarget(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn TheaterMode(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetTheaterMode(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn AddressBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetAddressBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Resizable(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetResizable(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IWebBrowser2 {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IWebBrowser2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWebBrowser2_Vtbl
    where
        Identity: IWebBrowser2_Impl,
    {
        unsafe extern "system" fn Navigate2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *const core::mem::MaybeUninit<windows_core::VARIANT>, flags: *const core::mem::MaybeUninit<windows_core::VARIANT>, targetframename: *const core::mem::MaybeUninit<windows_core::VARIANT>, postdata: *const core::mem::MaybeUninit<windows_core::VARIANT>, headers: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::Navigate2(this, core::mem::transmute_copy(&url), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&targetframename), core::mem::transmute_copy(&postdata), core::mem::transmute_copy(&headers)).into()
        }
        unsafe extern "system" fn QueryStatusWB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmdid: super::super::System::Ole::OLECMDID, pcmdf: *mut super::super::System::Ole::OLECMDF) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::QueryStatusWB(this, core::mem::transmute_copy(&cmdid)) {
                Ok(ok__) => {
                    pcmdf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ExecWB<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmdid: super::super::System::Ole::OLECMDID, cmdexecopt: super::super::System::Ole::OLECMDEXECOPT, pvain: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvaout: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::ExecWB(this, core::mem::transmute_copy(&cmdid), core::mem::transmute_copy(&cmdexecopt), core::mem::transmute_copy(&pvain), core::mem::transmute_copy(&pvaout)).into()
        }
        unsafe extern "system" fn ShowBrowserBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvaclsid: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarshow: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarsize: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::ShowBrowserBar(this, core::mem::transmute_copy(&pvaclsid), core::mem::transmute_copy(&pvarshow), core::mem::transmute_copy(&pvarsize)).into()
        }
        unsafe extern "system" fn ReadyState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plreadystate: *mut super::super::System::Ole::READYSTATE) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::ReadyState(this) {
                Ok(ok__) => {
                    plreadystate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Offline<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pboffline: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::Offline(this) {
                Ok(ok__) => {
                    pboffline.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOffline<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, boffline: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetOffline(this, core::mem::transmute_copy(&boffline)).into()
        }
        unsafe extern "system" fn Silent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbsilent: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::Silent(this) {
                Ok(ok__) => {
                    pbsilent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSilent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsilent: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetSilent(this, core::mem::transmute_copy(&bsilent)).into()
        }
        unsafe extern "system" fn RegisterAsBrowser<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbregister: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::RegisterAsBrowser(this) {
                Ok(ok__) => {
                    pbregister.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRegisterAsBrowser<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetRegisterAsBrowser(this, core::mem::transmute_copy(&bregister)).into()
        }
        unsafe extern "system" fn RegisterAsDropTarget<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbregister: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::RegisterAsDropTarget(this) {
                Ok(ok__) => {
                    pbregister.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRegisterAsDropTarget<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetRegisterAsDropTarget(this, core::mem::transmute_copy(&bregister)).into()
        }
        unsafe extern "system" fn TheaterMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbregister: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::TheaterMode(this) {
                Ok(ok__) => {
                    pbregister.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTheaterMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetTheaterMode(this, core::mem::transmute_copy(&bregister)).into()
        }
        unsafe extern "system" fn AddressBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::AddressBar(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAddressBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetAddressBar(this, core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn Resizable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowser2_Impl::Resizable(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetResizable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowser2_Impl::SetResizable(this, core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: IWebBrowserApp_Vtbl::new::<Identity, OFFSET>(),
            Navigate2: Navigate2::<Identity, OFFSET>,
            QueryStatusWB: QueryStatusWB::<Identity, OFFSET>,
            ExecWB: ExecWB::<Identity, OFFSET>,
            ShowBrowserBar: ShowBrowserBar::<Identity, OFFSET>,
            ReadyState: ReadyState::<Identity, OFFSET>,
            Offline: Offline::<Identity, OFFSET>,
            SetOffline: SetOffline::<Identity, OFFSET>,
            Silent: Silent::<Identity, OFFSET>,
            SetSilent: SetSilent::<Identity, OFFSET>,
            RegisterAsBrowser: RegisterAsBrowser::<Identity, OFFSET>,
            SetRegisterAsBrowser: SetRegisterAsBrowser::<Identity, OFFSET>,
            RegisterAsDropTarget: RegisterAsDropTarget::<Identity, OFFSET>,
            SetRegisterAsDropTarget: SetRegisterAsDropTarget::<Identity, OFFSET>,
            TheaterMode: TheaterMode::<Identity, OFFSET>,
            SetTheaterMode: SetTheaterMode::<Identity, OFFSET>,
            AddressBar: AddressBar::<Identity, OFFSET>,
            SetAddressBar: SetAddressBar::<Identity, OFFSET>,
            Resizable: Resizable::<Identity, OFFSET>,
            SetResizable: SetResizable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebBrowser2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebBrowser as windows_core::Interface>::IID || iid == &<IWebBrowserApp as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IWebBrowserApp_Impl: Sized + IWebBrowser_Impl {
    fn Quit(&self) -> windows_core::Result<()>;
    fn ClientToWindow(&self, pcx: *mut i32, pcy: *mut i32) -> windows_core::Result<()>;
    fn PutProperty(&self, property: &windows_core::BSTR, vtvalue: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn GetProperty(&self, property: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn HWND(&self) -> windows_core::Result<super::super::Foundation::SHANDLE_PTR>;
    fn FullName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Path(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Visible(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetVisible(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn StatusBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetStatusBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn StatusText(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetStatusText(&self, statustext: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ToolBar(&self) -> windows_core::Result<i32>;
    fn SetToolBar(&self, value: i32) -> windows_core::Result<()>;
    fn MenuBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetMenuBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn FullScreen(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetFullScreen(&self, bfullscreen: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IWebBrowserApp {}
#[cfg(feature = "Win32_System_Com")]
impl IWebBrowserApp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWebBrowserApp_Vtbl
    where
        Identity: IWebBrowserApp_Impl,
    {
        unsafe extern "system" fn Quit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::Quit(this).into()
        }
        unsafe extern "system" fn ClientToWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcx: *mut i32, pcy: *mut i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::ClientToWindow(this, core::mem::transmute_copy(&pcx), core::mem::transmute_copy(&pcy)).into()
        }
        unsafe extern "system" fn PutProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: core::mem::MaybeUninit<windows_core::BSTR>, vtvalue: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::PutProperty(this, core::mem::transmute(&property), core::mem::transmute(&vtvalue)).into()
        }
        unsafe extern "system" fn GetProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: core::mem::MaybeUninit<windows_core::BSTR>, pvtvalue: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::GetProperty(this, core::mem::transmute(&property)) {
                Ok(ok__) => {
                    pvtvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::Name(this) {
                Ok(ok__) => {
                    name.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HWND<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::SHANDLE_PTR) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::HWND(this) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FullName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fullname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::FullName(this) {
                Ok(ok__) => {
                    fullname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Path<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::Path(this) {
                Ok(ok__) => {
                    path.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Visible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::Visible(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVisible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::SetVisible(this, core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn StatusBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::StatusBar(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStatusBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::SetStatusBar(this, core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn StatusText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, statustext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::StatusText(this) {
                Ok(ok__) => {
                    statustext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStatusText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, statustext: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::SetStatusText(this, core::mem::transmute(&statustext)).into()
        }
        unsafe extern "system" fn ToolBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::ToolBar(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetToolBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::SetToolBar(this, core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn MenuBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::MenuBar(this) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMenuBar<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::SetMenuBar(this, core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn FullScreen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbfullscreen: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebBrowserApp_Impl::FullScreen(this) {
                Ok(ok__) => {
                    pbfullscreen.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFullScreen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bfullscreen: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebBrowserApp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebBrowserApp_Impl::SetFullScreen(this, core::mem::transmute_copy(&bfullscreen)).into()
        }
        Self {
            base__: IWebBrowser_Vtbl::new::<Identity, OFFSET>(),
            Quit: Quit::<Identity, OFFSET>,
            ClientToWindow: ClientToWindow::<Identity, OFFSET>,
            PutProperty: PutProperty::<Identity, OFFSET>,
            GetProperty: GetProperty::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            HWND: HWND::<Identity, OFFSET>,
            FullName: FullName::<Identity, OFFSET>,
            Path: Path::<Identity, OFFSET>,
            Visible: Visible::<Identity, OFFSET>,
            SetVisible: SetVisible::<Identity, OFFSET>,
            StatusBar: StatusBar::<Identity, OFFSET>,
            SetStatusBar: SetStatusBar::<Identity, OFFSET>,
            StatusText: StatusText::<Identity, OFFSET>,
            SetStatusText: SetStatusText::<Identity, OFFSET>,
            ToolBar: ToolBar::<Identity, OFFSET>,
            SetToolBar: SetToolBar::<Identity, OFFSET>,
            MenuBar: MenuBar::<Identity, OFFSET>,
            SetMenuBar: SetMenuBar::<Identity, OFFSET>,
            FullScreen: FullScreen::<Identity, OFFSET>,
            SetFullScreen: SetFullScreen::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebBrowserApp as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebBrowser as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IWebWizardExtension_Impl: Sized + IWizardExtension_Impl {
    fn SetInitialURL(&self, pszurl: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetErrorURL(&self, pszerrorurl: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IWebWizardExtension {}
#[cfg(feature = "Win32_UI_Controls")]
impl IWebWizardExtension_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWebWizardExtension_Vtbl
    where
        Identity: IWebWizardExtension_Impl,
    {
        unsafe extern "system" fn SetInitialURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IWebWizardExtension_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardExtension_Impl::SetInitialURL(this, core::mem::transmute(&pszurl)).into()
        }
        unsafe extern "system" fn SetErrorURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszerrorurl: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IWebWizardExtension_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardExtension_Impl::SetErrorURL(this, core::mem::transmute(&pszerrorurl)).into()
        }
        Self {
            base__: IWizardExtension_Vtbl::new::<Identity, OFFSET>(),
            SetInitialURL: SetInitialURL::<Identity, OFFSET>,
            SetErrorURL: SetErrorURL::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebWizardExtension as windows_core::Interface>::IID || iid == &<IWizardExtension as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IWebWizardHost_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn FinalBack(&self) -> windows_core::Result<()>;
    fn FinalNext(&self) -> windows_core::Result<()>;
    fn Cancel(&self) -> windows_core::Result<()>;
    fn SetCaption(&self, bstrcaption: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Caption(&self) -> windows_core::Result<windows_core::BSTR>;
    fn put_Property(&self, bstrpropertyname: &windows_core::BSTR, pvproperty: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn get_Property(&self, bstrpropertyname: &windows_core::BSTR) -> windows_core::Result<windows_core::VARIANT>;
    fn SetWizardButtons(&self, vfenableback: super::super::Foundation::VARIANT_BOOL, vfenablenext: super::super::Foundation::VARIANT_BOOL, vflastpage: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetHeaderText(&self, bstrheadertitle: &windows_core::BSTR, bstrheadersubtitle: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IWebWizardHost {}
#[cfg(feature = "Win32_System_Com")]
impl IWebWizardHost_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWebWizardHost_Vtbl
    where
        Identity: IWebWizardHost_Impl,
    {
        unsafe extern "system" fn FinalBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::FinalBack(this).into()
        }
        unsafe extern "system" fn FinalNext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::FinalNext(this).into()
        }
        unsafe extern "system" fn Cancel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::Cancel(this).into()
        }
        unsafe extern "system" fn SetCaption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrcaption: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::SetCaption(this, core::mem::transmute(&bstrcaption)).into()
        }
        unsafe extern "system" fn Caption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcaption: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebWizardHost_Impl::Caption(this) {
                Ok(ok__) => {
                    pbstrcaption.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Property<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpropertyname: core::mem::MaybeUninit<windows_core::BSTR>, pvproperty: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::put_Property(this, core::mem::transmute(&bstrpropertyname), core::mem::transmute_copy(&pvproperty)).into()
        }
        unsafe extern "system" fn get_Property<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpropertyname: core::mem::MaybeUninit<windows_core::BSTR>, pvproperty: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebWizardHost_Impl::get_Property(this, core::mem::transmute(&bstrpropertyname)) {
                Ok(ok__) => {
                    pvproperty.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWizardButtons<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vfenableback: super::super::Foundation::VARIANT_BOOL, vfenablenext: super::super::Foundation::VARIANT_BOOL, vflastpage: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::SetWizardButtons(this, core::mem::transmute_copy(&vfenableback), core::mem::transmute_copy(&vfenablenext), core::mem::transmute_copy(&vflastpage)).into()
        }
        unsafe extern "system" fn SetHeaderText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrheadertitle: core::mem::MaybeUninit<windows_core::BSTR>, bstrheadersubtitle: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWebWizardHost_Impl::SetHeaderText(this, core::mem::transmute(&bstrheadertitle), core::mem::transmute(&bstrheadersubtitle)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            FinalBack: FinalBack::<Identity, OFFSET>,
            FinalNext: FinalNext::<Identity, OFFSET>,
            Cancel: Cancel::<Identity, OFFSET>,
            SetCaption: SetCaption::<Identity, OFFSET>,
            Caption: Caption::<Identity, OFFSET>,
            put_Property: put_Property::<Identity, OFFSET>,
            get_Property: get_Property::<Identity, OFFSET>,
            SetWizardButtons: SetWizardButtons::<Identity, OFFSET>,
            SetHeaderText: SetHeaderText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebWizardHost as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IWebWizardHost2_Impl: Sized + IWebWizardHost_Impl {
    fn SignString(&self, value: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IWebWizardHost2 {}
#[cfg(feature = "Win32_System_Com")]
impl IWebWizardHost2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWebWizardHost2_Vtbl
    where
        Identity: IWebWizardHost2_Impl,
    {
        unsafe extern "system" fn SignString<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: core::mem::MaybeUninit<windows_core::BSTR>, signedvalue: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IWebWizardHost2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWebWizardHost2_Impl::SignString(this, core::mem::transmute(&value)) {
                Ok(ok__) => {
                    signedvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IWebWizardHost_Vtbl::new::<Identity, OFFSET>(), SignString: SignString::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebWizardHost2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebWizardHost as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IWizardExtension_Impl: Sized {
    fn AddPages(&self, apages: *mut super::Controls::HPROPSHEETPAGE, cpages: u32, pnpagesadded: *mut u32) -> windows_core::Result<()>;
    fn GetFirstPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
    fn GetLastPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IWizardExtension {}
#[cfg(feature = "Win32_UI_Controls")]
impl IWizardExtension_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWizardExtension_Vtbl
    where
        Identity: IWizardExtension_Impl,
    {
        unsafe extern "system" fn AddPages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, apages: *mut super::Controls::HPROPSHEETPAGE, cpages: u32, pnpagesadded: *mut u32) -> windows_core::HRESULT
        where
            Identity: IWizardExtension_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWizardExtension_Impl::AddPages(this, core::mem::transmute_copy(&apages), core::mem::transmute_copy(&cpages), core::mem::transmute_copy(&pnpagesadded)).into()
        }
        unsafe extern "system" fn GetFirstPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT
        where
            Identity: IWizardExtension_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWizardExtension_Impl::GetFirstPage(this) {
                Ok(ok__) => {
                    phpage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT
        where
            Identity: IWizardExtension_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWizardExtension_Impl::GetLastPage(this) {
                Ok(ok__) => {
                    phpage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddPages: AddPages::<Identity, OFFSET>,
            GetFirstPage: GetFirstPage::<Identity, OFFSET>,
            GetLastPage: GetLastPage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWizardExtension as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IWizardSite_Impl: Sized {
    fn GetPreviousPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
    fn GetNextPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
    fn GetCancelledPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IWizardSite {}
#[cfg(feature = "Win32_UI_Controls")]
impl IWizardSite_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWizardSite_Vtbl
    where
        Identity: IWizardSite_Impl,
    {
        unsafe extern "system" fn GetPreviousPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT
        where
            Identity: IWizardSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWizardSite_Impl::GetPreviousPage(this) {
                Ok(ok__) => {
                    phpage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNextPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT
        where
            Identity: IWizardSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWizardSite_Impl::GetNextPage(this) {
                Ok(ok__) => {
                    phpage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCancelledPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT
        where
            Identity: IWizardSite_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IWizardSite_Impl::GetCancelledPage(this) {
                Ok(ok__) => {
                    phpage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPreviousPage: GetPreviousPage::<Identity, OFFSET>,
            GetNextPage: GetNextPage::<Identity, OFFSET>,
            GetCancelledPage: GetCancelledPage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWizardSite as windows_core::Interface>::IID
    }
}
