#[cfg(feature = "Win32_System_Com")]
pub trait IATSCChannelTuneRequest_Impl: Sized + IChannelTuneRequest_Impl {
    fn MinorChannel(&self) -> windows_core::Result<i32>;
    fn SetMinorChannel(&self, minorchannel: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IATSCChannelTuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl IATSCChannelTuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSCChannelTuneRequest_Vtbl
    where
        Identity: IATSCChannelTuneRequest_Impl,
    {
        unsafe extern "system" fn MinorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minorchannel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCChannelTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCChannelTuneRequest_Impl::MinorChannel(this) {
                Ok(ok__) => {
                    minorchannel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minorchannel: i32) -> windows_core::HRESULT
        where
            Identity: IATSCChannelTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCChannelTuneRequest_Impl::SetMinorChannel(this, core::mem::transmute_copy(&minorchannel)).into()
        }
        Self {
            base__: IChannelTuneRequest_Vtbl::new::<Identity, OFFSET>(),
            MinorChannel: MinorChannel::<Identity, OFFSET>,
            SetMinorChannel: SetMinorChannel::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSCChannelTuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuneRequest as windows_core::Interface>::IID || iid == &<IChannelTuneRequest as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IATSCComponentType_Impl: Sized + IMPEG2ComponentType_Impl {
    fn Flags(&self) -> windows_core::Result<i32>;
    fn SetFlags(&self, flags: i32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IATSCComponentType {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IATSCComponentType_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSCComponentType_Vtbl
    where
        Identity: IATSCComponentType_Impl,
    {
        unsafe extern "system" fn Flags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCComponentType_Impl::Flags(this) {
                Ok(ok__) => {
                    flags.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, flags: i32) -> windows_core::HRESULT
        where
            Identity: IATSCComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCComponentType_Impl::SetFlags(this, core::mem::transmute_copy(&flags)).into()
        }
        Self { base__: IMPEG2ComponentType_Vtbl::new::<Identity, OFFSET>(), Flags: Flags::<Identity, OFFSET>, SetFlags: SetFlags::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSCComponentType as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IComponentType as windows_core::Interface>::IID || iid == &<ILanguageComponentType as windows_core::Interface>::IID || iid == &<IMPEG2ComponentType as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IATSCLocator_Impl: Sized + IDigitalLocator_Impl {
    fn PhysicalChannel(&self) -> windows_core::Result<i32>;
    fn SetPhysicalChannel(&self, physicalchannel: i32) -> windows_core::Result<()>;
    fn TSID(&self) -> windows_core::Result<i32>;
    fn SetTSID(&self, tsid: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IATSCLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IATSCLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSCLocator_Vtbl
    where
        Identity: IATSCLocator_Impl,
    {
        unsafe extern "system" fn PhysicalChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, physicalchannel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCLocator_Impl::PhysicalChannel(this) {
                Ok(ok__) => {
                    physicalchannel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPhysicalChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, physicalchannel: i32) -> windows_core::HRESULT
        where
            Identity: IATSCLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCLocator_Impl::SetPhysicalChannel(this, core::mem::transmute_copy(&physicalchannel)).into()
        }
        unsafe extern "system" fn TSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tsid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCLocator_Impl::TSID(this) {
                Ok(ok__) => {
                    tsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tsid: i32) -> windows_core::HRESULT
        where
            Identity: IATSCLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCLocator_Impl::SetTSID(this, core::mem::transmute_copy(&tsid)).into()
        }
        Self {
            base__: IDigitalLocator_Vtbl::new::<Identity, OFFSET>(),
            PhysicalChannel: PhysicalChannel::<Identity, OFFSET>,
            SetPhysicalChannel: SetPhysicalChannel::<Identity, OFFSET>,
            TSID: TSID::<Identity, OFFSET>,
            SetTSID: SetTSID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSCLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IATSCLocator2_Impl: Sized + IATSCLocator_Impl {
    fn ProgramNumber(&self) -> windows_core::Result<i32>;
    fn SetProgramNumber(&self, programnumber: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IATSCLocator2 {}
#[cfg(feature = "Win32_System_Com")]
impl IATSCLocator2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSCLocator2_Vtbl
    where
        Identity: IATSCLocator2_Impl,
    {
        unsafe extern "system" fn ProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, programnumber: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCLocator2_Impl::ProgramNumber(this) {
                Ok(ok__) => {
                    programnumber.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, programnumber: i32) -> windows_core::HRESULT
        where
            Identity: IATSCLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCLocator2_Impl::SetProgramNumber(this, core::mem::transmute_copy(&programnumber)).into()
        }
        Self {
            base__: IATSCLocator_Vtbl::new::<Identity, OFFSET>(),
            ProgramNumber: ProgramNumber::<Identity, OFFSET>,
            SetProgramNumber: SetProgramNumber::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSCLocator2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID || iid == &<IATSCLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IATSCTuningSpace_Impl: Sized + IAnalogTVTuningSpace_Impl {
    fn MinMinorChannel(&self) -> windows_core::Result<i32>;
    fn SetMinMinorChannel(&self, newminminorchannelval: i32) -> windows_core::Result<()>;
    fn MaxMinorChannel(&self) -> windows_core::Result<i32>;
    fn SetMaxMinorChannel(&self, newmaxminorchannelval: i32) -> windows_core::Result<()>;
    fn MinPhysicalChannel(&self) -> windows_core::Result<i32>;
    fn SetMinPhysicalChannel(&self, newminphysicalchannelval: i32) -> windows_core::Result<()>;
    fn MaxPhysicalChannel(&self) -> windows_core::Result<i32>;
    fn SetMaxPhysicalChannel(&self, newmaxphysicalchannelval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IATSCTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IATSCTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSCTuningSpace_Vtbl
    where
        Identity: IATSCTuningSpace_Impl,
    {
        unsafe extern "system" fn MinMinorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minminorchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCTuningSpace_Impl::MinMinorChannel(this) {
                Ok(ok__) => {
                    minminorchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinMinorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newminminorchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCTuningSpace_Impl::SetMinMinorChannel(this, core::mem::transmute_copy(&newminminorchannelval)).into()
        }
        unsafe extern "system" fn MaxMinorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxminorchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCTuningSpace_Impl::MaxMinorChannel(this) {
                Ok(ok__) => {
                    maxminorchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxMinorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newmaxminorchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCTuningSpace_Impl::SetMaxMinorChannel(this, core::mem::transmute_copy(&newmaxminorchannelval)).into()
        }
        unsafe extern "system" fn MinPhysicalChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minphysicalchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCTuningSpace_Impl::MinPhysicalChannel(this) {
                Ok(ok__) => {
                    minphysicalchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinPhysicalChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newminphysicalchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCTuningSpace_Impl::SetMinPhysicalChannel(this, core::mem::transmute_copy(&newminphysicalchannelval)).into()
        }
        unsafe extern "system" fn MaxPhysicalChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxphysicalchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSCTuningSpace_Impl::MaxPhysicalChannel(this) {
                Ok(ok__) => {
                    maxphysicalchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxPhysicalChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newmaxphysicalchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IATSCTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSCTuningSpace_Impl::SetMaxPhysicalChannel(this, core::mem::transmute_copy(&newmaxphysicalchannelval)).into()
        }
        Self {
            base__: IAnalogTVTuningSpace_Vtbl::new::<Identity, OFFSET>(),
            MinMinorChannel: MinMinorChannel::<Identity, OFFSET>,
            SetMinMinorChannel: SetMinMinorChannel::<Identity, OFFSET>,
            MaxMinorChannel: MaxMinorChannel::<Identity, OFFSET>,
            SetMaxMinorChannel: SetMaxMinorChannel::<Identity, OFFSET>,
            MinPhysicalChannel: MinPhysicalChannel::<Identity, OFFSET>,
            SetMinPhysicalChannel: SetMinPhysicalChannel::<Identity, OFFSET>,
            MaxPhysicalChannel: MaxPhysicalChannel::<Identity, OFFSET>,
            SetMaxPhysicalChannel: SetMaxPhysicalChannel::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSCTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<IAnalogTVTuningSpace as windows_core::Interface>::IID
    }
}
pub trait IATSC_EIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetSourceId(&self) -> windows_core::Result<u16>;
    fn GetProtocolVersion(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordStartTime(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordEtmLocation(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordDuration(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_TIME>;
    fn GetRecordTitleText(&self, dwrecordindex: u32, pdwlength: *mut u32, pptext: *mut *mut u8) -> windows_core::Result<()>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IATSC_EIT {}
impl IATSC_EIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSC_EIT_Vtbl
    where
        Identity: IATSC_EIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_EIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetSourceId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetProtocolVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetRecordEventId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetRecordStartTime(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pmdtval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEtmLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetRecordEtmLocation(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pmdval: *mut MPEG_TIME) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetRecordDuration(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pmdval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTitleText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwlength: *mut u32, pptext: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_EIT_Impl::GetRecordTitleText(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&pdwlength), core::mem::transmute_copy(&pptext)).into()
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_EIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_EIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetSourceId: GetSourceId::<Identity, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, OFFSET>,
            GetRecordStartTime: GetRecordStartTime::<Identity, OFFSET>,
            GetRecordEtmLocation: GetRecordEtmLocation::<Identity, OFFSET>,
            GetRecordDuration: GetRecordDuration::<Identity, OFFSET>,
            GetRecordTitleText: GetRecordTitleText::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSC_EIT as windows_core::Interface>::IID
    }
}
pub trait IATSC_ETT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetProtocolVersion(&self) -> windows_core::Result<u8>;
    fn GetEtmId(&self) -> windows_core::Result<u32>;
    fn GetExtendedMessageText(&self, pdwlength: *mut u32, pptext: *mut *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IATSC_ETT {}
impl IATSC_ETT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSC_ETT_Vtbl
    where
        Identity: IATSC_ETT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_ETT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_ETT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_ETT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_ETT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_ETT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_ETT_Impl::GetProtocolVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEtmId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_ETT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_ETT_Impl::GetEtmId(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExtendedMessageText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwlength: *mut u32, pptext: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_ETT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_ETT_Impl::GetExtendedMessageText(this, core::mem::transmute_copy(&pdwlength), core::mem::transmute_copy(&pptext)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, OFFSET>,
            GetEtmId: GetEtmId::<Identity, OFFSET>,
            GetExtendedMessageText: GetExtendedMessageText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSC_ETT as windows_core::Interface>::IID
    }
}
pub trait IATSC_MGT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetProtocolVersion(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordType(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordTypePid(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordVersionNumber(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfTableDescriptors(&self, pdwval: *const u32) -> windows_core::Result<()>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IATSC_MGT {}
impl IATSC_MGT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSC_MGT_Vtbl
    where
        Identity: IATSC_MGT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_MGT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetProtocolVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetRecordType(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTypePid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, ppidval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetRecordTypePid(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    ppidval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetRecordVersionNumber(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_MGT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *const u32) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_MGT_Impl::GetCountOfTableDescriptors(this, core::mem::transmute_copy(&pdwval)).into()
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_MGT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_MGT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_MGT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordType: GetRecordType::<Identity, OFFSET>,
            GetRecordTypePid: GetRecordTypePid::<Identity, OFFSET>,
            GetRecordVersionNumber: GetRecordVersionNumber::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSC_MGT as windows_core::Interface>::IID
    }
}
pub trait IATSC_STT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetProtocolVersion(&self) -> windows_core::Result<u8>;
    fn GetSystemTime(&self) -> windows_core::Result<MPEG_DATE_AND_TIME>;
    fn GetGpsUtcOffset(&self) -> windows_core::Result<u8>;
    fn GetDaylightSavings(&self) -> windows_core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IATSC_STT {}
impl IATSC_STT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSC_STT_Vtbl
    where
        Identity: IATSC_STT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_STT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_STT_Impl::GetProtocolVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSystemTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmdtsystemtime: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_STT_Impl::GetSystemTime(this) {
                Ok(ok__) => {
                    pmdtsystemtime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGpsUtcOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_STT_Impl::GetGpsUtcOffset(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDaylightSavings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_STT_Impl::GetDaylightSavings(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_STT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_STT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_STT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_STT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, OFFSET>,
            GetSystemTime: GetSystemTime::<Identity, OFFSET>,
            GetGpsUtcOffset: GetGpsUtcOffset::<Identity, OFFSET>,
            GetDaylightSavings: GetDaylightSavings::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSC_STT as windows_core::Interface>::IID
    }
}
pub trait IATSC_VCT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetTransportStreamId(&self) -> windows_core::Result<u16>;
    fn GetProtocolVersion(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordName(&self, dwrecordindex: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn GetRecordMajorChannelNumber(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordMinorChannelNumber(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordModulationMode(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordCarrierFrequency(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordProgramNumber(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordEtmLocation(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordIsAccessControlledBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordIsHiddenBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordIsPathSelectBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordIsOutOfBandBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordIsHideGuideBitSet(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordServiceType(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordSourceId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfTableDescriptors(&self, pdwval: *const u32) -> windows_core::Result<()>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IATSC_VCT {}
impl IATSC_VCT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IATSC_VCT_Vtbl
    where
        Identity: IATSC_VCT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_VCT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetTransportStreamId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetProtocolVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwsname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordName(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwsname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMajorChannelNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordMajorChannelNumber(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMinorChannelNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordMinorChannelNumber(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModulationMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordModulationMode(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCarrierFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordCarrierFrequency(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordTransportStreamId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordProgramNumber(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEtmLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordEtmLocation(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsAccessControlledBitSet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordIsAccessControlledBitSet(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsHiddenBitSet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordIsHiddenBitSet(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsPathSelectBitSet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordIsPathSelectBitSet(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsOutOfBandBitSet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordIsOutOfBandBitSet(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordIsHideGuideBitSet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordIsHideGuideBitSet(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordServiceType(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordSourceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordSourceId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_VCT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *const u32) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_VCT_Impl::GetCountOfTableDescriptors(this, core::mem::transmute_copy(&pdwval)).into()
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IATSC_VCT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IATSC_VCT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IATSC_VCT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordName: GetRecordName::<Identity, OFFSET>,
            GetRecordMajorChannelNumber: GetRecordMajorChannelNumber::<Identity, OFFSET>,
            GetRecordMinorChannelNumber: GetRecordMinorChannelNumber::<Identity, OFFSET>,
            GetRecordModulationMode: GetRecordModulationMode::<Identity, OFFSET>,
            GetRecordCarrierFrequency: GetRecordCarrierFrequency::<Identity, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, OFFSET>,
            GetRecordProgramNumber: GetRecordProgramNumber::<Identity, OFFSET>,
            GetRecordEtmLocation: GetRecordEtmLocation::<Identity, OFFSET>,
            GetRecordIsAccessControlledBitSet: GetRecordIsAccessControlledBitSet::<Identity, OFFSET>,
            GetRecordIsHiddenBitSet: GetRecordIsHiddenBitSet::<Identity, OFFSET>,
            GetRecordIsPathSelectBitSet: GetRecordIsPathSelectBitSet::<Identity, OFFSET>,
            GetRecordIsOutOfBandBitSet: GetRecordIsOutOfBandBitSet::<Identity, OFFSET>,
            GetRecordIsHideGuideBitSet: GetRecordIsHideGuideBitSet::<Identity, OFFSET>,
            GetRecordServiceType: GetRecordServiceType::<Identity, OFFSET>,
            GetRecordSourceId: GetRecordSourceId::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IATSC_VCT as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IAnalogAudioComponentType_Impl: Sized + IComponentType_Impl {
    fn AnalogAudioMode(&self) -> windows_core::Result<super::TVAudioMode>;
    fn SetAnalogAudioMode(&self, mode: super::TVAudioMode) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IAnalogAudioComponentType {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IAnalogAudioComponentType_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAnalogAudioComponentType_Vtbl
    where
        Identity: IAnalogAudioComponentType_Impl,
    {
        unsafe extern "system" fn AnalogAudioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: *mut super::TVAudioMode) -> windows_core::HRESULT
        where
            Identity: IAnalogAudioComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogAudioComponentType_Impl::AnalogAudioMode(this) {
                Ok(ok__) => {
                    mode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAnalogAudioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: super::TVAudioMode) -> windows_core::HRESULT
        where
            Identity: IAnalogAudioComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogAudioComponentType_Impl::SetAnalogAudioMode(this, core::mem::transmute_copy(&mode)).into()
        }
        Self {
            base__: IComponentType_Vtbl::new::<Identity, OFFSET>(),
            AnalogAudioMode: AnalogAudioMode::<Identity, OFFSET>,
            SetAnalogAudioMode: SetAnalogAudioMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAnalogAudioComponentType as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IComponentType as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAnalogLocator_Impl: Sized + ILocator_Impl {
    fn VideoStandard(&self) -> windows_core::Result<super::AnalogVideoStandard>;
    fn SetVideoStandard(&self, avs: super::AnalogVideoStandard) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAnalogLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IAnalogLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAnalogLocator_Vtbl
    where
        Identity: IAnalogLocator_Impl,
    {
        unsafe extern "system" fn VideoStandard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, avs: *mut super::AnalogVideoStandard) -> windows_core::HRESULT
        where
            Identity: IAnalogLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogLocator_Impl::VideoStandard(this) {
                Ok(ok__) => {
                    avs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVideoStandard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, avs: super::AnalogVideoStandard) -> windows_core::HRESULT
        where
            Identity: IAnalogLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogLocator_Impl::SetVideoStandard(this, core::mem::transmute_copy(&avs)).into()
        }
        Self {
            base__: ILocator_Vtbl::new::<Identity, OFFSET>(),
            VideoStandard: VideoStandard::<Identity, OFFSET>,
            SetVideoStandard: SetVideoStandard::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAnalogLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAnalogRadioTuningSpace_Impl: Sized + ITuningSpace_Impl {
    fn MinFrequency(&self) -> windows_core::Result<i32>;
    fn SetMinFrequency(&self, newminfrequencyval: i32) -> windows_core::Result<()>;
    fn MaxFrequency(&self) -> windows_core::Result<i32>;
    fn SetMaxFrequency(&self, newmaxfrequencyval: i32) -> windows_core::Result<()>;
    fn Step(&self) -> windows_core::Result<i32>;
    fn SetStep(&self, newstepval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAnalogRadioTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IAnalogRadioTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAnalogRadioTuningSpace_Vtbl
    where
        Identity: IAnalogRadioTuningSpace_Impl,
    {
        unsafe extern "system" fn MinFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minfrequencyval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogRadioTuningSpace_Impl::MinFrequency(this) {
                Ok(ok__) => {
                    minfrequencyval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newminfrequencyval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogRadioTuningSpace_Impl::SetMinFrequency(this, core::mem::transmute_copy(&newminfrequencyval)).into()
        }
        unsafe extern "system" fn MaxFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxfrequencyval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogRadioTuningSpace_Impl::MaxFrequency(this) {
                Ok(ok__) => {
                    maxfrequencyval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newmaxfrequencyval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogRadioTuningSpace_Impl::SetMaxFrequency(this, core::mem::transmute_copy(&newmaxfrequencyval)).into()
        }
        unsafe extern "system" fn Step<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, stepval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogRadioTuningSpace_Impl::Step(this) {
                Ok(ok__) => {
                    stepval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStep<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newstepval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogRadioTuningSpace_Impl::SetStep(this, core::mem::transmute_copy(&newstepval)).into()
        }
        Self {
            base__: ITuningSpace_Vtbl::new::<Identity, OFFSET>(),
            MinFrequency: MinFrequency::<Identity, OFFSET>,
            SetMinFrequency: SetMinFrequency::<Identity, OFFSET>,
            MaxFrequency: MaxFrequency::<Identity, OFFSET>,
            SetMaxFrequency: SetMaxFrequency::<Identity, OFFSET>,
            Step: Step::<Identity, OFFSET>,
            SetStep: SetStep::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAnalogRadioTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAnalogRadioTuningSpace2_Impl: Sized + IAnalogRadioTuningSpace_Impl {
    fn CountryCode(&self) -> windows_core::Result<i32>;
    fn SetCountryCode(&self, newcountrycodeval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAnalogRadioTuningSpace2 {}
#[cfg(feature = "Win32_System_Com")]
impl IAnalogRadioTuningSpace2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAnalogRadioTuningSpace2_Vtbl
    where
        Identity: IAnalogRadioTuningSpace2_Impl,
    {
        unsafe extern "system" fn CountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, countrycodeval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogRadioTuningSpace2_Impl::CountryCode(this) {
                Ok(ok__) => {
                    countrycodeval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newcountrycodeval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogRadioTuningSpace2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogRadioTuningSpace2_Impl::SetCountryCode(this, core::mem::transmute_copy(&newcountrycodeval)).into()
        }
        Self {
            base__: IAnalogRadioTuningSpace_Vtbl::new::<Identity, OFFSET>(),
            CountryCode: CountryCode::<Identity, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAnalogRadioTuningSpace2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<IAnalogRadioTuningSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAnalogTVTuningSpace_Impl: Sized + ITuningSpace_Impl {
    fn MinChannel(&self) -> windows_core::Result<i32>;
    fn SetMinChannel(&self, newminchannelval: i32) -> windows_core::Result<()>;
    fn MaxChannel(&self) -> windows_core::Result<i32>;
    fn SetMaxChannel(&self, newmaxchannelval: i32) -> windows_core::Result<()>;
    fn InputType(&self) -> windows_core::Result<super::TunerInputType>;
    fn SetInputType(&self, newinputtypeval: super::TunerInputType) -> windows_core::Result<()>;
    fn CountryCode(&self) -> windows_core::Result<i32>;
    fn SetCountryCode(&self, newcountrycodeval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAnalogTVTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IAnalogTVTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAnalogTVTuningSpace_Vtbl
    where
        Identity: IAnalogTVTuningSpace_Impl,
    {
        unsafe extern "system" fn MinChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogTVTuningSpace_Impl::MinChannel(this) {
                Ok(ok__) => {
                    minchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newminchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogTVTuningSpace_Impl::SetMinChannel(this, core::mem::transmute_copy(&newminchannelval)).into()
        }
        unsafe extern "system" fn MaxChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogTVTuningSpace_Impl::MaxChannel(this) {
                Ok(ok__) => {
                    maxchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newmaxchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogTVTuningSpace_Impl::SetMaxChannel(this, core::mem::transmute_copy(&newmaxchannelval)).into()
        }
        unsafe extern "system" fn InputType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, inputtypeval: *mut super::TunerInputType) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogTVTuningSpace_Impl::InputType(this) {
                Ok(ok__) => {
                    inputtypeval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInputType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newinputtypeval: super::TunerInputType) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogTVTuningSpace_Impl::SetInputType(this, core::mem::transmute_copy(&newinputtypeval)).into()
        }
        unsafe extern "system" fn CountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, countrycodeval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAnalogTVTuningSpace_Impl::CountryCode(this) {
                Ok(ok__) => {
                    countrycodeval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newcountrycodeval: i32) -> windows_core::HRESULT
        where
            Identity: IAnalogTVTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAnalogTVTuningSpace_Impl::SetCountryCode(this, core::mem::transmute_copy(&newcountrycodeval)).into()
        }
        Self {
            base__: ITuningSpace_Vtbl::new::<Identity, OFFSET>(),
            MinChannel: MinChannel::<Identity, OFFSET>,
            SetMinChannel: SetMinChannel::<Identity, OFFSET>,
            MaxChannel: MaxChannel::<Identity, OFFSET>,
            SetMaxChannel: SetMaxChannel::<Identity, OFFSET>,
            InputType: InputType::<Identity, OFFSET>,
            SetInputType: SetInputType::<Identity, OFFSET>,
            CountryCode: CountryCode::<Identity, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAnalogTVTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID
    }
}
pub trait IAtscContentAdvisoryDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetRatingRegionCount(&self) -> windows_core::Result<u8>;
    fn GetRecordRatingRegion(&self, bindex: u8) -> windows_core::Result<u8>;
    fn GetRecordRatedDimensions(&self, bindex: u8) -> windows_core::Result<u8>;
    fn GetRecordRatingDimension(&self, bindexouter: u8, bindexinner: u8) -> windows_core::Result<u8>;
    fn GetRecordRatingValue(&self, bindexouter: u8, bindexinner: u8) -> windows_core::Result<u8>;
    fn GetRecordRatingDescriptionText(&self, bindex: u8, pblength: *mut u8, pptext: *mut *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAtscContentAdvisoryDescriptor {}
impl IAtscContentAdvisoryDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAtscContentAdvisoryDescriptor_Vtbl
    where
        Identity: IAtscContentAdvisoryDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRatingRegionCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetRatingRegionCount(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingRegion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetRecordRatingRegion(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatedDimensions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetRecordRatedDimensions(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingDimension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindexouter: u8, bindexinner: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetRecordRatingDimension(this, core::mem::transmute_copy(&bindexouter), core::mem::transmute_copy(&bindexinner)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindexouter: u8, bindexinner: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscContentAdvisoryDescriptor_Impl::GetRecordRatingValue(this, core::mem::transmute_copy(&bindexouter), core::mem::transmute_copy(&bindexinner)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRatingDescriptionText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pblength: *mut u8, pptext: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IAtscContentAdvisoryDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAtscContentAdvisoryDescriptor_Impl::GetRecordRatingDescriptionText(this, core::mem::transmute_copy(&bindex), core::mem::transmute_copy(&pblength), core::mem::transmute_copy(&pptext)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetRatingRegionCount: GetRatingRegionCount::<Identity, OFFSET>,
            GetRecordRatingRegion: GetRecordRatingRegion::<Identity, OFFSET>,
            GetRecordRatedDimensions: GetRecordRatedDimensions::<Identity, OFFSET>,
            GetRecordRatingDimension: GetRecordRatingDimension::<Identity, OFFSET>,
            GetRecordRatingValue: GetRecordRatingValue::<Identity, OFFSET>,
            GetRecordRatingDescriptionText: GetRecordRatingDescriptionText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAtscContentAdvisoryDescriptor as windows_core::Interface>::IID
    }
}
pub trait IAtscPsipParser_Impl: Sized {
    fn Initialize(&self, punkmpeg2data: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetPAT(&self) -> windows_core::Result<IPAT>;
    fn GetCAT(&self, dwtimeout: u32) -> windows_core::Result<ICAT>;
    fn GetPMT(&self, pid: u16, pwprogramnumber: *const u16) -> windows_core::Result<IPMT>;
    fn GetTSDT(&self) -> windows_core::Result<ITSDT>;
    fn GetMGT(&self) -> windows_core::Result<IATSC_MGT>;
    fn GetVCT(&self, tableid: u8, fgetnexttable: super::super::super::Foundation::BOOL) -> windows_core::Result<IATSC_VCT>;
    fn GetEIT(&self, pid: u16, pwsourceid: *const u16, dwtimeout: u32) -> windows_core::Result<IATSC_EIT>;
    fn GetETT(&self, pid: u16, wsourceid: *const u16, pweventid: *const u16) -> windows_core::Result<IATSC_ETT>;
    fn GetSTT(&self) -> windows_core::Result<IATSC_STT>;
    fn GetEAS(&self, pid: u16) -> windows_core::Result<ISCTE_EAS>;
}
impl windows_core::RuntimeName for IAtscPsipParser {}
impl IAtscPsipParser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAtscPsipParser_Vtbl
    where
        Identity: IAtscPsipParser_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkmpeg2data: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAtscPsipParser_Impl::Initialize(this, windows_core::from_raw_borrowed(&punkmpeg2data)).into()
        }
        unsafe extern "system" fn GetPAT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pppat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetPAT(this) {
                Ok(ok__) => {
                    pppat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppcat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetCAT(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppcat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPMT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, pwprogramnumber: *const u16, pppmt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetPMT(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&pwprogramnumber)) {
                Ok(ok__) => {
                    pppmt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptsdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetTSDT(this) {
                Ok(ok__) => {
                    pptsdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMGT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmgt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetMGT(this) {
                Ok(ok__) => {
                    ppmgt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVCT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, fgetnexttable: super::super::super::Foundation::BOOL, ppvct: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetVCT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&fgetnexttable)) {
                Ok(ok__) => {
                    ppvct.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, pwsourceid: *const u16, dwtimeout: u32, ppeit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetEIT(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&pwsourceid), core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppeit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetETT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, wsourceid: *const u16, pweventid: *const u16, ppett: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetETT(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&wsourceid), core::mem::transmute_copy(&pweventid)) {
                Ok(ok__) => {
                    ppett.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSTT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetSTT(this) {
                Ok(ok__) => {
                    ppstt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEAS<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, ppeas: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAtscPsipParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAtscPsipParser_Impl::GetEAS(this, core::mem::transmute_copy(&pid)) {
                Ok(ok__) => {
                    ppeas.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>,
            GetPAT: GetPAT::<Identity, OFFSET>,
            GetCAT: GetCAT::<Identity, OFFSET>,
            GetPMT: GetPMT::<Identity, OFFSET>,
            GetTSDT: GetTSDT::<Identity, OFFSET>,
            GetMGT: GetMGT::<Identity, OFFSET>,
            GetVCT: GetVCT::<Identity, OFFSET>,
            GetEIT: GetEIT::<Identity, OFFSET>,
            GetETT: GetETT::<Identity, OFFSET>,
            GetSTT: GetSTT::<Identity, OFFSET>,
            GetEAS: GetEAS::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAtscPsipParser as windows_core::Interface>::IID
    }
}
pub trait IAttributeGet_Impl: Sized {
    fn GetCount(&self) -> windows_core::Result<i32>;
    fn GetAttribIndexed(&self, lindex: i32, pguidattribute: *mut windows_core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> windows_core::Result<()>;
    fn GetAttrib(&self, guidattribute: &windows_core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAttributeGet {}
impl IAttributeGet_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAttributeGet_Vtbl
    where
        Identity: IAttributeGet_Impl,
    {
        unsafe extern "system" fn GetCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAttributeGet_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAttributeGet_Impl::GetCount(this) {
                Ok(ok__) => {
                    plcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttribIndexed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, pguidattribute: *mut windows_core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAttributeGet_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttributeGet_Impl::GetAttribIndexed(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&pguidattribute), core::mem::transmute_copy(&pbattribute), core::mem::transmute_copy(&pdwattributelength)).into()
        }
        unsafe extern "system" fn GetAttrib<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidattribute: windows_core::GUID, pbattribute: *mut u8, pdwattributelength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAttributeGet_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttributeGet_Impl::GetAttrib(this, core::mem::transmute(&guidattribute), core::mem::transmute_copy(&pbattribute), core::mem::transmute_copy(&pdwattributelength)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCount: GetCount::<Identity, OFFSET>,
            GetAttribIndexed: GetAttribIndexed::<Identity, OFFSET>,
            GetAttrib: GetAttrib::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAttributeGet as windows_core::Interface>::IID
    }
}
pub trait IAttributeSet_Impl: Sized {
    fn SetAttrib(&self, guidattribute: &windows_core::GUID, pbattribute: *const u8, dwattributelength: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAttributeSet {}
impl IAttributeSet_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAttributeSet_Vtbl
    where
        Identity: IAttributeSet_Impl,
    {
        unsafe extern "system" fn SetAttrib<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidattribute: windows_core::GUID, pbattribute: *const u8, dwattributelength: u32) -> windows_core::HRESULT
        where
            Identity: IAttributeSet_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAttributeSet_Impl::SetAttrib(this, core::mem::transmute(&guidattribute), core::mem::transmute_copy(&pbattribute), core::mem::transmute_copy(&dwattributelength)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAttrib: SetAttrib::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAttributeSet as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAuxInTuningSpace_Impl: Sized + ITuningSpace_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAuxInTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IAuxInTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAuxInTuningSpace_Vtbl
    where
        Identity: IAuxInTuningSpace_Impl,
    {
        Self { base__: ITuningSpace_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAuxInTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAuxInTuningSpace2_Impl: Sized + IAuxInTuningSpace_Impl {
    fn CountryCode(&self) -> windows_core::Result<i32>;
    fn SetCountryCode(&self, newcountrycodeval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAuxInTuningSpace2 {}
#[cfg(feature = "Win32_System_Com")]
impl IAuxInTuningSpace2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAuxInTuningSpace2_Vtbl
    where
        Identity: IAuxInTuningSpace2_Impl,
    {
        unsafe extern "system" fn CountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, countrycodeval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAuxInTuningSpace2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAuxInTuningSpace2_Impl::CountryCode(this) {
                Ok(ok__) => {
                    countrycodeval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newcountrycodeval: i32) -> windows_core::HRESULT
        where
            Identity: IAuxInTuningSpace2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAuxInTuningSpace2_Impl::SetCountryCode(this, core::mem::transmute_copy(&newcountrycodeval)).into()
        }
        Self {
            base__: IAuxInTuningSpace_Vtbl::new::<Identity, OFFSET>(),
            CountryCode: CountryCode::<Identity, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAuxInTuningSpace2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<IAuxInTuningSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBDAComparable_Impl: Sized {
    fn CompareExact(&self, compareto: Option<&super::super::super::System::Com::IDispatch>) -> windows_core::Result<i32>;
    fn CompareEquivalent(&self, compareto: Option<&super::super::super::System::Com::IDispatch>, dwflags: u32) -> windows_core::Result<i32>;
    fn HashExact(&self) -> windows_core::Result<i64>;
    fn HashExactIncremental(&self, partialresult: i64) -> windows_core::Result<i64>;
    fn HashEquivalent(&self, dwflags: u32) -> windows_core::Result<i64>;
    fn HashEquivalentIncremental(&self, partialresult: i64, dwflags: u32) -> windows_core::Result<i64>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IBDAComparable {}
#[cfg(feature = "Win32_System_Com")]
impl IBDAComparable_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDAComparable_Vtbl
    where
        Identity: IBDAComparable_Impl,
    {
        unsafe extern "system" fn CompareExact<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compareto: *mut core::ffi::c_void, result: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBDAComparable_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDAComparable_Impl::CompareExact(this, windows_core::from_raw_borrowed(&compareto)) {
                Ok(ok__) => {
                    result.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CompareEquivalent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compareto: *mut core::ffi::c_void, dwflags: u32, result: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBDAComparable_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDAComparable_Impl::CompareEquivalent(this, windows_core::from_raw_borrowed(&compareto), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    result.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashExact<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, result: *mut i64) -> windows_core::HRESULT
        where
            Identity: IBDAComparable_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDAComparable_Impl::HashExact(this) {
                Ok(ok__) => {
                    result.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashExactIncremental<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, partialresult: i64, result: *mut i64) -> windows_core::HRESULT
        where
            Identity: IBDAComparable_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDAComparable_Impl::HashExactIncremental(this, core::mem::transmute_copy(&partialresult)) {
                Ok(ok__) => {
                    result.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashEquivalent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, result: *mut i64) -> windows_core::HRESULT
        where
            Identity: IBDAComparable_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDAComparable_Impl::HashEquivalent(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    result.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HashEquivalentIncremental<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, partialresult: i64, dwflags: u32, result: *mut i64) -> windows_core::HRESULT
        where
            Identity: IBDAComparable_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDAComparable_Impl::HashEquivalentIncremental(this, core::mem::transmute_copy(&partialresult), core::mem::transmute_copy(&dwflags)) {
                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>(),
            CompareExact: CompareExact::<Identity, OFFSET>,
            CompareEquivalent: CompareEquivalent::<Identity, OFFSET>,
            HashExact: HashExact::<Identity, OFFSET>,
            HashExactIncremental: HashExactIncremental::<Identity, OFFSET>,
            HashEquivalent: HashEquivalent::<Identity, OFFSET>,
            HashEquivalentIncremental: HashEquivalentIncremental::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDAComparable as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBDACreateTuneRequestEx_Impl: Sized {
    fn CreateTuneRequestEx(&self, tunerequestiid: *const windows_core::GUID) -> windows_core::Result<ITuneRequest>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IBDACreateTuneRequestEx {}
#[cfg(feature = "Win32_System_Com")]
impl IBDACreateTuneRequestEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDACreateTuneRequestEx_Vtbl
    where
        Identity: IBDACreateTuneRequestEx_Impl,
    {
        unsafe extern "system" fn CreateTuneRequestEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tunerequestiid: *const windows_core::GUID, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDACreateTuneRequestEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDACreateTuneRequestEx_Impl::CreateTuneRequestEx(this, core::mem::transmute_copy(&tunerequestiid)) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateTuneRequestEx: CreateTuneRequestEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDACreateTuneRequestEx as windows_core::Interface>::IID
    }
}
pub trait IBDA_TIF_REGISTRATION_Impl: Sized {
    fn RegisterTIFEx(&self, ptifinputpin: Option<&super::IPin>, ppvregistrationcontext: *mut u32, ppmpeg2datacontrol: *mut Option<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn UnregisterTIF(&self, pvregistrationcontext: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_TIF_REGISTRATION {}
impl IBDA_TIF_REGISTRATION_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_TIF_REGISTRATION_Vtbl
    where
        Identity: IBDA_TIF_REGISTRATION_Impl,
    {
        unsafe extern "system" fn RegisterTIFEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptifinputpin: *mut core::ffi::c_void, ppvregistrationcontext: *mut u32, ppmpeg2datacontrol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_TIF_REGISTRATION_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_TIF_REGISTRATION_Impl::RegisterTIFEx(this, windows_core::from_raw_borrowed(&ptifinputpin), core::mem::transmute_copy(&ppvregistrationcontext), core::mem::transmute_copy(&ppmpeg2datacontrol)).into()
        }
        unsafe extern "system" fn UnregisterTIF<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvregistrationcontext: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_TIF_REGISTRATION_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_TIF_REGISTRATION_Impl::UnregisterTIF(this, core::mem::transmute_copy(&pvregistrationcontext)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterTIFEx: RegisterTIFEx::<Identity, OFFSET>,
            UnregisterTIF: UnregisterTIF::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_TIF_REGISTRATION as windows_core::Interface>::IID
    }
}
pub trait ICAT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self, dwtimeout: u32) -> windows_core::Result<ICAT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICAT {}
impl ICAT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICAT_Vtbl
    where
        Identity: ICAT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICAT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICAT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICAT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICAT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICAT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICAT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppcat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICAT_Impl::GetNextTable(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppcat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICAT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICAT_Impl::ConvertNextToCurrent(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICAT as windows_core::Interface>::IID
    }
}
pub trait ICaptionServiceDescriptor_Impl: Sized {
    fn GetNumberOfServices(&self) -> windows_core::Result<u8>;
    fn GetLanguageCode(&self, bindex: u8, langcode: *mut u8) -> windows_core::Result<()>;
    fn GetCaptionServiceNumber(&self, bindex: u8) -> windows_core::Result<u8>;
    fn GetCCType(&self, bindex: u8) -> windows_core::Result<u8>;
    fn GetEasyReader(&self, bindex: u8) -> windows_core::Result<u8>;
    fn GetWideAspectRatio(&self, bindex: u8) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for ICaptionServiceDescriptor {}
impl ICaptionServiceDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICaptionServiceDescriptor_Vtbl
    where
        Identity: ICaptionServiceDescriptor_Impl,
    {
        unsafe extern "system" fn GetNumberOfServices<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICaptionServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptionServiceDescriptor_Impl::GetNumberOfServices(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, langcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICaptionServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptionServiceDescriptor_Impl::GetLanguageCode(this, core::mem::transmute_copy(&bindex), core::mem::transmute_copy(&langcode)).into()
        }
        unsafe extern "system" fn GetCaptionServiceNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICaptionServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptionServiceDescriptor_Impl::GetCaptionServiceNumber(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCCType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICaptionServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptionServiceDescriptor_Impl::GetCCType(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEasyReader<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICaptionServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptionServiceDescriptor_Impl::GetEasyReader(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetWideAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ICaptionServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptionServiceDescriptor_Impl::GetWideAspectRatio(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfServices: GetNumberOfServices::<Identity, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, OFFSET>,
            GetCaptionServiceNumber: GetCaptionServiceNumber::<Identity, OFFSET>,
            GetCCType: GetCCType::<Identity, OFFSET>,
            GetEasyReader: GetEasyReader::<Identity, OFFSET>,
            GetWideAspectRatio: GetWideAspectRatio::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICaptionServiceDescriptor as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IChannelIDTuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn ChannelID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetChannelID(&self, channelid: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IChannelIDTuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl IChannelIDTuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IChannelIDTuneRequest_Vtbl
    where
        Identity: IChannelIDTuneRequest_Impl,
    {
        unsafe extern "system" fn ChannelID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, channelid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IChannelIDTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IChannelIDTuneRequest_Impl::ChannelID(this) {
                Ok(ok__) => {
                    channelid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetChannelID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, channelid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IChannelIDTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IChannelIDTuneRequest_Impl::SetChannelID(this, core::mem::transmute(&channelid)).into()
        }
        Self { base__: ITuneRequest_Vtbl::new::<Identity, OFFSET>(), ChannelID: ChannelID::<Identity, OFFSET>, SetChannelID: SetChannelID::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IChannelIDTuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuneRequest as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IChannelTuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn Channel(&self) -> windows_core::Result<i32>;
    fn SetChannel(&self, channel: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IChannelTuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl IChannelTuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IChannelTuneRequest_Vtbl
    where
        Identity: IChannelTuneRequest_Impl,
    {
        unsafe extern "system" fn Channel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, channel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IChannelTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IChannelTuneRequest_Impl::Channel(this) {
                Ok(ok__) => {
                    channel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, channel: i32) -> windows_core::HRESULT
        where
            Identity: IChannelTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IChannelTuneRequest_Impl::SetChannel(this, core::mem::transmute_copy(&channel)).into()
        }
        Self { base__: ITuneRequest_Vtbl::new::<Identity, OFFSET>(), Channel: Channel::<Identity, OFFSET>, SetChannel: SetChannel::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IChannelTuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuneRequest as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IComponent_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Type(&self) -> windows_core::Result<IComponentType>;
    fn SetType(&self, ct: Option<&IComponentType>) -> windows_core::Result<()>;
    fn DescLangID(&self) -> windows_core::Result<i32>;
    fn SetDescLangID(&self, langid: i32) -> windows_core::Result<()>;
    fn Status(&self) -> windows_core::Result<super::ComponentStatus>;
    fn SetStatus(&self, status: super::ComponentStatus) -> windows_core::Result<()>;
    fn Description(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetDescription(&self, description: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IComponent>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IComponent {}
#[cfg(feature = "Win32_System_Com")]
impl IComponent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IComponent_Vtbl
    where
        Identity: IComponent_Impl,
    {
        unsafe extern "system" fn Type<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ct: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponent_Impl::Type(this) {
                Ok(ok__) => {
                    ct.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ct: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponent_Impl::SetType(this, windows_core::from_raw_borrowed(&ct)).into()
        }
        unsafe extern "system" fn DescLangID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, langid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponent_Impl::DescLangID(this) {
                Ok(ok__) => {
                    langid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDescLangID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, langid: i32) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponent_Impl::SetDescLangID(this, core::mem::transmute_copy(&langid)).into()
        }
        unsafe extern "system" fn Status<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut super::ComponentStatus) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponent_Impl::Status(this) {
                Ok(ok__) => {
                    status.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: super::ComponentStatus) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponent_Impl::SetStatus(this, core::mem::transmute_copy(&status)).into()
        }
        unsafe extern "system" fn Description<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, description: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponent_Impl::Description(this) {
                Ok(ok__) => {
                    description.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, description: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponent_Impl::SetDescription(this, core::mem::transmute(&description)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newcomponent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponent_Impl::Clone(this) {
                Ok(ok__) => {
                    newcomponent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Type: Type::<Identity, OFFSET>,
            SetType: SetType::<Identity, OFFSET>,
            DescLangID: DescLangID::<Identity, OFFSET>,
            SetDescLangID: SetDescLangID::<Identity, OFFSET>,
            Status: Status::<Identity, OFFSET>,
            SetStatus: SetStatus::<Identity, OFFSET>,
            Description: Description::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComponent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IComponentType_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Category(&self) -> windows_core::Result<super::ComponentCategory>;
    fn SetCategory(&self, category: super::ComponentCategory) -> windows_core::Result<()>;
    fn MediaMajorType(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetMediaMajorType(&self, mediamajortype: &windows_core::BSTR) -> windows_core::Result<()>;
    fn _MediaMajorType(&self) -> windows_core::Result<windows_core::GUID>;
    fn Set_MediaMajorType(&self, mediamajortypeguid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn MediaSubType(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetMediaSubType(&self, mediasubtype: &windows_core::BSTR) -> windows_core::Result<()>;
    fn _MediaSubType(&self) -> windows_core::Result<windows_core::GUID>;
    fn Set_MediaSubType(&self, mediasubtypeguid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn MediaFormatType(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetMediaFormatType(&self, mediaformattype: &windows_core::BSTR) -> windows_core::Result<()>;
    fn _MediaFormatType(&self) -> windows_core::Result<windows_core::GUID>;
    fn Set_MediaFormatType(&self, mediaformattypeguid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn MediaType(&self) -> windows_core::Result<super::super::MediaFoundation::AM_MEDIA_TYPE>;
    fn SetMediaType(&self, mediatype: *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IComponentType>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IComponentType {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IComponentType_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IComponentType_Vtbl
    where
        Identity: IComponentType_Impl,
    {
        unsafe extern "system" fn Category<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, category: *mut super::ComponentCategory) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::Category(this) {
                Ok(ok__) => {
                    category.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, category: super::ComponentCategory) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::SetCategory(this, core::mem::transmute_copy(&category)).into()
        }
        unsafe extern "system" fn MediaMajorType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediamajortype: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::MediaMajorType(this) {
                Ok(ok__) => {
                    mediamajortype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaMajorType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediamajortype: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::SetMediaMajorType(this, core::mem::transmute(&mediamajortype)).into()
        }
        unsafe extern "system" fn _MediaMajorType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediamajortypeguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::_MediaMajorType(this) {
                Ok(ok__) => {
                    mediamajortypeguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_MediaMajorType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediamajortypeguid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::Set_MediaMajorType(this, core::mem::transmute_copy(&mediamajortypeguid)).into()
        }
        unsafe extern "system" fn MediaSubType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediasubtype: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::MediaSubType(this) {
                Ok(ok__) => {
                    mediasubtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaSubType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediasubtype: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::SetMediaSubType(this, core::mem::transmute(&mediasubtype)).into()
        }
        unsafe extern "system" fn _MediaSubType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediasubtypeguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::_MediaSubType(this) {
                Ok(ok__) => {
                    mediasubtypeguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_MediaSubType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediasubtypeguid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::Set_MediaSubType(this, core::mem::transmute_copy(&mediasubtypeguid)).into()
        }
        unsafe extern "system" fn MediaFormatType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediaformattype: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::MediaFormatType(this) {
                Ok(ok__) => {
                    mediaformattype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaFormatType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediaformattype: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::SetMediaFormatType(this, core::mem::transmute(&mediaformattype)).into()
        }
        unsafe extern "system" fn _MediaFormatType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediaformattypeguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::_MediaFormatType(this) {
                Ok(ok__) => {
                    mediaformattypeguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_MediaFormatType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediaformattypeguid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::Set_MediaFormatType(this, core::mem::transmute_copy(&mediaformattypeguid)).into()
        }
        unsafe extern "system" fn MediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediatype: *mut super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::MediaType(this) {
                Ok(ok__) => {
                    mediatype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mediatype: *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentType_Impl::SetMediaType(this, core::mem::transmute_copy(&mediatype)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newct: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentType_Impl::Clone(this) {
                Ok(ok__) => {
                    newct.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Category: Category::<Identity, OFFSET>,
            SetCategory: SetCategory::<Identity, OFFSET>,
            MediaMajorType: MediaMajorType::<Identity, OFFSET>,
            SetMediaMajorType: SetMediaMajorType::<Identity, OFFSET>,
            _MediaMajorType: _MediaMajorType::<Identity, OFFSET>,
            Set_MediaMajorType: Set_MediaMajorType::<Identity, OFFSET>,
            MediaSubType: MediaSubType::<Identity, OFFSET>,
            SetMediaSubType: SetMediaSubType::<Identity, OFFSET>,
            _MediaSubType: _MediaSubType::<Identity, OFFSET>,
            Set_MediaSubType: Set_MediaSubType::<Identity, OFFSET>,
            MediaFormatType: MediaFormatType::<Identity, OFFSET>,
            SetMediaFormatType: SetMediaFormatType::<Identity, OFFSET>,
            _MediaFormatType: _MediaFormatType::<Identity, OFFSET>,
            Set_MediaFormatType: Set_MediaFormatType::<Identity, OFFSET>,
            MediaType: MediaType::<Identity, OFFSET>,
            SetMediaType: SetMediaType::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComponentType as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponentTypes_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn EnumComponentTypes(&self) -> windows_core::Result<IEnumComponentTypes>;
    fn get_Item(&self, index: &windows_core::VARIANT) -> windows_core::Result<IComponentType>;
    fn put_Item(&self, index: &windows_core::VARIANT, componenttype: Option<&IComponentType>) -> windows_core::Result<()>;
    fn Add(&self, componenttype: Option<&IComponentType>) -> windows_core::Result<windows_core::VARIANT>;
    fn Remove(&self, index: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IComponentTypes>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IComponentTypes {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponentTypes_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IComponentTypes_Vtbl
    where
        Identity: IComponentTypes_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: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentTypes_Impl::Count(this) {
                Ok(ok__) => {
                    count.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, ppnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentTypes_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppnewenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumComponentTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentTypes_Impl::EnumComponentTypes(this) {
                Ok(ok__) => {
                    ppnewenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, componenttype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentTypes_Impl::get_Item(this, core::mem::transmute(&index)) {
                Ok(ok__) => {
                    componenttype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, componenttype: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentTypes_Impl::put_Item(this, core::mem::transmute(&index), windows_core::from_raw_borrowed(&componenttype)).into()
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, componenttype: *mut core::ffi::c_void, newindex: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentTypes_Impl::Add(this, windows_core::from_raw_borrowed(&componenttype)) {
                Ok(ok__) => {
                    newindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentTypes_Impl::Remove(this, core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentTypes_Impl::Clone(this) {
                Ok(ok__) => {
                    newlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            EnumComponentTypes: EnumComponentTypes::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            put_Item: put_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComponentTypes as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponents_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn EnumComponents(&self) -> windows_core::Result<IEnumComponents>;
    fn get_Item(&self, index: &windows_core::VARIANT) -> windows_core::Result<IComponent>;
    fn Add(&self, component: Option<&IComponent>) -> windows_core::Result<windows_core::VARIANT>;
    fn Remove(&self, index: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IComponents>;
    fn put_Item(&self, index: &windows_core::VARIANT, ppcomponent: Option<&IComponent>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IComponents {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IComponents_Vtbl
    where
        Identity: IComponents_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: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponents_Impl::Count(this) {
                Ok(ok__) => {
                    count.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, ppnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponents_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppnewenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumComponents<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponents_Impl::EnumComponents(this) {
                Ok(ok__) => {
                    ppnewenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, ppcomponent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponents_Impl::get_Item(this, core::mem::transmute(&index)) {
                Ok(ok__) => {
                    ppcomponent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, component: *mut core::ffi::c_void, newindex: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponents_Impl::Add(this, windows_core::from_raw_borrowed(&component)) {
                Ok(ok__) => {
                    newindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponents_Impl::Remove(this, core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponents_Impl::Clone(this) {
                Ok(ok__) => {
                    newlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, ppcomponent: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponents_Impl::put_Item(this, core::mem::transmute(&index), windows_core::from_raw_borrowed(&ppcomponent)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            EnumComponents: EnumComponents::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
            put_Item: put_Item::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComponents as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IComponentsOld_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn EnumComponents(&self) -> windows_core::Result<IEnumComponents>;
    fn get_Item(&self, index: &windows_core::VARIANT) -> windows_core::Result<IComponent>;
    fn Add(&self, component: Option<&IComponent>) -> windows_core::Result<windows_core::VARIANT>;
    fn Remove(&self, index: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IComponents>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IComponentsOld {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IComponentsOld_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IComponentsOld_Vtbl
    where
        Identity: IComponentsOld_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: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentsOld_Impl::Count(this) {
                Ok(ok__) => {
                    count.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, ppnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentsOld_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppnewenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumComponents<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentsOld_Impl::EnumComponents(this) {
                Ok(ok__) => {
                    ppnewenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>, ppcomponent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentsOld_Impl::get_Item(this, core::mem::transmute(&index)) {
                Ok(ok__) => {
                    ppcomponent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, component: *mut core::ffi::c_void, newindex: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentsOld_Impl::Add(this, windows_core::from_raw_borrowed(&component)) {
                Ok(ok__) => {
                    newindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IComponentsOld_Impl::Remove(this, core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IComponentsOld_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IComponentsOld_Impl::Clone(this) {
                Ok(ok__) => {
                    newlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            EnumComponents: EnumComponents::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComponentsOld as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
pub trait ICreatePropBagOnRegKey_Impl: Sized {
    fn Create(&self, hkey: super::super::super::System::Registry::HKEY, subkey: &windows_core::PCWSTR, uloptions: u32, samdesired: u32, iid: *const windows_core::GUID, ppbag: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Registry")]
impl windows_core::RuntimeName for ICreatePropBagOnRegKey {}
#[cfg(feature = "Win32_System_Registry")]
impl ICreatePropBagOnRegKey_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICreatePropBagOnRegKey_Vtbl
    where
        Identity: ICreatePropBagOnRegKey_Impl,
    {
        unsafe extern "system" fn Create<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hkey: super::super::super::System::Registry::HKEY, subkey: windows_core::PCWSTR, uloptions: u32, samdesired: u32, iid: *const windows_core::GUID, ppbag: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICreatePropBagOnRegKey_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreatePropBagOnRegKey_Impl::Create(this, core::mem::transmute_copy(&hkey), core::mem::transmute(&subkey), core::mem::transmute_copy(&uloptions), core::mem::transmute_copy(&samdesired), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&ppbag)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Create: Create::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICreatePropBagOnRegKey as windows_core::Interface>::IID
    }
}
pub trait IDTFilter_Impl: Sized {
    fn EvalRatObjOK(&self) -> windows_core::Result<windows_core::HRESULT>;
    fn GetCurrRating(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::Result<()>;
    fn get_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel) -> windows_core::Result<i32>;
    fn put_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> windows_core::Result<()>;
    fn BlockUnRated(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn SetBlockUnRated(&self, fblockunratedshows: super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn BlockUnRatedDelay(&self) -> windows_core::Result<i32>;
    fn SetBlockUnRatedDelay(&self, msecsdelaybeforeblock: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDTFilter {}
impl IDTFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDTFilter_Vtbl
    where
        Identity: IDTFilter_Impl,
    {
        unsafe extern "system" fn EvalRatObjOK<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phrcocreateretval: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter_Impl::EvalRatObjOK(this) {
                Ok(ok__) => {
                    phrcocreateretval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrRating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilter_Impl::GetCurrRating(this, core::mem::transmute_copy(&pensystem), core::mem::transmute_copy(&penrating), core::mem::transmute_copy(&plbfenattr)).into()
        }
        unsafe extern "system" fn get_BlockedRatingAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter_Impl::get_BlockedRatingAttributes(this, core::mem::transmute_copy(&ensystem), core::mem::transmute_copy(&enlevel)) {
                Ok(ok__) => {
                    plbfenattr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_BlockedRatingAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilter_Impl::put_BlockedRatingAttributes(this, core::mem::transmute_copy(&ensystem), core::mem::transmute_copy(&enlevel), core::mem::transmute_copy(&lbfattrs)).into()
        }
        unsafe extern "system" fn BlockUnRated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfblockunratedshows: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter_Impl::BlockUnRated(this) {
                Ok(ok__) => {
                    pfblockunratedshows.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBlockUnRated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fblockunratedshows: super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilter_Impl::SetBlockUnRated(this, core::mem::transmute_copy(&fblockunratedshows)).into()
        }
        unsafe extern "system" fn BlockUnRatedDelay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsecsdelaybeforeblock: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter_Impl::BlockUnRatedDelay(this) {
                Ok(ok__) => {
                    pmsecsdelaybeforeblock.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBlockUnRatedDelay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, msecsdelaybeforeblock: i32) -> windows_core::HRESULT
        where
            Identity: IDTFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilter_Impl::SetBlockUnRatedDelay(this, core::mem::transmute_copy(&msecsdelaybeforeblock)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EvalRatObjOK: EvalRatObjOK::<Identity, OFFSET>,
            GetCurrRating: GetCurrRating::<Identity, OFFSET>,
            get_BlockedRatingAttributes: get_BlockedRatingAttributes::<Identity, OFFSET>,
            put_BlockedRatingAttributes: put_BlockedRatingAttributes::<Identity, OFFSET>,
            BlockUnRated: BlockUnRated::<Identity, OFFSET>,
            SetBlockUnRated: SetBlockUnRated::<Identity, OFFSET>,
            BlockUnRatedDelay: BlockUnRatedDelay::<Identity, OFFSET>,
            SetBlockUnRatedDelay: SetBlockUnRatedDelay::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDTFilter as windows_core::Interface>::IID
    }
}
pub trait IDTFilter2_Impl: Sized + IDTFilter_Impl {
    fn ChallengeUrl(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> windows_core::Result<i32>;
    fn GetLastErrorCode(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDTFilter2 {}
impl IDTFilter2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDTFilter2_Vtbl
    where
        Identity: IDTFilter2_Impl,
    {
        unsafe extern "system" fn ChallengeUrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrchallengeurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDTFilter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter2_Impl::ChallengeUrl(this) {
                Ok(ok__) => {
                    pbstrchallengeurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrLicenseExpDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prottype: *const ProtType, lpdatetime: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDTFilter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter2_Impl::GetCurrLicenseExpDate(this, core::mem::transmute_copy(&prottype)) {
                Ok(ok__) => {
                    lpdatetime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastErrorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDTFilter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilter2_Impl::GetLastErrorCode(this).into()
        }
        Self {
            base__: IDTFilter_Vtbl::new::<Identity, OFFSET>(),
            ChallengeUrl: ChallengeUrl::<Identity, OFFSET>,
            GetCurrLicenseExpDate: GetCurrLicenseExpDate::<Identity, OFFSET>,
            GetLastErrorCode: GetLastErrorCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDTFilter2 as windows_core::Interface>::IID || iid == &<IDTFilter as windows_core::Interface>::IID
    }
}
pub trait IDTFilter3_Impl: Sized + IDTFilter2_Impl {
    fn GetProtectionType(&self) -> windows_core::Result<ProtType>;
    fn LicenseHasExpirationDate(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn SetRights(&self, bstrrights: &windows_core::BSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDTFilter3 {}
impl IDTFilter3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDTFilter3_Vtbl
    where
        Identity: IDTFilter3_Impl,
    {
        unsafe extern "system" fn GetProtectionType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprotectiontype: *mut ProtType) -> windows_core::HRESULT
        where
            Identity: IDTFilter3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter3_Impl::GetProtectionType(this) {
                Ok(ok__) => {
                    pprotectiontype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LicenseHasExpirationDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflicensehasexpirationdate: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDTFilter3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilter3_Impl::LicenseHasExpirationDate(this) {
                Ok(ok__) => {
                    pflicensehasexpirationdate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRights<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrrights: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDTFilter3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilter3_Impl::SetRights(this, core::mem::transmute(&bstrrights)).into()
        }
        Self {
            base__: IDTFilter2_Vtbl::new::<Identity, OFFSET>(),
            GetProtectionType: GetProtectionType::<Identity, OFFSET>,
            LicenseHasExpirationDate: LicenseHasExpirationDate::<Identity, OFFSET>,
            SetRights: SetRights::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDTFilter3 as windows_core::Interface>::IID || iid == &<IDTFilter as windows_core::Interface>::IID || iid == &<IDTFilter2 as windows_core::Interface>::IID
    }
}
pub trait IDTFilterConfig_Impl: Sized {
    fn GetSecureChannelObject(&self) -> windows_core::Result<windows_core::IUnknown>;
}
impl windows_core::RuntimeName for IDTFilterConfig {}
impl IDTFilterConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDTFilterConfig_Vtbl
    where
        Identity: IDTFilterConfig_Impl,
    {
        unsafe extern "system" fn GetSecureChannelObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunkdrmsecurechannel: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDTFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDTFilterConfig_Impl::GetSecureChannelObject(this) {
                Ok(ok__) => {
                    ppunkdrmsecurechannel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSecureChannelObject: GetSecureChannelObject::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDTFilterConfig as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDTFilterEvents_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDTFilterEvents {}
#[cfg(feature = "Win32_System_Com")]
impl IDTFilterEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDTFilterEvents_Vtbl
    where
        Identity: IDTFilterEvents_Impl,
    {
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDTFilterEvents as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IDTFilterLicenseRenewal_Impl: Sized {
    fn GetLicenseRenewalData(&self, ppwszfilename: *mut windows_core::PWSTR, ppwszexpiredkid: *mut windows_core::PWSTR, ppwsztunerid: *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDTFilterLicenseRenewal {}
impl IDTFilterLicenseRenewal_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDTFilterLicenseRenewal_Vtbl
    where
        Identity: IDTFilterLicenseRenewal_Impl,
    {
        unsafe extern "system" fn GetLicenseRenewalData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwszfilename: *mut windows_core::PWSTR, ppwszexpiredkid: *mut windows_core::PWSTR, ppwsztunerid: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IDTFilterLicenseRenewal_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDTFilterLicenseRenewal_Impl::GetLicenseRenewalData(this, core::mem::transmute_copy(&ppwszfilename), core::mem::transmute_copy(&ppwszexpiredkid), core::mem::transmute_copy(&ppwsztunerid)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetLicenseRenewalData: GetLicenseRenewalData::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDTFilterLicenseRenewal as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBCLocator_Impl: Sized + IDigitalLocator_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBCLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBCLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBCLocator_Vtbl
    where
        Identity: IDVBCLocator_Impl,
    {
        Self { base__: IDigitalLocator_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBCLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBSLocator_Impl: Sized + IDigitalLocator_Impl {
    fn SignalPolarisation(&self) -> windows_core::Result<super::Polarisation>;
    fn SetSignalPolarisation(&self, polarisationval: super::Polarisation) -> windows_core::Result<()>;
    fn WestPosition(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetWestPosition(&self, westlongitude: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn OrbitalPosition(&self) -> windows_core::Result<i32>;
    fn SetOrbitalPosition(&self, longitude: i32) -> windows_core::Result<()>;
    fn Azimuth(&self) -> windows_core::Result<i32>;
    fn SetAzimuth(&self, azimuth: i32) -> windows_core::Result<()>;
    fn Elevation(&self) -> windows_core::Result<i32>;
    fn SetElevation(&self, elevation: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBSLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBSLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBSLocator_Vtbl
    where
        Identity: IDVBSLocator_Impl,
    {
        unsafe extern "system" fn SignalPolarisation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, polarisationval: *mut super::Polarisation) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator_Impl::SignalPolarisation(this) {
                Ok(ok__) => {
                    polarisationval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSignalPolarisation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, polarisationval: super::Polarisation) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator_Impl::SetSignalPolarisation(this, core::mem::transmute_copy(&polarisationval)).into()
        }
        unsafe extern "system" fn WestPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, westlongitude: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator_Impl::WestPosition(this) {
                Ok(ok__) => {
                    westlongitude.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWestPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, westlongitude: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator_Impl::SetWestPosition(this, core::mem::transmute_copy(&westlongitude)).into()
        }
        unsafe extern "system" fn OrbitalPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, longitude: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator_Impl::OrbitalPosition(this) {
                Ok(ok__) => {
                    longitude.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOrbitalPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, longitude: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator_Impl::SetOrbitalPosition(this, core::mem::transmute_copy(&longitude)).into()
        }
        unsafe extern "system" fn Azimuth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, azimuth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator_Impl::Azimuth(this) {
                Ok(ok__) => {
                    azimuth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAzimuth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, azimuth: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator_Impl::SetAzimuth(this, core::mem::transmute_copy(&azimuth)).into()
        }
        unsafe extern "system" fn Elevation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, elevation: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator_Impl::Elevation(this) {
                Ok(ok__) => {
                    elevation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetElevation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, elevation: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator_Impl::SetElevation(this, core::mem::transmute_copy(&elevation)).into()
        }
        Self {
            base__: IDigitalLocator_Vtbl::new::<Identity, OFFSET>(),
            SignalPolarisation: SignalPolarisation::<Identity, OFFSET>,
            SetSignalPolarisation: SetSignalPolarisation::<Identity, OFFSET>,
            WestPosition: WestPosition::<Identity, OFFSET>,
            SetWestPosition: SetWestPosition::<Identity, OFFSET>,
            OrbitalPosition: OrbitalPosition::<Identity, OFFSET>,
            SetOrbitalPosition: SetOrbitalPosition::<Identity, OFFSET>,
            Azimuth: Azimuth::<Identity, OFFSET>,
            SetAzimuth: SetAzimuth::<Identity, OFFSET>,
            Elevation: Elevation::<Identity, OFFSET>,
            SetElevation: SetElevation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBSLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBSLocator2_Impl: Sized + IDVBSLocator_Impl {
    fn DiseqLNBSource(&self) -> windows_core::Result<super::LNB_Source>;
    fn SetDiseqLNBSource(&self, diseqlnbsourceval: super::LNB_Source) -> windows_core::Result<()>;
    fn LocalOscillatorOverrideLow(&self) -> windows_core::Result<i32>;
    fn SetLocalOscillatorOverrideLow(&self, localoscillatoroverridelowval: i32) -> windows_core::Result<()>;
    fn LocalOscillatorOverrideHigh(&self) -> windows_core::Result<i32>;
    fn SetLocalOscillatorOverrideHigh(&self, localoscillatoroverridehighval: i32) -> windows_core::Result<()>;
    fn LocalLNBSwitchOverride(&self) -> windows_core::Result<i32>;
    fn SetLocalLNBSwitchOverride(&self, locallnbswitchoverrideval: i32) -> windows_core::Result<()>;
    fn LocalSpectralInversionOverride(&self) -> windows_core::Result<super::SpectralInversion>;
    fn SetLocalSpectralInversionOverride(&self, localspectralinversionoverrideval: super::SpectralInversion) -> windows_core::Result<()>;
    fn SignalRollOff(&self) -> windows_core::Result<super::RollOff>;
    fn SetSignalRollOff(&self, rolloffval: super::RollOff) -> windows_core::Result<()>;
    fn SignalPilot(&self) -> windows_core::Result<super::Pilot>;
    fn SetSignalPilot(&self, pilotval: super::Pilot) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBSLocator2 {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBSLocator2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBSLocator2_Vtbl
    where
        Identity: IDVBSLocator2_Impl,
    {
        unsafe extern "system" fn DiseqLNBSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, diseqlnbsourceval: *mut super::LNB_Source) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::DiseqLNBSource(this) {
                Ok(ok__) => {
                    diseqlnbsourceval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDiseqLNBSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, diseqlnbsourceval: super::LNB_Source) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetDiseqLNBSource(this, core::mem::transmute_copy(&diseqlnbsourceval)).into()
        }
        unsafe extern "system" fn LocalOscillatorOverrideLow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localoscillatoroverridelowval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::LocalOscillatorOverrideLow(this) {
                Ok(ok__) => {
                    localoscillatoroverridelowval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalOscillatorOverrideLow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localoscillatoroverridelowval: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetLocalOscillatorOverrideLow(this, core::mem::transmute_copy(&localoscillatoroverridelowval)).into()
        }
        unsafe extern "system" fn LocalOscillatorOverrideHigh<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localoscillatoroverridehighval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::LocalOscillatorOverrideHigh(this) {
                Ok(ok__) => {
                    localoscillatoroverridehighval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalOscillatorOverrideHigh<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localoscillatoroverridehighval: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetLocalOscillatorOverrideHigh(this, core::mem::transmute_copy(&localoscillatoroverridehighval)).into()
        }
        unsafe extern "system" fn LocalLNBSwitchOverride<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locallnbswitchoverrideval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::LocalLNBSwitchOverride(this) {
                Ok(ok__) => {
                    locallnbswitchoverrideval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalLNBSwitchOverride<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locallnbswitchoverrideval: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetLocalLNBSwitchOverride(this, core::mem::transmute_copy(&locallnbswitchoverrideval)).into()
        }
        unsafe extern "system" fn LocalSpectralInversionOverride<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localspectralinversionoverrideval: *mut super::SpectralInversion) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::LocalSpectralInversionOverride(this) {
                Ok(ok__) => {
                    localspectralinversionoverrideval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalSpectralInversionOverride<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, localspectralinversionoverrideval: super::SpectralInversion) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetLocalSpectralInversionOverride(this, core::mem::transmute_copy(&localspectralinversionoverrideval)).into()
        }
        unsafe extern "system" fn SignalRollOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rolloffval: *mut super::RollOff) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::SignalRollOff(this) {
                Ok(ok__) => {
                    rolloffval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSignalRollOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rolloffval: super::RollOff) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetSignalRollOff(this, core::mem::transmute_copy(&rolloffval)).into()
        }
        unsafe extern "system" fn SignalPilot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pilotval: *mut super::Pilot) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSLocator2_Impl::SignalPilot(this) {
                Ok(ok__) => {
                    pilotval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSignalPilot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pilotval: super::Pilot) -> windows_core::HRESULT
        where
            Identity: IDVBSLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSLocator2_Impl::SetSignalPilot(this, core::mem::transmute_copy(&pilotval)).into()
        }
        Self {
            base__: IDVBSLocator_Vtbl::new::<Identity, OFFSET>(),
            DiseqLNBSource: DiseqLNBSource::<Identity, OFFSET>,
            SetDiseqLNBSource: SetDiseqLNBSource::<Identity, OFFSET>,
            LocalOscillatorOverrideLow: LocalOscillatorOverrideLow::<Identity, OFFSET>,
            SetLocalOscillatorOverrideLow: SetLocalOscillatorOverrideLow::<Identity, OFFSET>,
            LocalOscillatorOverrideHigh: LocalOscillatorOverrideHigh::<Identity, OFFSET>,
            SetLocalOscillatorOverrideHigh: SetLocalOscillatorOverrideHigh::<Identity, OFFSET>,
            LocalLNBSwitchOverride: LocalLNBSwitchOverride::<Identity, OFFSET>,
            SetLocalLNBSwitchOverride: SetLocalLNBSwitchOverride::<Identity, OFFSET>,
            LocalSpectralInversionOverride: LocalSpectralInversionOverride::<Identity, OFFSET>,
            SetLocalSpectralInversionOverride: SetLocalSpectralInversionOverride::<Identity, OFFSET>,
            SignalRollOff: SignalRollOff::<Identity, OFFSET>,
            SetSignalRollOff: SetSignalRollOff::<Identity, OFFSET>,
            SignalPilot: SignalPilot::<Identity, OFFSET>,
            SetSignalPilot: SetSignalPilot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBSLocator2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID || iid == &<IDVBSLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBSTuningSpace_Impl: Sized + IDVBTuningSpace2_Impl {
    fn LowOscillator(&self) -> windows_core::Result<i32>;
    fn SetLowOscillator(&self, lowoscillator: i32) -> windows_core::Result<()>;
    fn HighOscillator(&self) -> windows_core::Result<i32>;
    fn SetHighOscillator(&self, highoscillator: i32) -> windows_core::Result<()>;
    fn LNBSwitch(&self) -> windows_core::Result<i32>;
    fn SetLNBSwitch(&self, lnbswitch: i32) -> windows_core::Result<()>;
    fn InputRange(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetInputRange(&self, inputrange: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SpectralInversion(&self) -> windows_core::Result<super::SpectralInversion>;
    fn SetSpectralInversion(&self, spectralinversionval: super::SpectralInversion) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBSTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBSTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBSTuningSpace_Vtbl
    where
        Identity: IDVBSTuningSpace_Impl,
    {
        unsafe extern "system" fn LowOscillator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lowoscillator: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSTuningSpace_Impl::LowOscillator(this) {
                Ok(ok__) => {
                    lowoscillator.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLowOscillator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lowoscillator: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSTuningSpace_Impl::SetLowOscillator(this, core::mem::transmute_copy(&lowoscillator)).into()
        }
        unsafe extern "system" fn HighOscillator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, highoscillator: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSTuningSpace_Impl::HighOscillator(this) {
                Ok(ok__) => {
                    highoscillator.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHighOscillator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, highoscillator: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSTuningSpace_Impl::SetHighOscillator(this, core::mem::transmute_copy(&highoscillator)).into()
        }
        unsafe extern "system" fn LNBSwitch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lnbswitch: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSTuningSpace_Impl::LNBSwitch(this) {
                Ok(ok__) => {
                    lnbswitch.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLNBSwitch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lnbswitch: i32) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSTuningSpace_Impl::SetLNBSwitch(this, core::mem::transmute_copy(&lnbswitch)).into()
        }
        unsafe extern "system" fn InputRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, inputrange: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSTuningSpace_Impl::InputRange(this) {
                Ok(ok__) => {
                    inputrange.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInputRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, inputrange: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSTuningSpace_Impl::SetInputRange(this, core::mem::transmute(&inputrange)).into()
        }
        unsafe extern "system" fn SpectralInversion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, spectralinversionval: *mut super::SpectralInversion) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBSTuningSpace_Impl::SpectralInversion(this) {
                Ok(ok__) => {
                    spectralinversionval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSpectralInversion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, spectralinversionval: super::SpectralInversion) -> windows_core::HRESULT
        where
            Identity: IDVBSTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBSTuningSpace_Impl::SetSpectralInversion(this, core::mem::transmute_copy(&spectralinversionval)).into()
        }
        Self {
            base__: IDVBTuningSpace2_Vtbl::new::<Identity, OFFSET>(),
            LowOscillator: LowOscillator::<Identity, OFFSET>,
            SetLowOscillator: SetLowOscillator::<Identity, OFFSET>,
            HighOscillator: HighOscillator::<Identity, OFFSET>,
            SetHighOscillator: SetHighOscillator::<Identity, OFFSET>,
            LNBSwitch: LNBSwitch::<Identity, OFFSET>,
            SetLNBSwitch: SetLNBSwitch::<Identity, OFFSET>,
            InputRange: InputRange::<Identity, OFFSET>,
            SetInputRange: SetInputRange::<Identity, OFFSET>,
            SpectralInversion: SpectralInversion::<Identity, OFFSET>,
            SetSpectralInversion: SetSpectralInversion::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBSTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<IDVBTuningSpace as windows_core::Interface>::IID || iid == &<IDVBTuningSpace2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBTLocator_Impl: Sized + IDigitalLocator_Impl {
    fn Bandwidth(&self) -> windows_core::Result<i32>;
    fn SetBandwidth(&self, bandwidthval: i32) -> windows_core::Result<()>;
    fn LPInnerFEC(&self) -> windows_core::Result<super::FECMethod>;
    fn SetLPInnerFEC(&self, fec: super::FECMethod) -> windows_core::Result<()>;
    fn LPInnerFECRate(&self) -> windows_core::Result<super::BinaryConvolutionCodeRate>;
    fn SetLPInnerFECRate(&self, fec: super::BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn HAlpha(&self) -> windows_core::Result<super::HierarchyAlpha>;
    fn SetHAlpha(&self, alpha: super::HierarchyAlpha) -> windows_core::Result<()>;
    fn Guard(&self) -> windows_core::Result<super::GuardInterval>;
    fn SetGuard(&self, gi: super::GuardInterval) -> windows_core::Result<()>;
    fn Mode(&self) -> windows_core::Result<super::TransmissionMode>;
    fn SetMode(&self, mode: super::TransmissionMode) -> windows_core::Result<()>;
    fn OtherFrequencyInUse(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetOtherFrequencyInUse(&self, otherfrequencyinuseval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBTLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBTLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBTLocator_Vtbl
    where
        Identity: IDVBTLocator_Impl,
    {
        unsafe extern "system" fn Bandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bandwidthval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::Bandwidth(this) {
                Ok(ok__) => {
                    bandwidthval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bandwidthval: i32) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetBandwidth(this, core::mem::transmute_copy(&bandwidthval)).into()
        }
        unsafe extern "system" fn LPInnerFEC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: *mut super::FECMethod) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::LPInnerFEC(this) {
                Ok(ok__) => {
                    fec.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLPInnerFEC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: super::FECMethod) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetLPInnerFEC(this, core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn LPInnerFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: *mut super::BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::LPInnerFECRate(this) {
                Ok(ok__) => {
                    fec.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLPInnerFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: super::BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetLPInnerFECRate(this, core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn HAlpha<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, alpha: *mut super::HierarchyAlpha) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::HAlpha(this) {
                Ok(ok__) => {
                    alpha.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHAlpha<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, alpha: super::HierarchyAlpha) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetHAlpha(this, core::mem::transmute_copy(&alpha)).into()
        }
        unsafe extern "system" fn Guard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, gi: *mut super::GuardInterval) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::Guard(this) {
                Ok(ok__) => {
                    gi.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetGuard<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, gi: super::GuardInterval) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetGuard(this, core::mem::transmute_copy(&gi)).into()
        }
        unsafe extern "system" fn Mode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: *mut super::TransmissionMode) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::Mode(this) {
                Ok(ok__) => {
                    mode.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, mode: super::TransmissionMode) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn OtherFrequencyInUse<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, otherfrequencyinuseval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator_Impl::OtherFrequencyInUse(this) {
                Ok(ok__) => {
                    otherfrequencyinuseval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOtherFrequencyInUse<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, otherfrequencyinuseval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator_Impl::SetOtherFrequencyInUse(this, core::mem::transmute_copy(&otherfrequencyinuseval)).into()
        }
        Self {
            base__: IDigitalLocator_Vtbl::new::<Identity, OFFSET>(),
            Bandwidth: Bandwidth::<Identity, OFFSET>,
            SetBandwidth: SetBandwidth::<Identity, OFFSET>,
            LPInnerFEC: LPInnerFEC::<Identity, OFFSET>,
            SetLPInnerFEC: SetLPInnerFEC::<Identity, OFFSET>,
            LPInnerFECRate: LPInnerFECRate::<Identity, OFFSET>,
            SetLPInnerFECRate: SetLPInnerFECRate::<Identity, OFFSET>,
            HAlpha: HAlpha::<Identity, OFFSET>,
            SetHAlpha: SetHAlpha::<Identity, OFFSET>,
            Guard: Guard::<Identity, OFFSET>,
            SetGuard: SetGuard::<Identity, OFFSET>,
            Mode: Mode::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            OtherFrequencyInUse: OtherFrequencyInUse::<Identity, OFFSET>,
            SetOtherFrequencyInUse: SetOtherFrequencyInUse::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBTLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBTLocator2_Impl: Sized + IDVBTLocator_Impl {
    fn PhysicalLayerPipeId(&self) -> windows_core::Result<i32>;
    fn SetPhysicalLayerPipeId(&self, physicallayerpipeidval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBTLocator2 {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBTLocator2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBTLocator2_Vtbl
    where
        Identity: IDVBTLocator2_Impl,
    {
        unsafe extern "system" fn PhysicalLayerPipeId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, physicallayerpipeidval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTLocator2_Impl::PhysicalLayerPipeId(this) {
                Ok(ok__) => {
                    physicallayerpipeidval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPhysicalLayerPipeId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, physicallayerpipeidval: i32) -> windows_core::HRESULT
        where
            Identity: IDVBTLocator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTLocator2_Impl::SetPhysicalLayerPipeId(this, core::mem::transmute_copy(&physicallayerpipeidval)).into()
        }
        Self {
            base__: IDVBTLocator_Vtbl::new::<Identity, OFFSET>(),
            PhysicalLayerPipeId: PhysicalLayerPipeId::<Identity, OFFSET>,
            SetPhysicalLayerPipeId: SetPhysicalLayerPipeId::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBTLocator2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID || iid == &<IDVBTLocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBTuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn ONID(&self) -> windows_core::Result<i32>;
    fn SetONID(&self, onid: i32) -> windows_core::Result<()>;
    fn TSID(&self) -> windows_core::Result<i32>;
    fn SetTSID(&self, tsid: i32) -> windows_core::Result<()>;
    fn SID(&self) -> windows_core::Result<i32>;
    fn SetSID(&self, sid: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBTuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBTuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBTuneRequest_Vtbl
    where
        Identity: IDVBTuneRequest_Impl,
    {
        unsafe extern "system" fn ONID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, onid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTuneRequest_Impl::ONID(this) {
                Ok(ok__) => {
                    onid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetONID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, onid: i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTuneRequest_Impl::SetONID(this, core::mem::transmute_copy(&onid)).into()
        }
        unsafe extern "system" fn TSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tsid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTuneRequest_Impl::TSID(this) {
                Ok(ok__) => {
                    tsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tsid: i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTuneRequest_Impl::SetTSID(this, core::mem::transmute_copy(&tsid)).into()
        }
        unsafe extern "system" fn SID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTuneRequest_Impl::SID(this) {
                Ok(ok__) => {
                    sid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sid: i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTuneRequest_Impl::SetSID(this, core::mem::transmute_copy(&sid)).into()
        }
        Self {
            base__: ITuneRequest_Vtbl::new::<Identity, OFFSET>(),
            ONID: ONID::<Identity, OFFSET>,
            SetONID: SetONID::<Identity, OFFSET>,
            TSID: TSID::<Identity, OFFSET>,
            SetTSID: SetTSID::<Identity, OFFSET>,
            SID: SID::<Identity, OFFSET>,
            SetSID: SetSID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBTuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuneRequest as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBTuningSpace_Impl: Sized + ITuningSpace_Impl {
    fn SystemType(&self) -> windows_core::Result<super::DVBSystemType>;
    fn SetSystemType(&self, systype: super::DVBSystemType) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBTuningSpace_Vtbl
    where
        Identity: IDVBTuningSpace_Impl,
    {
        unsafe extern "system" fn SystemType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, systype: *mut super::DVBSystemType) -> windows_core::HRESULT
        where
            Identity: IDVBTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTuningSpace_Impl::SystemType(this) {
                Ok(ok__) => {
                    systype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSystemType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, systype: super::DVBSystemType) -> windows_core::HRESULT
        where
            Identity: IDVBTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTuningSpace_Impl::SetSystemType(this, core::mem::transmute_copy(&systype)).into()
        }
        Self {
            base__: ITuningSpace_Vtbl::new::<Identity, OFFSET>(),
            SystemType: SystemType::<Identity, OFFSET>,
            SetSystemType: SetSystemType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDVBTuningSpace2_Impl: Sized + IDVBTuningSpace_Impl {
    fn NetworkID(&self) -> windows_core::Result<i32>;
    fn SetNetworkID(&self, networkid: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDVBTuningSpace2 {}
#[cfg(feature = "Win32_System_Com")]
impl IDVBTuningSpace2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVBTuningSpace2_Vtbl
    where
        Identity: IDVBTuningSpace2_Impl,
    {
        unsafe extern "system" fn NetworkID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, networkid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuningSpace2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVBTuningSpace2_Impl::NetworkID(this) {
                Ok(ok__) => {
                    networkid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNetworkID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, networkid: i32) -> windows_core::HRESULT
        where
            Identity: IDVBTuningSpace2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVBTuningSpace2_Impl::SetNetworkID(this, core::mem::transmute_copy(&networkid)).into()
        }
        Self {
            base__: IDVBTuningSpace_Vtbl::new::<Identity, OFFSET>(),
            NetworkID: NetworkID::<Identity, OFFSET>,
            SetNetworkID: SetNetworkID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVBTuningSpace2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<IDVBTuningSpace as windows_core::Interface>::IID
    }
}
pub trait IDVB_BAT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetBouquetId(&self) -> windows_core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32, ppdescriptor: *const Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<IDVB_BAT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDVB_BAT {}
impl IDVB_BAT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_BAT_Vtbl
    where
        Identity: IDVB_BAT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBouquetId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetBouquetId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *const *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetRecordTransportStreamId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetRecordOriginalNetworkId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_BAT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    ppbat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_BAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_BAT_Impl::ConvertNextToCurrent(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetBouquetId: GetBouquetId::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, OFFSET>,
            GetRecordOriginalNetworkId: GetRecordOriginalNetworkId::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_BAT as windows_core::Interface>::IID
    }
}
pub trait IDVB_DIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>) -> windows_core::Result<()>;
    fn GetTransitionFlag(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for IDVB_DIT {}
impl IDVB_DIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_DIT_Vtbl
    where
        Identity: IDVB_DIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_DIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_DIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist)).into()
        }
        unsafe extern "system" fn GetTransitionFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDVB_DIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_DIT_Impl::GetTransitionFlag(this) {
                Ok(ok__) => {
                    pfval.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>,
            GetTransitionFlag: GetTransitionFlag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_DIT as windows_core::Interface>::IID
    }
}
pub trait IDVB_EIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetServiceId(&self) -> windows_core::Result<u16>;
    fn GetTransportStreamId(&self) -> windows_core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetSegmentLastSectionNumber(&self) -> windows_core::Result<u8>;
    fn GetLastTableId(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordStartTime(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordDuration(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_TIME>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordFreeCAMode(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<IDVB_EIT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IDVB_EIT {}
impl IDVB_EIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_EIT_Vtbl
    where
        Identity: IDVB_EIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_EIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetServiceId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetTransportStreamId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSegmentLastSectionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetSegmentLastSectionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastTableId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetLastTableId(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordEventId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordStartTime(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pmdtval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pmdval: *mut MPEG_TIME) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordDuration(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pmdval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordRunningStatus(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordFreeCAMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordFreeCAMode(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_EIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_EIT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppeit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    ppeit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_EIT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_EIT_Impl::ConvertNextToCurrent(this).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetServiceId: GetServiceId::<Identity, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetSegmentLastSectionNumber: GetSegmentLastSectionNumber::<Identity, OFFSET>,
            GetLastTableId: GetLastTableId::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, OFFSET>,
            GetRecordStartTime: GetRecordStartTime::<Identity, OFFSET>,
            GetRecordDuration: GetRecordDuration::<Identity, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, OFFSET>,
            GetRecordFreeCAMode: GetRecordFreeCAMode::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_EIT as windows_core::Interface>::IID
    }
}
pub trait IDVB_EIT2_Impl: Sized + IDVB_EIT_Impl {
    fn GetSegmentInfo(&self, pbtid: *mut u8, pbsegment: *mut u8) -> windows_core::Result<()>;
    fn GetRecordSection(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDVB_EIT2 {}
impl IDVB_EIT2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_EIT2_Vtbl
    where
        Identity: IDVB_EIT2_Impl,
    {
        unsafe extern "system" fn GetSegmentInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbtid: *mut u8, pbsegment: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_EIT2_Impl::GetSegmentInfo(this, core::mem::transmute_copy(&pbtid), core::mem::transmute_copy(&pbsegment)).into()
        }
        unsafe extern "system" fn GetRecordSection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_EIT2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_EIT2_Impl::GetRecordSection(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IDVB_EIT_Vtbl::new::<Identity, OFFSET>(),
            GetSegmentInfo: GetSegmentInfo::<Identity, OFFSET>,
            GetRecordSection: GetRecordSection::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_EIT2 as windows_core::Interface>::IID || iid == &<IDVB_EIT as windows_core::Interface>::IID
    }
}
pub trait IDVB_NIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetNetworkId(&self) -> windows_core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<IDVB_NIT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IDVB_NIT {}
impl IDVB_NIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_NIT_Vtbl
    where
        Identity: IDVB_NIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_NIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_NIT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetRecordTransportStreamId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetRecordOriginalNetworkId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_NIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_NIT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppnit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    ppnit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_NIT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_NIT_Impl::ConvertNextToCurrent(this).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_NIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_NIT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetNetworkId: GetNetworkId::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, OFFSET>,
            GetRecordOriginalNetworkId: GetRecordOriginalNetworkId::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_NIT as windows_core::Interface>::IID
    }
}
pub trait IDVB_RST_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordTransportStreamId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordOriginalNetworkId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordServiceId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDVB_RST {}
impl IDVB_RST_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_RST_Vtbl
    where
        Identity: IDVB_RST_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_RST_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_RST_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_RST_Impl::GetRecordTransportStreamId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_RST_Impl::GetRecordOriginalNetworkId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_RST_Impl::GetRecordServiceId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_RST_Impl::GetRecordEventId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_RST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_RST_Impl::GetRecordRunningStatus(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.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>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordTransportStreamId: GetRecordTransportStreamId::<Identity, OFFSET>,
            GetRecordOriginalNetworkId: GetRecordOriginalNetworkId::<Identity, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_RST as windows_core::Interface>::IID
    }
}
pub trait IDVB_SDT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetTransportStreamId(&self) -> windows_core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordServiceId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordEITScheduleFlag(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordEITPresentFollowingFlag(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordFreeCAMode(&self, dwrecordindex: u32) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<IDVB_SDT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IDVB_SDT {}
impl IDVB_SDT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_SDT_Vtbl
    where
        Identity: IDVB_SDT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SDT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetTransportStreamId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordServiceId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEITScheduleFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordEITScheduleFlag(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEITPresentFollowingFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordEITPresentFollowingFlag(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordRunningStatus(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordFreeCAMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordFreeCAMode(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SDT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SDT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    ppsdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SDT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SDT_Impl::ConvertNextToCurrent(this).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SDT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, OFFSET>,
            GetRecordEITScheduleFlag: GetRecordEITScheduleFlag::<Identity, OFFSET>,
            GetRecordEITPresentFollowingFlag: GetRecordEITPresentFollowingFlag::<Identity, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, OFFSET>,
            GetRecordFreeCAMode: GetRecordFreeCAMode::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_SDT as windows_core::Interface>::IID
    }
}
pub trait IDVB_SIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordServiceId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordRunningStatus(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self, dwtimeout: u32) -> windows_core::Result<IDVB_SIT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDVB_SIT {}
impl IDVB_SIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_SIT_Vtbl
    where
        Identity: IDVB_SIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SIT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetRecordServiceId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRunningStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetRecordRunningStatus(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SIT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppsit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_SIT_Impl::GetNextTable(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppsit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SIT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_SIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_SIT_Impl::ConvertNextToCurrent(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, OFFSET>,
            GetRecordRunningStatus: GetRecordRunningStatus::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_SIT as windows_core::Interface>::IID
    }
}
pub trait IDVB_ST_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>) -> windows_core::Result<()>;
    fn GetDataLength(&self) -> windows_core::Result<u16>;
    fn GetData(&self) -> windows_core::Result<*mut u8>;
}
impl windows_core::RuntimeName for IDVB_ST {}
impl IDVB_ST_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_ST_Vtbl
    where
        Identity: IDVB_ST_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_ST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_ST_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist)).into()
        }
        unsafe extern "system" fn GetDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDVB_ST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_ST_Impl::GetDataLength(this) {
                Ok(ok__) => {
                    pwval.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, ppdata: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDVB_ST_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_ST_Impl::GetData(this) {
                Ok(ok__) => {
                    ppdata.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>,
            GetDataLength: GetDataLength::<Identity, OFFSET>,
            GetData: GetData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_ST as windows_core::Interface>::IID
    }
}
pub trait IDVB_TDT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>) -> windows_core::Result<()>;
    fn GetUTCTime(&self) -> windows_core::Result<MPEG_DATE_AND_TIME>;
}
impl windows_core::RuntimeName for IDVB_TDT {}
impl IDVB_TDT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_TDT_Vtbl
    where
        Identity: IDVB_TDT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_TDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_TDT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist)).into()
        }
        unsafe extern "system" fn GetUTCTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IDVB_TDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_TDT_Impl::GetUTCTime(this) {
                Ok(ok__) => {
                    pmdtval.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>,
            GetUTCTime: GetUTCTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_TDT as windows_core::Interface>::IID
    }
}
pub trait IDVB_TOT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>) -> windows_core::Result<()>;
    fn GetUTCTime(&self) -> windows_core::Result<MPEG_DATE_AND_TIME>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDVB_TOT {}
impl IDVB_TOT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVB_TOT_Vtbl
    where
        Identity: IDVB_TOT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_TOT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_TOT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist)).into()
        }
        unsafe extern "system" fn GetUTCTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IDVB_TOT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_TOT_Impl::GetUTCTime(this) {
                Ok(ok__) => {
                    pmdtval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDVB_TOT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_TOT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_TOT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDVB_TOT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDVB_TOT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVB_TOT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetUTCTime: GetUTCTime::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVB_TOT as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDigitalCableLocator_Impl: Sized + IATSCLocator2_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDigitalCableLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IDigitalCableLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDigitalCableLocator_Vtbl
    where
        Identity: IDigitalCableLocator_Impl,
    {
        Self { base__: IATSCLocator2_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDigitalCableLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID || iid == &<IATSCLocator as windows_core::Interface>::IID || iid == &<IATSCLocator2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDigitalCableTuneRequest_Impl: Sized + IATSCChannelTuneRequest_Impl {
    fn MajorChannel(&self) -> windows_core::Result<i32>;
    fn SetMajorChannel(&self, majorchannel: i32) -> windows_core::Result<()>;
    fn SourceID(&self) -> windows_core::Result<i32>;
    fn SetSourceID(&self, sourceid: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDigitalCableTuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl IDigitalCableTuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDigitalCableTuneRequest_Vtbl
    where
        Identity: IDigitalCableTuneRequest_Impl,
    {
        unsafe extern "system" fn MajorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmajorchannel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDigitalCableTuneRequest_Impl::MajorChannel(this) {
                Ok(ok__) => {
                    pmajorchannel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMajorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, majorchannel: i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDigitalCableTuneRequest_Impl::SetMajorChannel(this, core::mem::transmute_copy(&majorchannel)).into()
        }
        unsafe extern "system" fn SourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourceid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDigitalCableTuneRequest_Impl::SourceID(this) {
                Ok(ok__) => {
                    psourceid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourceid: i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDigitalCableTuneRequest_Impl::SetSourceID(this, core::mem::transmute_copy(&sourceid)).into()
        }
        Self {
            base__: IATSCChannelTuneRequest_Vtbl::new::<Identity, OFFSET>(),
            MajorChannel: MajorChannel::<Identity, OFFSET>,
            SetMajorChannel: SetMajorChannel::<Identity, OFFSET>,
            SourceID: SourceID::<Identity, OFFSET>,
            SetSourceID: SetSourceID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDigitalCableTuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuneRequest as windows_core::Interface>::IID || iid == &<IChannelTuneRequest as windows_core::Interface>::IID || iid == &<IATSCChannelTuneRequest as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDigitalCableTuningSpace_Impl: Sized + IATSCTuningSpace_Impl {
    fn MinMajorChannel(&self) -> windows_core::Result<i32>;
    fn SetMinMajorChannel(&self, newminmajorchannelval: i32) -> windows_core::Result<()>;
    fn MaxMajorChannel(&self) -> windows_core::Result<i32>;
    fn SetMaxMajorChannel(&self, newmaxmajorchannelval: i32) -> windows_core::Result<()>;
    fn MinSourceID(&self) -> windows_core::Result<i32>;
    fn SetMinSourceID(&self, newminsourceidval: i32) -> windows_core::Result<()>;
    fn MaxSourceID(&self) -> windows_core::Result<i32>;
    fn SetMaxSourceID(&self, newmaxsourceidval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDigitalCableTuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl IDigitalCableTuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDigitalCableTuningSpace_Vtbl
    where
        Identity: IDigitalCableTuningSpace_Impl,
    {
        unsafe extern "system" fn MinMajorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minmajorchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDigitalCableTuningSpace_Impl::MinMajorChannel(this) {
                Ok(ok__) => {
                    minmajorchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinMajorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newminmajorchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDigitalCableTuningSpace_Impl::SetMinMajorChannel(this, core::mem::transmute_copy(&newminmajorchannelval)).into()
        }
        unsafe extern "system" fn MaxMajorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxmajorchannelval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDigitalCableTuningSpace_Impl::MaxMajorChannel(this) {
                Ok(ok__) => {
                    maxmajorchannelval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxMajorChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newmaxmajorchannelval: i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDigitalCableTuningSpace_Impl::SetMaxMajorChannel(this, core::mem::transmute_copy(&newmaxmajorchannelval)).into()
        }
        unsafe extern "system" fn MinSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, minsourceidval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDigitalCableTuningSpace_Impl::MinSourceID(this) {
                Ok(ok__) => {
                    minsourceidval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMinSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newminsourceidval: i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDigitalCableTuningSpace_Impl::SetMinSourceID(this, core::mem::transmute_copy(&newminsourceidval)).into()
        }
        unsafe extern "system" fn MaxSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxsourceidval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDigitalCableTuningSpace_Impl::MaxSourceID(this) {
                Ok(ok__) => {
                    maxsourceidval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newmaxsourceidval: i32) -> windows_core::HRESULT
        where
            Identity: IDigitalCableTuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDigitalCableTuningSpace_Impl::SetMaxSourceID(this, core::mem::transmute_copy(&newmaxsourceidval)).into()
        }
        Self {
            base__: IATSCTuningSpace_Vtbl::new::<Identity, OFFSET>(),
            MinMajorChannel: MinMajorChannel::<Identity, OFFSET>,
            SetMinMajorChannel: SetMinMajorChannel::<Identity, OFFSET>,
            MaxMajorChannel: MaxMajorChannel::<Identity, OFFSET>,
            SetMaxMajorChannel: SetMaxMajorChannel::<Identity, OFFSET>,
            MinSourceID: MinSourceID::<Identity, OFFSET>,
            SetMinSourceID: SetMinSourceID::<Identity, OFFSET>,
            MaxSourceID: MaxSourceID::<Identity, OFFSET>,
            SetMaxSourceID: SetMaxSourceID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDigitalCableTuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<IAnalogTVTuningSpace as windows_core::Interface>::IID || iid == &<IATSCTuningSpace as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDigitalLocator_Impl: Sized + ILocator_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDigitalLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IDigitalLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDigitalLocator_Vtbl
    where
        Identity: IDigitalLocator_Impl,
    {
        Self { base__: ILocator_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDigitalLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID
    }
}
pub trait IDvbCableDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetFrequency(&self) -> windows_core::Result<u32>;
    fn GetFECOuter(&self) -> windows_core::Result<u8>;
    fn GetModulation(&self) -> windows_core::Result<u8>;
    fn GetSymbolRate(&self) -> windows_core::Result<u32>;
    fn GetFECInner(&self) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDvbCableDeliverySystemDescriptor {}
impl IDvbCableDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbCableDeliverySystemDescriptor_Vtbl
    where
        Identity: IDvbCableDeliverySystemDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetFrequency(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFECOuter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetFECOuter(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetModulation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetModulation(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSymbolRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetSymbolRate(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFECInner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbCableDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbCableDeliverySystemDescriptor_Impl::GetFECInner(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetFrequency: GetFrequency::<Identity, OFFSET>,
            GetFECOuter: GetFECOuter::<Identity, OFFSET>,
            GetModulation: GetModulation::<Identity, OFFSET>,
            GetSymbolRate: GetSymbolRate::<Identity, OFFSET>,
            GetFECInner: GetFECInner::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbCableDeliverySystemDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbComponentDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetStreamContent(&self) -> windows_core::Result<u8>;
    fn GetComponentType(&self) -> windows_core::Result<u8>;
    fn GetComponentTag(&self) -> windows_core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IDvbComponentDescriptor {}
impl IDvbComponentDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbComponentDescriptor_Vtbl
    where
        Identity: IDvbComponentDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbComponentDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbComponentDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamContent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbComponentDescriptor_Impl::GetStreamContent(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbComponentDescriptor_Impl::GetComponentType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbComponentDescriptor_Impl::GetComponentTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbComponentDescriptor_Impl::GetLanguageCode(this, core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbComponentDescriptor_Impl::GetTextW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetStreamContent: GetStreamContent::<Identity, OFFSET>,
            GetComponentType: GetComponentType::<Identity, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, OFFSET>,
            GetTextW: GetTextW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbComponentDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbContentDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordContentNibbles(&self, brecordindex: u8, pbvallevel1: *mut u8, pbvallevel2: *mut u8) -> windows_core::Result<()>;
    fn GetRecordUserNibbles(&self, brecordindex: u8, pbval1: *mut u8, pbval2: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbContentDescriptor {}
impl IDvbContentDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbContentDescriptor_Vtbl
    where
        Identity: IDvbContentDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbContentDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbContentDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbContentDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordContentNibbles<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbvallevel1: *mut u8, pbvallevel2: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbContentDescriptor_Impl::GetRecordContentNibbles(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pbvallevel1), core::mem::transmute_copy(&pbvallevel2)).into()
        }
        unsafe extern "system" fn GetRecordUserNibbles<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval1: *mut u8, pbval2: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbContentDescriptor_Impl::GetRecordUserNibbles(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pbval1), core::mem::transmute_copy(&pbval2)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordContentNibbles: GetRecordContentNibbles::<Identity, OFFSET>,
            GetRecordUserNibbles: GetRecordUserNibbles::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbContentDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbContentIdentifierDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordCrid(&self, brecordindex: u8, pbtype: *mut u8, pblocation: *mut u8, pblength: *mut u8, ppbbytes: *mut *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbContentIdentifierDescriptor {}
impl IDvbContentIdentifierDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbContentIdentifierDescriptor_Vtbl
    where
        Identity: IDvbContentIdentifierDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentIdentifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbContentIdentifierDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentIdentifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbContentIdentifierDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentIdentifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbContentIdentifierDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCrid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbtype: *mut u8, pblocation: *mut u8, pblength: *mut u8, ppbbytes: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbContentIdentifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbContentIdentifierDescriptor_Impl::GetRecordCrid(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pbtype), core::mem::transmute_copy(&pblocation), core::mem::transmute_copy(&pblength), core::mem::transmute_copy(&ppbbytes)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordCrid: GetRecordCrid::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbContentIdentifierDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbDataBroadcastDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetDataBroadcastID(&self) -> windows_core::Result<u16>;
    fn GetComponentTag(&self) -> windows_core::Result<u8>;
    fn GetSelectorLength(&self) -> windows_core::Result<u8>;
    fn GetSelectorBytes(&self, pblen: *mut u8, pbval: *mut u8) -> windows_core::Result<()>;
    fn GetLangID(&self) -> windows_core::Result<u32>;
    fn GetTextLength(&self) -> windows_core::Result<u8>;
    fn GetText(&self, pblen: *mut u8, pbval: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbDataBroadcastDescriptor {}
impl IDvbDataBroadcastDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbDataBroadcastDescriptor_Vtbl
    where
        Identity: IDvbDataBroadcastDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataBroadcastID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetDataBroadcastID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetComponentTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetSelectorLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pblen: *mut u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbDataBroadcastDescriptor_Impl::GetSelectorBytes(this, core::mem::transmute_copy(&pblen), core::mem::transmute_copy(&pbval)).into()
        }
        unsafe extern "system" fn GetLangID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetLangID(this) {
                Ok(ok__) => {
                    pulval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTextLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastDescriptor_Impl::GetTextLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pblen: *mut u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbDataBroadcastDescriptor_Impl::GetText(this, core::mem::transmute_copy(&pblen), core::mem::transmute_copy(&pbval)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetDataBroadcastID: GetDataBroadcastID::<Identity, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, OFFSET>,
            GetSelectorLength: GetSelectorLength::<Identity, OFFSET>,
            GetSelectorBytes: GetSelectorBytes::<Identity, OFFSET>,
            GetLangID: GetLangID::<Identity, OFFSET>,
            GetTextLength: GetTextLength::<Identity, OFFSET>,
            GetText: GetText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbDataBroadcastDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbDataBroadcastIDDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetDataBroadcastID(&self) -> windows_core::Result<u16>;
    fn GetIDSelectorBytes(&self, pblen: *mut u8, pbval: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbDataBroadcastIDDescriptor {}
impl IDvbDataBroadcastIDDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbDataBroadcastIDDescriptor_Vtbl
    where
        Identity: IDvbDataBroadcastIDDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastIDDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastIDDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastIDDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastIDDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataBroadcastID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastIDDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDataBroadcastIDDescriptor_Impl::GetDataBroadcastID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetIDSelectorBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pblen: *mut u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDataBroadcastIDDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbDataBroadcastIDDescriptor_Impl::GetIDSelectorBytes(this, core::mem::transmute_copy(&pblen), core::mem::transmute_copy(&pbval)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetDataBroadcastID: GetDataBroadcastID::<Identity, OFFSET>,
            GetIDSelectorBytes: GetIDSelectorBytes::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbDataBroadcastIDDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbDefaultAuthorityDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetDefaultAuthority(&self, pblength: *mut u8, ppbbytes: *mut *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbDefaultAuthorityDescriptor {}
impl IDvbDefaultAuthorityDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbDefaultAuthorityDescriptor_Vtbl
    where
        Identity: IDvbDefaultAuthorityDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDefaultAuthorityDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDefaultAuthorityDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDefaultAuthorityDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbDefaultAuthorityDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultAuthority<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pblength: *mut u8, ppbbytes: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbDefaultAuthorityDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbDefaultAuthorityDescriptor_Impl::GetDefaultAuthority(this, core::mem::transmute_copy(&pblength), core::mem::transmute_copy(&ppbbytes)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetDefaultAuthority: GetDefaultAuthority::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbDefaultAuthorityDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbExtendedEventDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetDescriptorNumber(&self) -> windows_core::Result<u8>;
    fn GetLastDescriptorNumber(&self) -> windows_core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordItemW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut windows_core::BSTR, pbstritem: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn GetConcatenatedItemW(&self, pfollowingdescriptor: Option<&IDvbExtendedEventDescriptor>, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut windows_core::BSTR, pbstritem: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetConcatenatedTextW(&self, followingdescriptor: Option<&IDvbExtendedEventDescriptor>, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetRecordItemRawBytes(&self, brecordindex: u8, ppbrawitem: *mut *mut u8, pbitemlength: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbExtendedEventDescriptor {}
impl IDvbExtendedEventDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbExtendedEventDescriptor_Vtbl
    where
        Identity: IDvbExtendedEventDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDescriptorNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetDescriptorNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastDescriptorNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetLastDescriptorNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbExtendedEventDescriptor_Impl::GetLanguageCode(this, core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordItemW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut core::mem::MaybeUninit<windows_core::BSTR>, pbstritem: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbExtendedEventDescriptor_Impl::GetRecordItemW(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&convmode), core::mem::transmute_copy(&pbstrdesc), core::mem::transmute_copy(&pbstritem)).into()
        }
        unsafe extern "system" fn GetConcatenatedItemW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfollowingdescriptor: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrdesc: *mut core::mem::MaybeUninit<windows_core::BSTR>, pbstritem: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbExtendedEventDescriptor_Impl::GetConcatenatedItemW(this, windows_core::from_raw_borrowed(&pfollowingdescriptor), core::mem::transmute_copy(&convmode), core::mem::transmute_copy(&pbstrdesc), core::mem::transmute_copy(&pbstritem)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetTextW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConcatenatedTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, followingdescriptor: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbExtendedEventDescriptor_Impl::GetConcatenatedTextW(this, windows_core::from_raw_borrowed(&followingdescriptor), core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordItemRawBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, ppbrawitem: *mut *mut u8, pbitemlength: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbExtendedEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbExtendedEventDescriptor_Impl::GetRecordItemRawBytes(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&ppbrawitem), core::mem::transmute_copy(&pbitemlength)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetDescriptorNumber: GetDescriptorNumber::<Identity, OFFSET>,
            GetLastDescriptorNumber: GetLastDescriptorNumber::<Identity, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordItemW: GetRecordItemW::<Identity, OFFSET>,
            GetConcatenatedItemW: GetConcatenatedItemW::<Identity, OFFSET>,
            GetTextW: GetTextW::<Identity, OFFSET>,
            GetConcatenatedTextW: GetConcatenatedTextW::<Identity, OFFSET>,
            GetRecordItemRawBytes: GetRecordItemRawBytes::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbExtendedEventDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbFrequencyListDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCodingType(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordCentreFrequency(&self, brecordindex: u8) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IDvbFrequencyListDescriptor {}
impl IDvbFrequencyListDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbFrequencyListDescriptor_Vtbl
    where
        Identity: IDvbFrequencyListDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbFrequencyListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbFrequencyListDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbFrequencyListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbFrequencyListDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCodingType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbFrequencyListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbFrequencyListDescriptor_Impl::GetCodingType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbFrequencyListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbFrequencyListDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCentreFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbFrequencyListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbFrequencyListDescriptor_Impl::GetRecordCentreFrequency(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCodingType: GetCodingType::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordCentreFrequency: GetRecordCentreFrequency::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbFrequencyListDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbHDSimulcastLogicalChannelDescriptor_Impl: Sized + IDvbLogicalChannelDescriptor2_Impl {}
impl windows_core::RuntimeName for IDvbHDSimulcastLogicalChannelDescriptor {}
impl IDvbHDSimulcastLogicalChannelDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbHDSimulcastLogicalChannelDescriptor_Vtbl
    where
        Identity: IDvbHDSimulcastLogicalChannelDescriptor_Impl,
    {
        Self { base__: IDvbLogicalChannelDescriptor2_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbHDSimulcastLogicalChannelDescriptor as windows_core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor as windows_core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor2 as windows_core::Interface>::IID
    }
}
pub trait IDvbLinkageDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetTSId(&self) -> windows_core::Result<u16>;
    fn GetONId(&self) -> windows_core::Result<u16>;
    fn GetServiceId(&self) -> windows_core::Result<u16>;
    fn GetLinkageType(&self) -> windows_core::Result<u8>;
    fn GetPrivateDataLength(&self) -> windows_core::Result<u8>;
    fn GetPrivateData(&self, pblen: *mut u8, pbdata: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbLinkageDescriptor {}
impl IDvbLinkageDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbLinkageDescriptor_Vtbl
    where
        Identity: IDvbLinkageDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetTSId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetONId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetONId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetServiceId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLinkageType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetLinkageType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLinkageDescriptor_Impl::GetPrivateDataLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pblen: *mut u8, pbdata: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLinkageDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbLinkageDescriptor_Impl::GetPrivateData(this, core::mem::transmute_copy(&pblen), core::mem::transmute_copy(&pbdata)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetTSId: GetTSId::<Identity, OFFSET>,
            GetONId: GetONId::<Identity, OFFSET>,
            GetServiceId: GetServiceId::<Identity, OFFSET>,
            GetLinkageType: GetLinkageType::<Identity, OFFSET>,
            GetPrivateDataLength: GetPrivateDataLength::<Identity, OFFSET>,
            GetPrivateData: GetPrivateData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbLinkageDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbLogicalChannel2Descriptor_Impl: Sized + IDvbLogicalChannelDescriptor2_Impl {
    fn GetCountOfLists(&self) -> windows_core::Result<u8>;
    fn GetListId(&self, blistindex: u8) -> windows_core::Result<u8>;
    fn GetListNameW(&self, blistindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetListCountryCode(&self, blistindex: u8, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetListCountOfRecords(&self, bchannellistindex: u8) -> windows_core::Result<u8>;
    fn GetListRecordServiceId(&self, blistindex: u8, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetListRecordLogicalChannelNumber(&self, blistindex: u8, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetListRecordLogicalChannelAndVisibility(&self, blistindex: u8, brecordindex: u8) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IDvbLogicalChannel2Descriptor {}
impl IDvbLogicalChannel2Descriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbLogicalChannel2Descriptor_Vtbl
    where
        Identity: IDvbLogicalChannel2Descriptor_Impl,
    {
        unsafe extern "system" fn GetCountOfLists<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetCountOfLists(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, blistindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetListId(this, core::mem::transmute_copy(&blistindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, blistindex: u8, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetListNameW(this, core::mem::transmute_copy(&blistindex), core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListCountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, blistindex: u8, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbLogicalChannel2Descriptor_Impl::GetListCountryCode(this, core::mem::transmute_copy(&blistindex), core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetListCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bchannellistindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetListCountOfRecords(this, core::mem::transmute_copy(&bchannellistindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, blistindex: u8, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetListRecordServiceId(this, core::mem::transmute_copy(&blistindex), core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListRecordLogicalChannelNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, blistindex: u8, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetListRecordLogicalChannelNumber(this, core::mem::transmute_copy(&blistindex), core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetListRecordLogicalChannelAndVisibility<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, blistindex: u8, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannel2Descriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannel2Descriptor_Impl::GetListRecordLogicalChannelAndVisibility(this, core::mem::transmute_copy(&blistindex), core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbLogicalChannelDescriptor2_Vtbl::new::<Identity, OFFSET>(),
            GetCountOfLists: GetCountOfLists::<Identity, OFFSET>,
            GetListId: GetListId::<Identity, OFFSET>,
            GetListNameW: GetListNameW::<Identity, OFFSET>,
            GetListCountryCode: GetListCountryCode::<Identity, OFFSET>,
            GetListCountOfRecords: GetListCountOfRecords::<Identity, OFFSET>,
            GetListRecordServiceId: GetListRecordServiceId::<Identity, OFFSET>,
            GetListRecordLogicalChannelNumber: GetListRecordLogicalChannelNumber::<Identity, OFFSET>,
            GetListRecordLogicalChannelAndVisibility: GetListRecordLogicalChannelAndVisibility::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbLogicalChannel2Descriptor as windows_core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor as windows_core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor2 as windows_core::Interface>::IID
    }
}
pub trait IDvbLogicalChannelDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordServiceId(&self, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetRecordLogicalChannelNumber(&self, brecordindex: u8) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IDvbLogicalChannelDescriptor {}
impl IDvbLogicalChannelDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbLogicalChannelDescriptor_Vtbl
    where
        Identity: IDvbLogicalChannelDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannelDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannelDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannelDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannelDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannelDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannelDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannelDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannelDescriptor_Impl::GetRecordServiceId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLogicalChannelNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannelDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannelDescriptor_Impl::GetRecordLogicalChannelNumber(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, OFFSET>,
            GetRecordLogicalChannelNumber: GetRecordLogicalChannelNumber::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbLogicalChannelDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbLogicalChannelDescriptor2_Impl: Sized + IDvbLogicalChannelDescriptor_Impl {
    fn GetRecordLogicalChannelAndVisibility(&self, brecordindex: u8) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IDvbLogicalChannelDescriptor2 {}
impl IDvbLogicalChannelDescriptor2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbLogicalChannelDescriptor2_Vtbl
    where
        Identity: IDvbLogicalChannelDescriptor2_Impl,
    {
        unsafe extern "system" fn GetRecordLogicalChannelAndVisibility<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbLogicalChannelDescriptor2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbLogicalChannelDescriptor2_Impl::GetRecordLogicalChannelAndVisibility(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbLogicalChannelDescriptor_Vtbl::new::<Identity, OFFSET>(),
            GetRecordLogicalChannelAndVisibility: GetRecordLogicalChannelAndVisibility::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbLogicalChannelDescriptor2 as windows_core::Interface>::IID || iid == &<IDvbLogicalChannelDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbMultilingualServiceNameDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordLangId(&self, brecordindex: u8) -> windows_core::Result<u32>;
    fn GetRecordServiceProviderNameW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetRecordServiceNameW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IDvbMultilingualServiceNameDescriptor {}
impl IDvbMultilingualServiceNameDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbMultilingualServiceNameDescriptor_Vtbl
    where
        Identity: IDvbMultilingualServiceNameDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbMultilingualServiceNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbMultilingualServiceNameDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbMultilingualServiceNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbMultilingualServiceNameDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbMultilingualServiceNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbMultilingualServiceNameDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLangId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, ulval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbMultilingualServiceNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbMultilingualServiceNameDescriptor_Impl::GetRecordLangId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    ulval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceProviderNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbMultilingualServiceNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbMultilingualServiceNameDescriptor_Impl::GetRecordServiceProviderNameW(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbMultilingualServiceNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbMultilingualServiceNameDescriptor_Impl::GetRecordServiceNameW(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordLangId: GetRecordLangId::<Identity, OFFSET>,
            GetRecordServiceProviderNameW: GetRecordServiceProviderNameW::<Identity, OFFSET>,
            GetRecordServiceNameW: GetRecordServiceNameW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbMultilingualServiceNameDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbNetworkNameDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetNetworkName(&self) -> windows_core::Result<*mut u8>;
    fn GetNetworkNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IDvbNetworkNameDescriptor {}
impl IDvbNetworkNameDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbNetworkNameDescriptor_Vtbl
    where
        Identity: IDvbNetworkNameDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbNetworkNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbNetworkNameDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbNetworkNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbNetworkNameDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNetworkName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbNetworkNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbNetworkNameDescriptor_Impl::GetNetworkName(this) {
                Ok(ok__) => {
                    pszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNetworkNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbNetworkNameDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbNetworkNameDescriptor_Impl::GetNetworkNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetNetworkName: GetNetworkName::<Identity, OFFSET>,
            GetNetworkNameW: GetNetworkNameW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbNetworkNameDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbParentalRatingDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordRating(&self, brecordindex: u8, pszcountrycode: *mut u8, pbval: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvbParentalRatingDescriptor {}
impl IDvbParentalRatingDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbParentalRatingDescriptor_Vtbl
    where
        Identity: IDvbParentalRatingDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbParentalRatingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbParentalRatingDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbParentalRatingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbParentalRatingDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbParentalRatingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbParentalRatingDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordRating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pszcountrycode: *mut u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbParentalRatingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbParentalRatingDescriptor_Impl::GetRecordRating(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pszcountrycode), core::mem::transmute_copy(&pbval)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordRating: GetRecordRating::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbParentalRatingDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbPrivateDataSpecifierDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetPrivateDataSpecifier(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IDvbPrivateDataSpecifierDescriptor {}
impl IDvbPrivateDataSpecifierDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbPrivateDataSpecifierDescriptor_Vtbl
    where
        Identity: IDvbPrivateDataSpecifierDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbPrivateDataSpecifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbPrivateDataSpecifierDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbPrivateDataSpecifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbPrivateDataSpecifierDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateDataSpecifier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbPrivateDataSpecifierDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbPrivateDataSpecifierDescriptor_Impl::GetPrivateDataSpecifier(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetPrivateDataSpecifier: GetPrivateDataSpecifier::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbPrivateDataSpecifierDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbSatelliteDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetFrequency(&self) -> windows_core::Result<u32>;
    fn GetOrbitalPosition(&self) -> windows_core::Result<u16>;
    fn GetWestEastFlag(&self) -> windows_core::Result<u8>;
    fn GetPolarization(&self) -> windows_core::Result<u8>;
    fn GetModulation(&self) -> windows_core::Result<u8>;
    fn GetSymbolRate(&self) -> windows_core::Result<u32>;
    fn GetFECInner(&self) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDvbSatelliteDeliverySystemDescriptor {}
impl IDvbSatelliteDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbSatelliteDeliverySystemDescriptor_Vtbl
    where
        Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetFrequency(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOrbitalPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetOrbitalPosition(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetWestEastFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetWestEastFlag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPolarization<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetPolarization(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetModulation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetModulation(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSymbolRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetSymbolRate(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFECInner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSatelliteDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSatelliteDeliverySystemDescriptor_Impl::GetFECInner(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetFrequency: GetFrequency::<Identity, OFFSET>,
            GetOrbitalPosition: GetOrbitalPosition::<Identity, OFFSET>,
            GetWestEastFlag: GetWestEastFlag::<Identity, OFFSET>,
            GetPolarization: GetPolarization::<Identity, OFFSET>,
            GetModulation: GetModulation::<Identity, OFFSET>,
            GetSymbolRate: GetSymbolRate::<Identity, OFFSET>,
            GetFECInner: GetFECInner::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbSatelliteDeliverySystemDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbServiceAttributeDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordServiceId(&self, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetRecordNumericSelectionFlag(&self, brecordindex: u8) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetRecordVisibleServiceFlag(&self, brecordindex: u8) -> windows_core::Result<super::super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for IDvbServiceAttributeDescriptor {}
impl IDvbServiceAttributeDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbServiceAttributeDescriptor_Vtbl
    where
        Identity: IDvbServiceAttributeDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceAttributeDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceAttributeDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceAttributeDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceAttributeDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceAttributeDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceAttributeDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbServiceAttributeDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceAttributeDescriptor_Impl::GetRecordServiceId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumericSelectionFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvbServiceAttributeDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceAttributeDescriptor_Impl::GetRecordNumericSelectionFlag(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordVisibleServiceFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvbServiceAttributeDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceAttributeDescriptor_Impl::GetRecordVisibleServiceFlag(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, OFFSET>,
            GetRecordNumericSelectionFlag: GetRecordNumericSelectionFlag::<Identity, OFFSET>,
            GetRecordVisibleServiceFlag: GetRecordVisibleServiceFlag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbServiceAttributeDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbServiceDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetServiceType(&self) -> windows_core::Result<u8>;
    fn GetServiceProviderName(&self) -> windows_core::Result<*mut u8>;
    fn GetServiceProviderNameW(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetServiceName(&self) -> windows_core::Result<*mut u8>;
    fn GetProcessedServiceName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetServiceNameEmphasized(&self) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IDvbServiceDescriptor {}
impl IDvbServiceDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbServiceDescriptor_Vtbl
    where
        Identity: IDvbServiceDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetServiceType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceProviderName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetServiceProviderName(this) {
                Ok(ok__) => {
                    pszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceProviderNameW<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: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetServiceProviderNameW(this) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetServiceName(this) {
                Ok(ok__) => {
                    pszname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProcessedServiceName<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: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetProcessedServiceName(this) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceNameEmphasized<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: IDvbServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor_Impl::GetServiceNameEmphasized(this) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetServiceType: GetServiceType::<Identity, OFFSET>,
            GetServiceProviderName: GetServiceProviderName::<Identity, OFFSET>,
            GetServiceProviderNameW: GetServiceProviderNameW::<Identity, OFFSET>,
            GetServiceName: GetServiceName::<Identity, OFFSET>,
            GetProcessedServiceName: GetProcessedServiceName::<Identity, OFFSET>,
            GetServiceNameEmphasized: GetServiceNameEmphasized::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbServiceDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbServiceDescriptor2_Impl: Sized + IDvbServiceDescriptor_Impl {
    fn GetServiceProviderNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetServiceNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IDvbServiceDescriptor2 {}
impl IDvbServiceDescriptor2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbServiceDescriptor2_Vtbl
    where
        Identity: IDvbServiceDescriptor2_Impl,
    {
        unsafe extern "system" fn GetServiceProviderNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor2_Impl::GetServiceProviderNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbServiceDescriptor2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceDescriptor2_Impl::GetServiceNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbServiceDescriptor_Vtbl::new::<Identity, OFFSET>(),
            GetServiceProviderNameW: GetServiceProviderNameW::<Identity, OFFSET>,
            GetServiceNameW: GetServiceNameW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbServiceDescriptor2 as windows_core::Interface>::IID || iid == &<IDvbServiceDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbServiceListDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordServiceId(&self, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetRecordServiceType(&self, brecordindex: u8) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDvbServiceListDescriptor {}
impl IDvbServiceListDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbServiceListDescriptor_Vtbl
    where
        Identity: IDvbServiceListDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceListDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceListDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceListDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbServiceListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceListDescriptor_Impl::GetRecordServiceId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbServiceListDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbServiceListDescriptor_Impl::GetRecordServiceType(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordServiceId: GetRecordServiceId::<Identity, OFFSET>,
            GetRecordServiceType: GetRecordServiceType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbServiceListDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbShortEventDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetEventNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IDvbShortEventDescriptor {}
impl IDvbShortEventDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbShortEventDescriptor_Vtbl
    where
        Identity: IDvbShortEventDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbShortEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbShortEventDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbShortEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbShortEventDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbShortEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbShortEventDescriptor_Impl::GetLanguageCode(this, core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetEventNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbShortEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbShortEventDescriptor_Impl::GetEventNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDvbShortEventDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbShortEventDescriptor_Impl::GetTextW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, OFFSET>,
            GetEventNameW: GetEventNameW::<Identity, OFFSET>,
            GetTextW: GetTextW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbShortEventDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbSiParser_Impl: Sized {
    fn Initialize(&self, punkmpeg2data: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetPAT(&self) -> windows_core::Result<IPAT>;
    fn GetCAT(&self, dwtimeout: u32) -> windows_core::Result<ICAT>;
    fn GetPMT(&self, pid: u16, pwprogramnumber: *const u16) -> windows_core::Result<IPMT>;
    fn GetTSDT(&self) -> windows_core::Result<ITSDT>;
    fn GetNIT(&self, tableid: u8, pwnetworkid: *const u16) -> windows_core::Result<IDVB_NIT>;
    fn GetSDT(&self, tableid: u8, pwtransportstreamid: *const u16) -> windows_core::Result<IDVB_SDT>;
    fn GetEIT(&self, tableid: u8, pwserviceid: *const u16) -> windows_core::Result<IDVB_EIT>;
    fn GetBAT(&self, pwbouquetid: *const u16) -> windows_core::Result<IDVB_BAT>;
    fn GetRST(&self, dwtimeout: u32) -> windows_core::Result<IDVB_RST>;
    fn GetST(&self, pid: u16, dwtimeout: u32) -> windows_core::Result<IDVB_ST>;
    fn GetTDT(&self) -> windows_core::Result<IDVB_TDT>;
    fn GetTOT(&self) -> windows_core::Result<IDVB_TOT>;
    fn GetDIT(&self, dwtimeout: u32) -> windows_core::Result<IDVB_DIT>;
    fn GetSIT(&self, dwtimeout: u32) -> windows_core::Result<IDVB_SIT>;
}
impl windows_core::RuntimeName for IDvbSiParser {}
impl IDvbSiParser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbSiParser_Vtbl
    where
        Identity: IDvbSiParser_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkmpeg2data: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvbSiParser_Impl::Initialize(this, windows_core::from_raw_borrowed(&punkmpeg2data)).into()
        }
        unsafe extern "system" fn GetPAT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pppat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetPAT(this) {
                Ok(ok__) => {
                    pppat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppcat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetCAT(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppcat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPMT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, pwprogramnumber: *const u16, pppmt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetPMT(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&pwprogramnumber)) {
                Ok(ok__) => {
                    pppmt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptsdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetTSDT(this) {
                Ok(ok__) => {
                    pptsdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pwnetworkid: *const u16, ppnit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetNIT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pwnetworkid)) {
                Ok(ok__) => {
                    ppnit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pwtransportstreamid: *const u16, ppsdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetSDT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pwtransportstreamid)) {
                Ok(ok__) => {
                    ppsdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pwserviceid: *const u16, ppeit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetEIT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pwserviceid)) {
                Ok(ok__) => {
                    ppeit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBAT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwbouquetid: *const u16, ppbat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetBAT(this, core::mem::transmute_copy(&pwbouquetid)) {
                Ok(ok__) => {
                    ppbat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRST<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, pprst: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetRST(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    pprst.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetST<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, dwtimeout: u32, ppst: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetST(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppst.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetTDT(this) {
                Ok(ok__) => {
                    pptdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTOT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptot: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetTOT(this) {
                Ok(ok__) => {
                    pptot.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppdit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetDIT(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppdit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppsit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser_Impl::GetSIT(this, core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppsit.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>,
            GetPAT: GetPAT::<Identity, OFFSET>,
            GetCAT: GetCAT::<Identity, OFFSET>,
            GetPMT: GetPMT::<Identity, OFFSET>,
            GetTSDT: GetTSDT::<Identity, OFFSET>,
            GetNIT: GetNIT::<Identity, OFFSET>,
            GetSDT: GetSDT::<Identity, OFFSET>,
            GetEIT: GetEIT::<Identity, OFFSET>,
            GetBAT: GetBAT::<Identity, OFFSET>,
            GetRST: GetRST::<Identity, OFFSET>,
            GetST: GetST::<Identity, OFFSET>,
            GetTDT: GetTDT::<Identity, OFFSET>,
            GetTOT: GetTOT::<Identity, OFFSET>,
            GetDIT: GetDIT::<Identity, OFFSET>,
            GetSIT: GetSIT::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbSiParser as windows_core::Interface>::IID
    }
}
pub trait IDvbSiParser2_Impl: Sized + IDvbSiParser_Impl {
    fn GetEIT2(&self, tableid: u8, pwserviceid: *const u16, pbsegment: *const u8) -> windows_core::Result<IDVB_EIT2>;
}
impl windows_core::RuntimeName for IDvbSiParser2 {}
impl IDvbSiParser2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbSiParser2_Vtbl
    where
        Identity: IDvbSiParser2_Impl,
    {
        unsafe extern "system" fn GetEIT2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pwserviceid: *const u16, pbsegment: *const u8, ppeit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSiParser2_Impl::GetEIT2(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pwserviceid), core::mem::transmute_copy(&pbsegment)) {
                Ok(ok__) => {
                    ppeit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IDvbSiParser_Vtbl::new::<Identity, OFFSET>(), GetEIT2: GetEIT2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbSiParser2 as windows_core::Interface>::IID || iid == &<IDvbSiParser as windows_core::Interface>::IID
    }
}
pub trait IDvbSubtitlingDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordLangId(&self, brecordindex: u8) -> windows_core::Result<u32>;
    fn GetRecordSubtitlingType(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordCompositionPageID(&self, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetRecordAncillaryPageID(&self, brecordindex: u8) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IDvbSubtitlingDescriptor {}
impl IDvbSubtitlingDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbSubtitlingDescriptor_Vtbl
    where
        Identity: IDvbSubtitlingDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLangId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pulval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetRecordLangId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pulval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordSubtitlingType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetRecordSubtitlingType(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCompositionPageID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetRecordCompositionPageID(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordAncillaryPageID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbSubtitlingDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbSubtitlingDescriptor_Impl::GetRecordAncillaryPageID(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordLangId: GetRecordLangId::<Identity, OFFSET>,
            GetRecordSubtitlingType: GetRecordSubtitlingType::<Identity, OFFSET>,
            GetRecordCompositionPageID: GetRecordCompositionPageID::<Identity, OFFSET>,
            GetRecordAncillaryPageID: GetRecordAncillaryPageID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbSubtitlingDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbTeletextDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordLangId(&self, brecordindex: u8) -> windows_core::Result<u32>;
    fn GetRecordTeletextType(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordMagazineNumber(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordPageNumber(&self, brecordindex: u8) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDvbTeletextDescriptor {}
impl IDvbTeletextDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbTeletextDescriptor_Vtbl
    where
        Identity: IDvbTeletextDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordLangId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pulval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetRecordLangId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pulval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTeletextType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetRecordTeletextType(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMagazineNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetRecordMagazineNumber(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordPageNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTeletextDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTeletextDescriptor_Impl::GetRecordPageNumber(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordLangId: GetRecordLangId::<Identity, OFFSET>,
            GetRecordTeletextType: GetRecordTeletextType::<Identity, OFFSET>,
            GetRecordMagazineNumber: GetRecordMagazineNumber::<Identity, OFFSET>,
            GetRecordPageNumber: GetRecordPageNumber::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbTeletextDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbTerrestrial2DeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetTagExtension(&self) -> windows_core::Result<u8>;
    fn GetCentreFrequency(&self) -> windows_core::Result<u32>;
    fn GetPLPId(&self) -> windows_core::Result<u8>;
    fn GetT2SystemId(&self) -> windows_core::Result<u16>;
    fn GetMultipleInputMode(&self) -> windows_core::Result<u8>;
    fn GetBandwidth(&self) -> windows_core::Result<u8>;
    fn GetGuardInterval(&self) -> windows_core::Result<u8>;
    fn GetTransmissionMode(&self) -> windows_core::Result<u8>;
    fn GetCellId(&self) -> windows_core::Result<u16>;
    fn GetOtherFrequencyFlag(&self) -> windows_core::Result<u8>;
    fn GetTFSFlag(&self) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDvbTerrestrial2DeliverySystemDescriptor {}
impl IDvbTerrestrial2DeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbTerrestrial2DeliverySystemDescriptor_Vtbl
    where
        Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTagExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetTagExtension(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCentreFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetCentreFrequency(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPLPId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetPLPId(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetT2SystemId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetT2SystemId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMultipleInputMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetMultipleInputMode(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetBandwidth(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuardInterval<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetGuardInterval(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransmissionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetTransmissionMode(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCellId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetCellId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOtherFrequencyFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetOtherFrequencyFlag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTFSFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrial2DeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrial2DeliverySystemDescriptor_Impl::GetTFSFlag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetTagExtension: GetTagExtension::<Identity, OFFSET>,
            GetCentreFrequency: GetCentreFrequency::<Identity, OFFSET>,
            GetPLPId: GetPLPId::<Identity, OFFSET>,
            GetT2SystemId: GetT2SystemId::<Identity, OFFSET>,
            GetMultipleInputMode: GetMultipleInputMode::<Identity, OFFSET>,
            GetBandwidth: GetBandwidth::<Identity, OFFSET>,
            GetGuardInterval: GetGuardInterval::<Identity, OFFSET>,
            GetTransmissionMode: GetTransmissionMode::<Identity, OFFSET>,
            GetCellId: GetCellId::<Identity, OFFSET>,
            GetOtherFrequencyFlag: GetOtherFrequencyFlag::<Identity, OFFSET>,
            GetTFSFlag: GetTFSFlag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbTerrestrial2DeliverySystemDescriptor as windows_core::Interface>::IID
    }
}
pub trait IDvbTerrestrialDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCentreFrequency(&self) -> windows_core::Result<u32>;
    fn GetBandwidth(&self) -> windows_core::Result<u8>;
    fn GetConstellation(&self) -> windows_core::Result<u8>;
    fn GetHierarchyInformation(&self) -> windows_core::Result<u8>;
    fn GetCodeRateHPStream(&self) -> windows_core::Result<u8>;
    fn GetCodeRateLPStream(&self) -> windows_core::Result<u8>;
    fn GetGuardInterval(&self) -> windows_core::Result<u8>;
    fn GetTransmissionMode(&self) -> windows_core::Result<u8>;
    fn GetOtherFrequencyFlag(&self) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IDvbTerrestrialDeliverySystemDescriptor {}
impl IDvbTerrestrialDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvbTerrestrialDeliverySystemDescriptor_Vtbl
    where
        Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCentreFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetCentreFrequency(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetBandwidth(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConstellation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetConstellation(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetHierarchyInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetHierarchyInformation(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCodeRateHPStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetCodeRateHPStream(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCodeRateLPStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetCodeRateLPStream(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuardInterval<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetGuardInterval(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransmissionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetTransmissionMode(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOtherFrequencyFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvbTerrestrialDeliverySystemDescriptor_Impl::GetOtherFrequencyFlag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCentreFrequency: GetCentreFrequency::<Identity, OFFSET>,
            GetBandwidth: GetBandwidth::<Identity, OFFSET>,
            GetConstellation: GetConstellation::<Identity, OFFSET>,
            GetHierarchyInformation: GetHierarchyInformation::<Identity, OFFSET>,
            GetCodeRateHPStream: GetCodeRateHPStream::<Identity, OFFSET>,
            GetCodeRateLPStream: GetCodeRateLPStream::<Identity, OFFSET>,
            GetGuardInterval: GetGuardInterval::<Identity, OFFSET>,
            GetTransmissionMode: GetTransmissionMode::<Identity, OFFSET>,
            GetOtherFrequencyFlag: GetOtherFrequencyFlag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvbTerrestrialDeliverySystemDescriptor as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESCloseMmiEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetDialogNumber(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESCloseMmiEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESCloseMmiEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESCloseMmiEvent_Vtbl
    where
        Identity: IESCloseMmiEvent_Impl,
    {
        unsafe extern "system" fn GetDialogNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdialognumber: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESCloseMmiEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESCloseMmiEvent_Impl::GetDialogNumber(this) {
                Ok(ok__) => {
                    pdialognumber.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(), GetDialogNumber: GetDialogNumber::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESCloseMmiEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
pub trait IESEventFactory_Impl: Sized {
    fn CreateESEvent(&self, pserviceprovider: Option<&windows_core::IUnknown>, dweventid: u32, guideventtype: &windows_core::GUID, dweventdatalength: u32, peventdata: *const u8, bstrbaseurl: &windows_core::BSTR, pinitcontext: Option<&windows_core::IUnknown>) -> windows_core::Result<super::IESEvent>;
}
impl windows_core::RuntimeName for IESEventFactory {}
impl IESEventFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESEventFactory_Vtbl
    where
        Identity: IESEventFactory_Impl,
    {
        unsafe extern "system" fn CreateESEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pserviceprovider: *mut core::ffi::c_void, dweventid: u32, guideventtype: windows_core::GUID, dweventdatalength: u32, peventdata: *const u8, bstrbaseurl: core::mem::MaybeUninit<windows_core::BSTR>, pinitcontext: *mut core::ffi::c_void, ppesevent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESEventFactory_Impl::CreateESEvent(this, windows_core::from_raw_borrowed(&pserviceprovider), core::mem::transmute_copy(&dweventid), core::mem::transmute(&guideventtype), core::mem::transmute_copy(&dweventdatalength), core::mem::transmute_copy(&peventdata), core::mem::transmute(&bstrbaseurl), windows_core::from_raw_borrowed(&pinitcontext)) {
                Ok(ok__) => {
                    ppesevent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateESEvent: CreateESEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESEventFactory as windows_core::Interface>::IID
    }
}
pub trait IESEventService_Impl: Sized {
    fn FireESEvent(&self, pesevent: Option<&super::IESEvent>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IESEventService {}
impl IESEventService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESEventService_Vtbl
    where
        Identity: IESEventService_Impl,
    {
        unsafe extern "system" fn FireESEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pesevent: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventService_Impl::FireESEvent(this, windows_core::from_raw_borrowed(&pesevent)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), FireESEvent: FireESEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESEventService as windows_core::Interface>::IID
    }
}
pub trait IESEventServiceConfiguration_Impl: Sized {
    fn SetParent(&self, peventservice: Option<&IESEventService>) -> windows_core::Result<()>;
    fn RemoveParent(&self) -> windows_core::Result<()>;
    fn SetOwner(&self, pesevents: Option<&super::IESEvents>) -> windows_core::Result<()>;
    fn RemoveOwner(&self) -> windows_core::Result<()>;
    fn SetGraph(&self, pgraph: Option<&super::IFilterGraph>) -> windows_core::Result<()>;
    fn RemoveGraph(&self, pgraph: Option<&super::IFilterGraph>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IESEventServiceConfiguration {}
impl IESEventServiceConfiguration_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESEventServiceConfiguration_Vtbl
    where
        Identity: IESEventServiceConfiguration_Impl,
    {
        unsafe extern "system" fn SetParent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, peventservice: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventServiceConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventServiceConfiguration_Impl::SetParent(this, windows_core::from_raw_borrowed(&peventservice)).into()
        }
        unsafe extern "system" fn RemoveParent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventServiceConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventServiceConfiguration_Impl::RemoveParent(this).into()
        }
        unsafe extern "system" fn SetOwner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pesevents: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventServiceConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventServiceConfiguration_Impl::SetOwner(this, windows_core::from_raw_borrowed(&pesevents)).into()
        }
        unsafe extern "system" fn RemoveOwner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventServiceConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventServiceConfiguration_Impl::RemoveOwner(this).into()
        }
        unsafe extern "system" fn SetGraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pgraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventServiceConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventServiceConfiguration_Impl::SetGraph(this, windows_core::from_raw_borrowed(&pgraph)).into()
        }
        unsafe extern "system" fn RemoveGraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pgraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEventServiceConfiguration_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEventServiceConfiguration_Impl::RemoveGraph(this, windows_core::from_raw_borrowed(&pgraph)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetParent: SetParent::<Identity, OFFSET>,
            RemoveParent: RemoveParent::<Identity, OFFSET>,
            SetOwner: SetOwner::<Identity, OFFSET>,
            RemoveOwner: RemoveOwner::<Identity, OFFSET>,
            SetGraph: SetGraph::<Identity, OFFSET>,
            RemoveGraph: RemoveGraph::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESEventServiceConfiguration as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESFileExpiryDateEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetTunerId(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetExpiryDate(&self) -> windows_core::Result<u64>;
    fn GetFinalExpiryDate(&self) -> windows_core::Result<u64>;
    fn GetMaxRenewalCount(&self) -> windows_core::Result<u32>;
    fn IsEntitlementTokenPresent(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn DoesExpireAfterFirstUse(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESFileExpiryDateEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESFileExpiryDateEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESFileExpiryDateEvent_Vtbl
    where
        Identity: IESFileExpiryDateEvent_Impl,
    {
        unsafe extern "system" fn GetTunerId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidtunerid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IESFileExpiryDateEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESFileExpiryDateEvent_Impl::GetTunerId(this) {
                Ok(ok__) => {
                    pguidtunerid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExpiryDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqwexpirydate: *mut u64) -> windows_core::HRESULT
        where
            Identity: IESFileExpiryDateEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESFileExpiryDateEvent_Impl::GetExpiryDate(this) {
                Ok(ok__) => {
                    pqwexpirydate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFinalExpiryDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqwexpirydate: *mut u64) -> windows_core::HRESULT
        where
            Identity: IESFileExpiryDateEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESFileExpiryDateEvent_Impl::GetFinalExpiryDate(this) {
                Ok(ok__) => {
                    pqwexpirydate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMaxRenewalCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmaxrenewalcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESFileExpiryDateEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESFileExpiryDateEvent_Impl::GetMaxRenewalCount(this) {
                Ok(ok__) => {
                    dwmaxrenewalcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsEntitlementTokenPresent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenttokenpresent: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IESFileExpiryDateEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESFileExpiryDateEvent_Impl::IsEntitlementTokenPresent(this) {
                Ok(ok__) => {
                    pfenttokenpresent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DoesExpireAfterFirstUse<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfexpireafterfirstuse: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IESFileExpiryDateEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESFileExpiryDateEvent_Impl::DoesExpireAfterFirstUse(this) {
                Ok(ok__) => {
                    pfexpireafterfirstuse.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(),
            GetTunerId: GetTunerId::<Identity, OFFSET>,
            GetExpiryDate: GetExpiryDate::<Identity, OFFSET>,
            GetFinalExpiryDate: GetFinalExpiryDate::<Identity, OFFSET>,
            GetMaxRenewalCount: GetMaxRenewalCount::<Identity, OFFSET>,
            IsEntitlementTokenPresent: IsEntitlementTokenPresent::<Identity, OFFSET>,
            DoesExpireAfterFirstUse: DoesExpireAfterFirstUse::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESFileExpiryDateEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESIsdbCasResponseEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetRequestId(&self) -> windows_core::Result<u32>;
    fn GetStatus(&self) -> windows_core::Result<u32>;
    fn GetDataLength(&self) -> windows_core::Result<u32>;
    fn GetResponseData(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESIsdbCasResponseEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESIsdbCasResponseEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESIsdbCasResponseEvent_Vtbl
    where
        Identity: IESIsdbCasResponseEvent_Impl,
    {
        unsafe extern "system" fn GetRequestId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prequestid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESIsdbCasResponseEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESIsdbCasResponseEvent_Impl::GetRequestId(this) {
                Ok(ok__) => {
                    prequestid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstatus: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESIsdbCasResponseEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESIsdbCasResponseEvent_Impl::GetStatus(this) {
                Ok(ok__) => {
                    pstatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prequestlength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESIsdbCasResponseEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESIsdbCasResponseEvent_Impl::GetDataLength(this) {
                Ok(ok__) => {
                    prequestlength.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetResponseData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdata: *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT
        where
            Identity: IESIsdbCasResponseEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESIsdbCasResponseEvent_Impl::GetResponseData(this) {
                Ok(ok__) => {
                    pbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(),
            GetRequestId: GetRequestId::<Identity, OFFSET>,
            GetStatus: GetStatus::<Identity, OFFSET>,
            GetDataLength: GetDataLength::<Identity, OFFSET>,
            GetResponseData: GetResponseData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESIsdbCasResponseEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESLicenseRenewalResultEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetCallersId(&self) -> windows_core::Result<u32>;
    fn GetFileName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn IsRenewalSuccessful(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn IsCheckEntitlementCallRequired(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetDescrambledStatus(&self) -> windows_core::Result<u32>;
    fn GetRenewalResultCode(&self) -> windows_core::Result<u32>;
    fn GetCASFailureCode(&self) -> windows_core::Result<u32>;
    fn GetRenewalHResult(&self) -> windows_core::Result<windows_core::HRESULT>;
    fn GetEntitlementTokenLength(&self) -> windows_core::Result<u32>;
    fn GetEntitlementToken(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY>;
    fn GetExpiryDate(&self) -> windows_core::Result<u64>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESLicenseRenewalResultEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESLicenseRenewalResultEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESLicenseRenewalResultEvent_Vtbl
    where
        Identity: IESLicenseRenewalResultEvent_Impl,
    {
        unsafe extern "system" fn GetCallersId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcallersid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetCallersId(this) {
                Ok(ok__) => {
                    pdwcallersid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrfilename: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetFileName(this) {
                Ok(ok__) => {
                    pbstrfilename.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsRenewalSuccessful<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfrenewalsuccessful: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::IsRenewalSuccessful(this) {
                Ok(ok__) => {
                    pfrenewalsuccessful.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsCheckEntitlementCallRequired<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcheckenttokencallneeded: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::IsCheckEntitlementCallRequired(this) {
                Ok(ok__) => {
                    pfcheckenttokencallneeded.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDescrambledStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdescrambledstatus: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetDescrambledStatus(this) {
                Ok(ok__) => {
                    pdescrambledstatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRenewalResultCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwrenewalresultcode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetRenewalResultCode(this) {
                Ok(ok__) => {
                    pdwrenewalresultcode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASFailureCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcasfailurecode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetCASFailureCode(this) {
                Ok(ok__) => {
                    pdwcasfailurecode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRenewalHResult<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phr: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetRenewalHResult(this) {
                Ok(ok__) => {
                    phr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEntitlementTokenLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwlength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetEntitlementTokenLength(this) {
                Ok(ok__) => {
                    pdwlength.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEntitlementToken<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdata: *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetEntitlementToken(this) {
                Ok(ok__) => {
                    pbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExpiryDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqwexpirydate: *mut u64) -> windows_core::HRESULT
        where
            Identity: IESLicenseRenewalResultEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESLicenseRenewalResultEvent_Impl::GetExpiryDate(this) {
                Ok(ok__) => {
                    pqwexpirydate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(),
            GetCallersId: GetCallersId::<Identity, OFFSET>,
            GetFileName: GetFileName::<Identity, OFFSET>,
            IsRenewalSuccessful: IsRenewalSuccessful::<Identity, OFFSET>,
            IsCheckEntitlementCallRequired: IsCheckEntitlementCallRequired::<Identity, OFFSET>,
            GetDescrambledStatus: GetDescrambledStatus::<Identity, OFFSET>,
            GetRenewalResultCode: GetRenewalResultCode::<Identity, OFFSET>,
            GetCASFailureCode: GetCASFailureCode::<Identity, OFFSET>,
            GetRenewalHResult: GetRenewalHResult::<Identity, OFFSET>,
            GetEntitlementTokenLength: GetEntitlementTokenLength::<Identity, OFFSET>,
            GetEntitlementToken: GetEntitlementToken::<Identity, OFFSET>,
            GetExpiryDate: GetExpiryDate::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESLicenseRenewalResultEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESOpenMmiEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetDialogNumber(&self, pdialogrequest: *mut u32) -> windows_core::Result<u32>;
    fn GetDialogType(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetDialogData(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY>;
    fn GetDialogStringData(&self, pbstrbaseurl: *mut windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESOpenMmiEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESOpenMmiEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESOpenMmiEvent_Vtbl
    where
        Identity: IESOpenMmiEvent_Impl,
    {
        unsafe extern "system" fn GetDialogNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdialogrequest: *mut u32, pdialognumber: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESOpenMmiEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESOpenMmiEvent_Impl::GetDialogNumber(this, core::mem::transmute_copy(&pdialogrequest)) {
                Ok(ok__) => {
                    pdialognumber.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDialogType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guiddialogtype: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IESOpenMmiEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESOpenMmiEvent_Impl::GetDialogType(this) {
                Ok(ok__) => {
                    guiddialogtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDialogData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdata: *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT
        where
            Identity: IESOpenMmiEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESOpenMmiEvent_Impl::GetDialogData(this) {
                Ok(ok__) => {
                    pbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDialogStringData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrbaseurl: *mut core::mem::MaybeUninit<windows_core::BSTR>, pbstrdata: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IESOpenMmiEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESOpenMmiEvent_Impl::GetDialogStringData(this, core::mem::transmute_copy(&pbstrbaseurl)) {
                Ok(ok__) => {
                    pbstrdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(),
            GetDialogNumber: GetDialogNumber::<Identity, OFFSET>,
            GetDialogType: GetDialogType::<Identity, OFFSET>,
            GetDialogData: GetDialogData::<Identity, OFFSET>,
            GetDialogStringData: GetDialogStringData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESOpenMmiEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESRequestTunerEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetPriority(&self) -> windows_core::Result<u8>;
    fn GetReason(&self) -> windows_core::Result<u8>;
    fn GetConsequences(&self) -> windows_core::Result<u8>;
    fn GetEstimatedTime(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESRequestTunerEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESRequestTunerEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESRequestTunerEvent_Vtbl
    where
        Identity: IESRequestTunerEvent_Impl,
    {
        unsafe extern "system" fn GetPriority<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbypriority: *mut u8) -> windows_core::HRESULT
        where
            Identity: IESRequestTunerEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESRequestTunerEvent_Impl::GetPriority(this) {
                Ok(ok__) => {
                    pbypriority.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetReason<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbyreason: *mut u8) -> windows_core::HRESULT
        where
            Identity: IESRequestTunerEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESRequestTunerEvent_Impl::GetReason(this) {
                Ok(ok__) => {
                    pbyreason.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetConsequences<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbyconsequences: *mut u8) -> windows_core::HRESULT
        where
            Identity: IESRequestTunerEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESRequestTunerEvent_Impl::GetConsequences(this) {
                Ok(ok__) => {
                    pbyconsequences.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEstimatedTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwestimatedtime: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESRequestTunerEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESRequestTunerEvent_Impl::GetEstimatedTime(this) {
                Ok(ok__) => {
                    pdwestimatedtime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(),
            GetPriority: GetPriority::<Identity, OFFSET>,
            GetReason: GetReason::<Identity, OFFSET>,
            GetConsequences: GetConsequences::<Identity, OFFSET>,
            GetEstimatedTime: GetEstimatedTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESRequestTunerEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESValueUpdatedEvent_Impl: Sized + super::IESEvent_Impl {
    fn GetValueNames(&self) -> windows_core::Result<*mut super::super::super::System::Com::SAFEARRAY>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESValueUpdatedEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESValueUpdatedEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESValueUpdatedEvent_Vtbl
    where
        Identity: IESValueUpdatedEvent_Impl,
    {
        unsafe extern "system" fn GetValueNames<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrnames: *mut *mut super::super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT
        where
            Identity: IESValueUpdatedEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESValueUpdatedEvent_Impl::GetValueNames(this) {
                Ok(ok__) => {
                    pbstrnames.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: super::IESEvent_Vtbl::new::<Identity, OFFSET>(), GetValueNames: GetValueNames::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESValueUpdatedEvent as windows_core::Interface>::IID || iid == &<super::IESEvent as windows_core::Interface>::IID
    }
}
pub trait IETFilter_Impl: Sized {
    fn EvalRatObjOK(&self) -> windows_core::Result<windows_core::HRESULT>;
    fn GetCurrRating(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::Result<()>;
    fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> windows_core::Result<i32>;
    fn GetLastErrorCode(&self) -> windows_core::Result<()>;
    fn SetRecordingOn(&self, frecstate: super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IETFilter {}
impl IETFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IETFilter_Vtbl
    where
        Identity: IETFilter_Impl,
    {
        unsafe extern "system" fn EvalRatObjOK<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phrcocreateretval: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IETFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IETFilter_Impl::EvalRatObjOK(this) {
                Ok(ok__) => {
                    phrcocreateretval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrRating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::HRESULT
        where
            Identity: IETFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IETFilter_Impl::GetCurrRating(this, core::mem::transmute_copy(&pensystem), core::mem::transmute_copy(&penrating), core::mem::transmute_copy(&plbfenattr)).into()
        }
        unsafe extern "system" fn GetCurrLicenseExpDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prottype: *const ProtType, lpdatetime: *mut i32) -> windows_core::HRESULT
        where
            Identity: IETFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IETFilter_Impl::GetCurrLicenseExpDate(this, core::mem::transmute_copy(&prottype)) {
                Ok(ok__) => {
                    lpdatetime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastErrorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IETFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IETFilter_Impl::GetLastErrorCode(this).into()
        }
        unsafe extern "system" fn SetRecordingOn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, frecstate: super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IETFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IETFilter_Impl::SetRecordingOn(this, core::mem::transmute_copy(&frecstate)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EvalRatObjOK: EvalRatObjOK::<Identity, OFFSET>,
            GetCurrRating: GetCurrRating::<Identity, OFFSET>,
            GetCurrLicenseExpDate: GetCurrLicenseExpDate::<Identity, OFFSET>,
            GetLastErrorCode: GetLastErrorCode::<Identity, OFFSET>,
            SetRecordingOn: SetRecordingOn::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IETFilter as windows_core::Interface>::IID
    }
}
pub trait IETFilterConfig_Impl: Sized {
    fn InitLicense(&self, licenseid: i32) -> windows_core::Result<()>;
    fn GetSecureChannelObject(&self) -> windows_core::Result<windows_core::IUnknown>;
}
impl windows_core::RuntimeName for IETFilterConfig {}
impl IETFilterConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IETFilterConfig_Vtbl
    where
        Identity: IETFilterConfig_Impl,
    {
        unsafe extern "system" fn InitLicense<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, licenseid: i32) -> windows_core::HRESULT
        where
            Identity: IETFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IETFilterConfig_Impl::InitLicense(this, core::mem::transmute_copy(&licenseid)).into()
        }
        unsafe extern "system" fn GetSecureChannelObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunkdrmsecurechannel: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IETFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IETFilterConfig_Impl::GetSecureChannelObject(this) {
                Ok(ok__) => {
                    ppunkdrmsecurechannel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitLicense: InitLicense::<Identity, OFFSET>,
            GetSecureChannelObject: GetSecureChannelObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IETFilterConfig as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IETFilterEvents_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IETFilterEvents {}
#[cfg(feature = "Win32_System_Com")]
impl IETFilterEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IETFilterEvents_Vtbl
    where
        Identity: IETFilterEvents_Impl,
    {
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IETFilterEvents as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumComponentTypes_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<IComponentType>, 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<IEnumComponentTypes>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumComponentTypes {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumComponentTypes_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumComponentTypes_Vtbl
    where
        Identity: IEnumComponentTypes_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: IEnumComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumComponentTypes_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: IEnumComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumComponentTypes_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: IEnumComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumComponentTypes_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: IEnumComponentTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumComponentTypes_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 == &<IEnumComponentTypes as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumComponents_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<IComponent>, 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<IEnumComponents>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumComponents {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumComponents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumComponents_Vtbl
    where
        Identity: IEnumComponents_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: IEnumComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumComponents_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: IEnumComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumComponents_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: IEnumComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumComponents_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: IEnumComponents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumComponents_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 == &<IEnumComponents as windows_core::Interface>::IID
    }
}
pub trait IEnumGuideDataProperties_Impl: Sized {
    fn Next(&self, celt: u32, ppprop: *mut Option<IGuideDataProperty>, pcelt: *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<IEnumGuideDataProperties>;
}
impl windows_core::RuntimeName for IEnumGuideDataProperties {}
impl IEnumGuideDataProperties_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumGuideDataProperties_Vtbl
    where
        Identity: IEnumGuideDataProperties_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, ppprop: *mut *mut core::ffi::c_void, pcelt: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumGuideDataProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumGuideDataProperties_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&ppprop), core::mem::transmute_copy(&pcelt)).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: IEnumGuideDataProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumGuideDataProperties_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: IEnumGuideDataProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumGuideDataProperties_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: IEnumGuideDataProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumGuideDataProperties_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 == &<IEnumGuideDataProperties as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumMSVidGraphSegment_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<IMSVidGraphSegment>, 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<IEnumMSVidGraphSegment>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumMSVidGraphSegment {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumMSVidGraphSegment_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumMSVidGraphSegment_Vtbl
    where
        Identity: IEnumMSVidGraphSegment_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: IEnumMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumMSVidGraphSegment_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: IEnumMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumMSVidGraphSegment_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: IEnumMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumMSVidGraphSegment_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: IEnumMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumMSVidGraphSegment_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 == &<IEnumMSVidGraphSegment as windows_core::Interface>::IID
    }
}
pub trait IEnumStreamBufferRecordingAttrib_Impl: Sized {
    fn Next(&self, crequest: u32, pstreambufferattribute: *mut STREAMBUFFER_ATTRIBUTE, pcreceived: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, crecords: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumStreamBufferRecordingAttrib>;
}
impl windows_core::RuntimeName for IEnumStreamBufferRecordingAttrib {}
impl IEnumStreamBufferRecordingAttrib_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumStreamBufferRecordingAttrib_Vtbl
    where
        Identity: IEnumStreamBufferRecordingAttrib_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, crequest: u32, pstreambufferattribute: *mut STREAMBUFFER_ATTRIBUTE, pcreceived: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumStreamBufferRecordingAttrib_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumStreamBufferRecordingAttrib_Impl::Next(this, core::mem::transmute_copy(&crequest), core::mem::transmute_copy(&pstreambufferattribute), core::mem::transmute_copy(&pcreceived)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, crecords: u32) -> windows_core::HRESULT
        where
            Identity: IEnumStreamBufferRecordingAttrib_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumStreamBufferRecordingAttrib_Impl::Skip(this, core::mem::transmute_copy(&crecords)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumStreamBufferRecordingAttrib_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumStreamBufferRecordingAttrib_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumstreambufferattrib: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumStreamBufferRecordingAttrib_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumStreamBufferRecordingAttrib_Impl::Clone(this) {
                Ok(ok__) => {
                    ppienumstreambufferattrib.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 == &<IEnumStreamBufferRecordingAttrib as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumTuneRequests_Impl: Sized {
    fn Next(&self, celt: u32, ppprop: *mut Option<ITuneRequest>, pcelt: *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<IEnumTuneRequests>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumTuneRequests {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumTuneRequests_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumTuneRequests_Vtbl
    where
        Identity: IEnumTuneRequests_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, ppprop: *mut *mut core::ffi::c_void, pcelt: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumTuneRequests_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTuneRequests_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&ppprop), core::mem::transmute_copy(&pcelt)).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: IEnumTuneRequests_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTuneRequests_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: IEnumTuneRequests_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTuneRequests_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: IEnumTuneRequests_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumTuneRequests_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 == &<IEnumTuneRequests as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumTuningSpaces_Impl: Sized {
    fn Next(&self, celt: u32, rgelt: *mut Option<ITuningSpace>, 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<IEnumTuningSpaces>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumTuningSpaces {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumTuningSpaces_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumTuningSpaces_Vtbl
    where
        Identity: IEnumTuningSpaces_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: IEnumTuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTuningSpaces_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: IEnumTuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTuningSpaces_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: IEnumTuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumTuningSpaces_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: IEnumTuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumTuningSpaces_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 == &<IEnumTuningSpaces as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEvalRat_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn get_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel) -> windows_core::Result<i32>;
    fn put_BlockedRatingAttributes(&self, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> windows_core::Result<()>;
    fn BlockUnRated(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn SetBlockUnRated(&self, fblockunratedshows: super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn MostRestrictiveRating(&self, ensystem1: EnTvRat_System, enenlevel1: EnTvRat_GenericLevel, lbfenattr1: i32, ensystem2: EnTvRat_System, enenlevel2: EnTvRat_GenericLevel, lbfenattr2: i32, pensystem: *mut EnTvRat_System, penenlevel: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::Result<()>;
    fn TestRating(&self, enshowsystem: EnTvRat_System, enshowlevel: EnTvRat_GenericLevel, lbfenshowattributes: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEvalRat {}
#[cfg(feature = "Win32_System_Com")]
impl IEvalRat_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEvalRat_Vtbl
    where
        Identity: IEvalRat_Impl,
    {
        unsafe extern "system" fn get_BlockedRatingAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, plbfattrs: *mut i32) -> windows_core::HRESULT
        where
            Identity: IEvalRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEvalRat_Impl::get_BlockedRatingAttributes(this, core::mem::transmute_copy(&ensystem), core::mem::transmute_copy(&enlevel)) {
                Ok(ok__) => {
                    plbfattrs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_BlockedRatingAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ensystem: EnTvRat_System, enlevel: EnTvRat_GenericLevel, lbfattrs: i32) -> windows_core::HRESULT
        where
            Identity: IEvalRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEvalRat_Impl::put_BlockedRatingAttributes(this, core::mem::transmute_copy(&ensystem), core::mem::transmute_copy(&enlevel), core::mem::transmute_copy(&lbfattrs)).into()
        }
        unsafe extern "system" fn BlockUnRated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfblockunratedshows: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IEvalRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEvalRat_Impl::BlockUnRated(this) {
                Ok(ok__) => {
                    pfblockunratedshows.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBlockUnRated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fblockunratedshows: super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IEvalRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEvalRat_Impl::SetBlockUnRated(this, core::mem::transmute_copy(&fblockunratedshows)).into()
        }
        unsafe extern "system" fn MostRestrictiveRating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ensystem1: EnTvRat_System, enenlevel1: EnTvRat_GenericLevel, lbfenattr1: i32, ensystem2: EnTvRat_System, enenlevel2: EnTvRat_GenericLevel, lbfenattr2: i32, pensystem: *mut EnTvRat_System, penenlevel: *mut EnTvRat_GenericLevel, plbfenattr: *mut i32) -> windows_core::HRESULT
        where
            Identity: IEvalRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEvalRat_Impl::MostRestrictiveRating(this, core::mem::transmute_copy(&ensystem1), core::mem::transmute_copy(&enenlevel1), core::mem::transmute_copy(&lbfenattr1), core::mem::transmute_copy(&ensystem2), core::mem::transmute_copy(&enenlevel2), core::mem::transmute_copy(&lbfenattr2), core::mem::transmute_copy(&pensystem), core::mem::transmute_copy(&penenlevel), core::mem::transmute_copy(&plbfenattr)).into()
        }
        unsafe extern "system" fn TestRating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enshowsystem: EnTvRat_System, enshowlevel: EnTvRat_GenericLevel, lbfenshowattributes: i32) -> windows_core::HRESULT
        where
            Identity: IEvalRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEvalRat_Impl::TestRating(this, core::mem::transmute_copy(&enshowsystem), core::mem::transmute_copy(&enshowlevel), core::mem::transmute_copy(&lbfenshowattributes)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            get_BlockedRatingAttributes: get_BlockedRatingAttributes::<Identity, OFFSET>,
            put_BlockedRatingAttributes: put_BlockedRatingAttributes::<Identity, OFFSET>,
            BlockUnRated: BlockUnRated::<Identity, OFFSET>,
            SetBlockUnRated: SetBlockUnRated::<Identity, OFFSET>,
            MostRestrictiveRating: MostRestrictiveRating::<Identity, OFFSET>,
            TestRating: TestRating::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEvalRat as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IGenericDescriptor_Impl: Sized {
    fn Initialize(&self, pbdesc: *const u8, bcount: i32) -> windows_core::Result<()>;
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetBody(&self) -> windows_core::Result<*mut u8>;
}
impl windows_core::RuntimeName for IGenericDescriptor {}
impl IGenericDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGenericDescriptor_Vtbl
    where
        Identity: IGenericDescriptor_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdesc: *const u8, bcount: i32) -> windows_core::HRESULT
        where
            Identity: IGenericDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGenericDescriptor_Impl::Initialize(this, core::mem::transmute_copy(&pbdesc), core::mem::transmute_copy(&bcount)).into()
        }
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IGenericDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGenericDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IGenericDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGenericDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBody<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbval: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IGenericDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGenericDescriptor_Impl::GetBody(this) {
                Ok(ok__) => {
                    ppbval.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>,
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetBody: GetBody::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGenericDescriptor as windows_core::Interface>::IID
    }
}
pub trait IGenericDescriptor2_Impl: Sized + IGenericDescriptor_Impl {
    fn Initialize(&self, pbdesc: *const u8, wcount: u16) -> windows_core::Result<()>;
    fn GetLength(&self) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IGenericDescriptor2 {}
impl IGenericDescriptor2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGenericDescriptor2_Vtbl
    where
        Identity: IGenericDescriptor2_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdesc: *const u8, wcount: u16) -> windows_core::HRESULT
        where
            Identity: IGenericDescriptor2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGenericDescriptor2_Impl::Initialize(this, core::mem::transmute_copy(&pbdesc), core::mem::transmute_copy(&wcount)).into()
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IGenericDescriptor2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGenericDescriptor2_Impl::GetLength(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IGenericDescriptor_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET>, GetLength: GetLength::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGenericDescriptor2 as windows_core::Interface>::IID || iid == &<IGenericDescriptor as windows_core::Interface>::IID
    }
}
pub trait IGpnvsCommonBase_Impl: Sized {
    fn GetValueUpdateName(&self) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IGpnvsCommonBase {}
impl IGpnvsCommonBase_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGpnvsCommonBase_Vtbl
    where
        Identity: IGpnvsCommonBase_Impl,
    {
        unsafe extern "system" fn GetValueUpdateName<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: IGpnvsCommonBase_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGpnvsCommonBase_Impl::GetValueUpdateName(this) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetValueUpdateName: GetValueUpdateName::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGpnvsCommonBase as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IGuideData_Impl: Sized {
    fn GetServices(&self) -> windows_core::Result<IEnumTuneRequests>;
    fn GetServiceProperties(&self, ptunerequest: Option<&ITuneRequest>) -> windows_core::Result<IEnumGuideDataProperties>;
    fn GetGuideProgramIDs(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn GetProgramProperties(&self, varprogramdescriptionid: &windows_core::VARIANT) -> windows_core::Result<IEnumGuideDataProperties>;
    fn GetScheduleEntryIDs(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn GetScheduleEntryProperties(&self, varscheduleentrydescriptionid: &windows_core::VARIANT) -> windows_core::Result<IEnumGuideDataProperties>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IGuideData {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IGuideData_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGuideData_Vtbl
    where
        Identity: IGuideData_Impl,
    {
        unsafe extern "system" fn GetServices<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumtunerequests: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideData_Impl::GetServices(this) {
                Ok(ok__) => {
                    ppenumtunerequests.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptunerequest: *mut core::ffi::c_void, ppenumproperties: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideData_Impl::GetServiceProperties(this, windows_core::from_raw_borrowed(&ptunerequest)) {
                Ok(ok__) => {
                    ppenumproperties.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuideProgramIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penumprograms: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideData_Impl::GetGuideProgramIDs(this) {
                Ok(ok__) => {
                    penumprograms.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProgramProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varprogramdescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>, ppenumproperties: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideData_Impl::GetProgramProperties(this, core::mem::transmute(&varprogramdescriptionid)) {
                Ok(ok__) => {
                    ppenumproperties.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetScheduleEntryIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penumscheduleentries: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideData_Impl::GetScheduleEntryIDs(this) {
                Ok(ok__) => {
                    penumscheduleentries.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetScheduleEntryProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varscheduleentrydescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>, ppenumproperties: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideData_Impl::GetScheduleEntryProperties(this, core::mem::transmute(&varscheduleentrydescriptionid)) {
                Ok(ok__) => {
                    ppenumproperties.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetServices: GetServices::<Identity, OFFSET>,
            GetServiceProperties: GetServiceProperties::<Identity, OFFSET>,
            GetGuideProgramIDs: GetGuideProgramIDs::<Identity, OFFSET>,
            GetProgramProperties: GetProgramProperties::<Identity, OFFSET>,
            GetScheduleEntryIDs: GetScheduleEntryIDs::<Identity, OFFSET>,
            GetScheduleEntryProperties: GetScheduleEntryProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGuideData as windows_core::Interface>::IID
    }
}
pub trait IGuideDataEvent_Impl: Sized {
    fn GuideDataAcquired(&self) -> windows_core::Result<()>;
    fn ProgramChanged(&self, varprogramdescriptionid: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn ServiceChanged(&self, varservicedescriptionid: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn ScheduleEntryChanged(&self, varscheduleentrydescriptionid: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn ProgramDeleted(&self, varprogramdescriptionid: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn ServiceDeleted(&self, varservicedescriptionid: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn ScheduleDeleted(&self, varscheduleentrydescriptionid: &windows_core::VARIANT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IGuideDataEvent {}
impl IGuideDataEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGuideDataEvent_Vtbl
    where
        Identity: IGuideDataEvent_Impl,
    {
        unsafe extern "system" fn GuideDataAcquired<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::GuideDataAcquired(this).into()
        }
        unsafe extern "system" fn ProgramChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varprogramdescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::ProgramChanged(this, core::mem::transmute(&varprogramdescriptionid)).into()
        }
        unsafe extern "system" fn ServiceChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varservicedescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::ServiceChanged(this, core::mem::transmute(&varservicedescriptionid)).into()
        }
        unsafe extern "system" fn ScheduleEntryChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varscheduleentrydescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::ScheduleEntryChanged(this, core::mem::transmute(&varscheduleentrydescriptionid)).into()
        }
        unsafe extern "system" fn ProgramDeleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varprogramdescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::ProgramDeleted(this, core::mem::transmute(&varprogramdescriptionid)).into()
        }
        unsafe extern "system" fn ServiceDeleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varservicedescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::ServiceDeleted(this, core::mem::transmute(&varservicedescriptionid)).into()
        }
        unsafe extern "system" fn ScheduleDeleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varscheduleentrydescriptionid: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataEvent_Impl::ScheduleDeleted(this, core::mem::transmute(&varscheduleentrydescriptionid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GuideDataAcquired: GuideDataAcquired::<Identity, OFFSET>,
            ProgramChanged: ProgramChanged::<Identity, OFFSET>,
            ServiceChanged: ServiceChanged::<Identity, OFFSET>,
            ScheduleEntryChanged: ScheduleEntryChanged::<Identity, OFFSET>,
            ProgramDeleted: ProgramDeleted::<Identity, OFFSET>,
            ServiceDeleted: ServiceDeleted::<Identity, OFFSET>,
            ScheduleDeleted: ScheduleDeleted::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGuideDataEvent as windows_core::Interface>::IID
    }
}
pub trait IGuideDataLoader_Impl: Sized {
    fn Init(&self, pguidestore: Option<&IGuideData>) -> windows_core::Result<()>;
    fn Terminate(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IGuideDataLoader {}
impl IGuideDataLoader_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGuideDataLoader_Vtbl
    where
        Identity: IGuideDataLoader_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidestore: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideDataLoader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataLoader_Impl::Init(this, windows_core::from_raw_borrowed(&pguidestore)).into()
        }
        unsafe extern "system" fn Terminate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGuideDataLoader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGuideDataLoader_Impl::Terminate(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET>, Terminate: Terminate::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGuideDataLoader as windows_core::Interface>::IID
    }
}
pub trait IGuideDataProperty_Impl: Sized {
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Language(&self) -> windows_core::Result<i32>;
    fn Value(&self) -> windows_core::Result<windows_core::VARIANT>;
}
impl windows_core::RuntimeName for IGuideDataProperty {}
impl IGuideDataProperty_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGuideDataProperty_Vtbl
    where
        Identity: IGuideDataProperty_Impl,
    {
        unsafe extern "system" fn Name<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: IGuideDataProperty_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideDataProperty_Impl::Name(this) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Language<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idlang: *mut i32) -> windows_core::HRESULT
        where
            Identity: IGuideDataProperty_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideDataProperty_Impl::Language(this) {
                Ok(ok__) => {
                    idlang.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, pvar: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IGuideDataProperty_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGuideDataProperty_Impl::Value(this) {
                Ok(ok__) => {
                    pvar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Name: Name::<Identity, OFFSET>,
            Language: Language::<Identity, OFFSET>,
            Value: Value::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGuideDataProperty as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IISDBSLocator_Impl: Sized + IDVBSLocator_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IISDBSLocator {}
#[cfg(feature = "Win32_System_Com")]
impl IISDBSLocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDBSLocator_Vtbl
    where
        Identity: IISDBSLocator_Impl,
    {
        Self { base__: IDVBSLocator_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDBSLocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ILocator as windows_core::Interface>::IID || iid == &<IDigitalLocator as windows_core::Interface>::IID || iid == &<IDVBSLocator as windows_core::Interface>::IID
    }
}
pub trait IISDB_BIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetBroadcastViewPropriety(&self) -> windows_core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordBroadcasterId(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IISDB_BIT {}
impl IISDB_BIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_BIT_Vtbl
    where
        Identity: IISDB_BIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_BIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBroadcastViewPropriety<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetBroadcastViewPropriety(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_BIT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordBroadcasterId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetRecordBroadcasterId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_BIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_BIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_BIT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetBroadcastViewPropriety: GetBroadcastViewPropriety::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordBroadcasterId: GetRecordBroadcasterId::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_BIT as windows_core::Interface>::IID
    }
}
pub trait IISDB_CDT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>, bsectionnumber: u8) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetDownloadDataId(&self) -> windows_core::Result<u16>;
    fn GetSectionNumber(&self) -> windows_core::Result<u8>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetDataType(&self) -> windows_core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetSizeOfDataModule(&self) -> windows_core::Result<u32>;
    fn GetDataModule(&self) -> windows_core::Result<*mut u8>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IISDB_CDT {}
impl IISDB_CDT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_CDT_Vtbl
    where
        Identity: IISDB_CDT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void, bsectionnumber: u8) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_CDT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata), core::mem::transmute_copy(&bsectionnumber)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDownloadDataId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetDownloadDataId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSectionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetSectionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetDataType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_CDT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetSizeOfDataModule<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetSizeOfDataModule(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataModule<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdata: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetDataModule(this) {
                Ok(ok__) => {
                    pbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_CDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_CDT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetDownloadDataId: GetDownloadDataId::<Identity, OFFSET>,
            GetSectionNumber: GetSectionNumber::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetDataType: GetDataType::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            GetSizeOfDataModule: GetSizeOfDataModule::<Identity, OFFSET>,
            GetDataModule: GetDataModule::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_CDT as windows_core::Interface>::IID
    }
}
pub trait IISDB_EMM_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetTableIdExtension(&self) -> windows_core::Result<u16>;
    fn GetDataBytes(&self, pwbufferlength: *mut u16, pbbuffer: *mut u8) -> windows_core::Result<()>;
    fn GetSharedEmmMessage(&self, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> windows_core::Result<()>;
    fn GetIndividualEmmMessage(&self, punknown: Option<&windows_core::IUnknown>, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IISDB_EMM {}
impl IISDB_EMM_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_EMM_Vtbl
    where
        Identity: IISDB_EMM_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_EMM_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_EMM_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableIdExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_EMM_Impl::GetTableIdExtension(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwbufferlength: *mut u16, pbbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_EMM_Impl::GetDataBytes(this, core::mem::transmute_copy(&pwbufferlength), core::mem::transmute_copy(&pbbuffer)).into()
        }
        unsafe extern "system" fn GetSharedEmmMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_EMM_Impl::GetSharedEmmMessage(this, core::mem::transmute_copy(&pwlength), core::mem::transmute_copy(&ppbmessage)).into()
        }
        unsafe extern "system" fn GetIndividualEmmMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punknown: *mut core::ffi::c_void, pwlength: *mut u16, ppbmessage: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_EMM_Impl::GetIndividualEmmMessage(this, windows_core::from_raw_borrowed(&punknown), core::mem::transmute_copy(&pwlength), core::mem::transmute_copy(&ppbmessage)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_EMM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_EMM_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetTableIdExtension: GetTableIdExtension::<Identity, OFFSET>,
            GetDataBytes: GetDataBytes::<Identity, OFFSET>,
            GetSharedEmmMessage: GetSharedEmmMessage::<Identity, OFFSET>,
            GetIndividualEmmMessage: GetIndividualEmmMessage::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_EMM as windows_core::Interface>::IID
    }
}
pub trait IISDB_LDT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetOriginalServiceId(&self) -> windows_core::Result<u16>;
    fn GetTransportStreamId(&self) -> windows_core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordDescriptionId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IISDB_LDT {}
impl IISDB_LDT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_LDT_Vtbl
    where
        Identity: IISDB_LDT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_LDT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetOriginalServiceId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetTransportStreamId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptionId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetRecordDescriptionId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_LDT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_LDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_LDT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetOriginalServiceId: GetOriginalServiceId::<Identity, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordDescriptionId: GetRecordDescriptionId::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_LDT as windows_core::Interface>::IID
    }
}
pub trait IISDB_NBIT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordInformationId(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordInformationType(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordDescriptionBodyLocation(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordMessageSectionNumber(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordUserDefined(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordNumberOfKeys(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordKeys(&self, dwrecordindex: u32) -> windows_core::Result<*mut u8>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IISDB_NBIT {}
impl IISDB_NBIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_NBIT_Vtbl
    where
        Identity: IISDB_NBIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_NBIT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordInformationId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordInformationId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordInformationType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordInformationType(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptionBodyLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordDescriptionBodyLocation(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordMessageSectionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordMessageSectionNumber(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordUserDefined<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordUserDefined(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfKeys<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordNumberOfKeys(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordKeys<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbkeys: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordKeys(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbkeys.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_NBIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_NBIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_NBIT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordInformationId: GetRecordInformationId::<Identity, OFFSET>,
            GetRecordInformationType: GetRecordInformationType::<Identity, OFFSET>,
            GetRecordDescriptionBodyLocation: GetRecordDescriptionBodyLocation::<Identity, OFFSET>,
            GetRecordMessageSectionNumber: GetRecordMessageSectionNumber::<Identity, OFFSET>,
            GetRecordUserDefined: GetRecordUserDefined::<Identity, OFFSET>,
            GetRecordNumberOfKeys: GetRecordNumberOfKeys::<Identity, OFFSET>,
            GetRecordKeys: GetRecordKeys::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_NBIT as windows_core::Interface>::IID
    }
}
pub trait IISDB_SDT_Impl: Sized + IDVB_SDT_Impl {
    fn GetRecordEITUserDefinedFlags(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
}
impl windows_core::RuntimeName for IISDB_SDT {}
impl IISDB_SDT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_SDT_Vtbl
    where
        Identity: IISDB_SDT_Impl,
    {
        unsafe extern "system" fn GetRecordEITUserDefinedFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_SDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDT_Impl::GetRecordEITUserDefinedFlags(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IDVB_SDT_Vtbl::new::<Identity, OFFSET>(), GetRecordEITUserDefinedFlags: GetRecordEITUserDefinedFlags::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_SDT as windows_core::Interface>::IID || iid == &<IDVB_SDT as windows_core::Interface>::IID
    }
}
pub trait IISDB_SDTT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetTableIdExt(&self) -> windows_core::Result<u16>;
    fn GetTransportStreamId(&self) -> windows_core::Result<u16>;
    fn GetOriginalNetworkId(&self) -> windows_core::Result<u16>;
    fn GetServiceId(&self) -> windows_core::Result<u16>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordGroup(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordTargetVersion(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordNewVersion(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordDownloadLevel(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordVersionIndicator(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordScheduleTimeShiftInformation(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordCountOfSchedules(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordStartTimeByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordDurationByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<MPEG_TIME>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetVersionHash(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IISDB_SDTT {}
impl IISDB_SDTT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IISDB_SDTT_Vtbl
    where
        Identity: IISDB_SDTT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_SDTT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableIdExt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetTableIdExt(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetTransportStreamId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginalNetworkId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetOriginalNetworkId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetServiceId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordGroup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordGroup(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTargetVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordTargetVersion(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNewVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordNewVersion(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDownloadLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordDownloadLevel(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordVersionIndicator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordVersionIndicator(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordScheduleTimeShiftInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordScheduleTimeShiftInformation(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfSchedules<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordCountOfSchedules(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTimeByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordStartTimeByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    pmdtval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDurationByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, pmdval: *mut MPEG_TIME) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordDurationByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    pmdval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IISDB_SDTT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetVersionHash<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwversionhash: *mut u32) -> windows_core::HRESULT
        where
            Identity: IISDB_SDTT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IISDB_SDTT_Impl::GetVersionHash(this) {
                Ok(ok__) => {
                    pdwversionhash.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>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetTableIdExt: GetTableIdExt::<Identity, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, OFFSET>,
            GetOriginalNetworkId: GetOriginalNetworkId::<Identity, OFFSET>,
            GetServiceId: GetServiceId::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordGroup: GetRecordGroup::<Identity, OFFSET>,
            GetRecordTargetVersion: GetRecordTargetVersion::<Identity, OFFSET>,
            GetRecordNewVersion: GetRecordNewVersion::<Identity, OFFSET>,
            GetRecordDownloadLevel: GetRecordDownloadLevel::<Identity, OFFSET>,
            GetRecordVersionIndicator: GetRecordVersionIndicator::<Identity, OFFSET>,
            GetRecordScheduleTimeShiftInformation: GetRecordScheduleTimeShiftInformation::<Identity, OFFSET>,
            GetRecordCountOfSchedules: GetRecordCountOfSchedules::<Identity, OFFSET>,
            GetRecordStartTimeByIndex: GetRecordStartTimeByIndex::<Identity, OFFSET>,
            GetRecordDurationByIndex: GetRecordDurationByIndex::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            GetVersionHash: GetVersionHash::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IISDB_SDTT as windows_core::Interface>::IID
    }
}
pub trait IIsdbAudioComponentDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetStreamContent(&self) -> windows_core::Result<u8>;
    fn GetComponentType(&self) -> windows_core::Result<u8>;
    fn GetComponentTag(&self) -> windows_core::Result<u8>;
    fn GetStreamType(&self) -> windows_core::Result<u8>;
    fn GetSimulcastGroupTag(&self) -> windows_core::Result<u8>;
    fn GetESMultiLingualFlag(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetMainComponentFlag(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn GetQualityIndicator(&self) -> windows_core::Result<u8>;
    fn GetSamplingRate(&self) -> windows_core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetLanguageCode2(&self, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbAudioComponentDescriptor {}
impl IIsdbAudioComponentDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbAudioComponentDescriptor_Vtbl
    where
        Identity: IIsdbAudioComponentDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamContent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetStreamContent(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetComponentType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetComponentTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetStreamType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSimulcastGroupTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetSimulcastGroupTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetESMultiLingualFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetESMultiLingualFlag(this) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMainComponentFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfval: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetMainComponentFlag(this) {
                Ok(ok__) => {
                    pfval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetQualityIndicator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetQualityIndicator(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSamplingRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetSamplingRate(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbAudioComponentDescriptor_Impl::GetLanguageCode(this, core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetLanguageCode2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbAudioComponentDescriptor_Impl::GetLanguageCode2(this, core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbAudioComponentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbAudioComponentDescriptor_Impl::GetTextW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetStreamContent: GetStreamContent::<Identity, OFFSET>,
            GetComponentType: GetComponentType::<Identity, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, OFFSET>,
            GetStreamType: GetStreamType::<Identity, OFFSET>,
            GetSimulcastGroupTag: GetSimulcastGroupTag::<Identity, OFFSET>,
            GetESMultiLingualFlag: GetESMultiLingualFlag::<Identity, OFFSET>,
            GetMainComponentFlag: GetMainComponentFlag::<Identity, OFFSET>,
            GetQualityIndicator: GetQualityIndicator::<Identity, OFFSET>,
            GetSamplingRate: GetSamplingRate::<Identity, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, OFFSET>,
            GetLanguageCode2: GetLanguageCode2::<Identity, OFFSET>,
            GetTextW: GetTextW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbAudioComponentDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbCAContractInformationDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCASystemId(&self) -> windows_core::Result<u16>;
    fn GetCAUnitId(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordComponentTag(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetContractVerificationInfoLength(&self) -> windows_core::Result<u8>;
    fn GetContractVerificationInfo(&self, bbuflength: u8) -> windows_core::Result<u8>;
    fn GetFeeNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbCAContractInformationDescriptor {}
impl IIsdbCAContractInformationDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbCAContractInformationDescriptor_Vtbl
    where
        Identity: IIsdbCAContractInformationDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASystemId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetCASystemId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAUnitId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetCAUnitId(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordComponentTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetRecordComponentTag(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContractVerificationInfoLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetContractVerificationInfoLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContractVerificationInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bbuflength: u8, pbbuf: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetContractVerificationInfo(this, core::mem::transmute_copy(&bbuflength)) {
                Ok(ok__) => {
                    pbbuf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFeeNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbCAContractInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAContractInformationDescriptor_Impl::GetFeeNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCASystemId: GetCASystemId::<Identity, OFFSET>,
            GetCAUnitId: GetCAUnitId::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordComponentTag: GetRecordComponentTag::<Identity, OFFSET>,
            GetContractVerificationInfoLength: GetContractVerificationInfoLength::<Identity, OFFSET>,
            GetContractVerificationInfo: GetContractVerificationInfo::<Identity, OFFSET>,
            GetFeeNameW: GetFeeNameW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbCAContractInformationDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbCADescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCASystemId(&self) -> windows_core::Result<u16>;
    fn GetReservedBits(&self) -> windows_core::Result<u8>;
    fn GetCAPID(&self) -> windows_core::Result<u16>;
    fn GetPrivateDataBytes(&self, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIsdbCADescriptor {}
impl IIsdbCADescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbCADescriptor_Vtbl
    where
        Identity: IIsdbCADescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCADescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCADescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCADescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCADescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASystemId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbCADescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCADescriptor_Impl::GetCASystemId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetReservedBits<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCADescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCADescriptor_Impl::GetReservedBits(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCAPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbCADescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCADescriptor_Impl::GetCAPID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrivateDataBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCADescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbCADescriptor_Impl::GetPrivateDataBytes(this, core::mem::transmute_copy(&pbbufferlength), core::mem::transmute_copy(&pbbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCASystemId: GetCASystemId::<Identity, OFFSET>,
            GetReservedBits: GetReservedBits::<Identity, OFFSET>,
            GetCAPID: GetCAPID::<Identity, OFFSET>,
            GetPrivateDataBytes: GetPrivateDataBytes::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbCADescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbCAServiceDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCASystemId(&self) -> windows_core::Result<u16>;
    fn GetCABroadcasterGroupId(&self) -> windows_core::Result<u8>;
    fn GetMessageControl(&self) -> windows_core::Result<u8>;
    fn GetServiceIds(&self, pbnumserviceids: *mut u8, pwserviceids: *mut u16) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIsdbCAServiceDescriptor {}
impl IIsdbCAServiceDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbCAServiceDescriptor_Vtbl
    where
        Identity: IIsdbCAServiceDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAServiceDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAServiceDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCASystemId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbCAServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAServiceDescriptor_Impl::GetCASystemId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCABroadcasterGroupId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAServiceDescriptor_Impl::GetCABroadcasterGroupId(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMessageControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbCAServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbCAServiceDescriptor_Impl::GetMessageControl(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceIds<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbnumserviceids: *mut u8, pwserviceids: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbCAServiceDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbCAServiceDescriptor_Impl::GetServiceIds(this, core::mem::transmute_copy(&pbnumserviceids), core::mem::transmute_copy(&pwserviceids)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCASystemId: GetCASystemId::<Identity, OFFSET>,
            GetCABroadcasterGroupId: GetCABroadcasterGroupId::<Identity, OFFSET>,
            GetMessageControl: GetMessageControl::<Identity, OFFSET>,
            GetServiceIds: GetServiceIds::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbCAServiceDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbComponentGroupDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetComponentGroupType(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordGroupId(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordNumberOfCAUnit(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordCAUnitCAUnitId(&self, brecordindex: u8, bcaunitindex: u8) -> windows_core::Result<u8>;
    fn GetRecordCAUnitNumberOfComponents(&self, brecordindex: u8, bcaunitindex: u8) -> windows_core::Result<u8>;
    fn GetRecordCAUnitComponentTag(&self, brecordindex: u8, bcaunitindex: u8, bcomponentindex: u8) -> windows_core::Result<u8>;
    fn GetRecordTotalBitRate(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordTextW(&self, brecordindex: u8, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbComponentGroupDescriptor {}
impl IIsdbComponentGroupDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbComponentGroupDescriptor_Vtbl
    where
        Identity: IIsdbComponentGroupDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentGroupType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetComponentGroupType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordGroupId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordGroupId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfCAUnit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordNumberOfCAUnit(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCAUnitCAUnitId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, bcaunitindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordCAUnitCAUnitId(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&bcaunitindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCAUnitNumberOfComponents<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, bcaunitindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordCAUnitNumberOfComponents(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&bcaunitindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCAUnitComponentTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, bcaunitindex: u8, bcomponentindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordCAUnitComponentTag(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&bcaunitindex), core::mem::transmute_copy(&bcomponentindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTotalBitRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordTotalBitRate(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbComponentGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbComponentGroupDescriptor_Impl::GetRecordTextW(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetComponentGroupType: GetComponentGroupType::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordGroupId: GetRecordGroupId::<Identity, OFFSET>,
            GetRecordNumberOfCAUnit: GetRecordNumberOfCAUnit::<Identity, OFFSET>,
            GetRecordCAUnitCAUnitId: GetRecordCAUnitCAUnitId::<Identity, OFFSET>,
            GetRecordCAUnitNumberOfComponents: GetRecordCAUnitNumberOfComponents::<Identity, OFFSET>,
            GetRecordCAUnitComponentTag: GetRecordCAUnitComponentTag::<Identity, OFFSET>,
            GetRecordTotalBitRate: GetRecordTotalBitRate::<Identity, OFFSET>,
            GetRecordTextW: GetRecordTextW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbComponentGroupDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbDataContentDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetDataComponentId(&self) -> windows_core::Result<u16>;
    fn GetEntryComponent(&self) -> windows_core::Result<u8>;
    fn GetSelectorLength(&self) -> windows_core::Result<u8>;
    fn GetSelectorBytes(&self, bbuflength: u8) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordComponentRef(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetLanguageCode(&self, pszcode: *mut u8) -> windows_core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbDataContentDescriptor {}
impl IIsdbDataContentDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbDataContentDescriptor_Vtbl
    where
        Identity: IIsdbDataContentDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDataComponentId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetDataComponentId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEntryComponent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetEntryComponent(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetSelectorLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSelectorBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bbuflength: u8, pbbuf: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetSelectorBytes(this, core::mem::transmute_copy(&bbuflength)) {
                Ok(ok__) => {
                    pbbuf.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordComponentRef<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetRecordComponentRef(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbDataContentDescriptor_Impl::GetLanguageCode(this, core::mem::transmute_copy(&pszcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbDataContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDataContentDescriptor_Impl::GetTextW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetDataComponentId: GetDataComponentId::<Identity, OFFSET>,
            GetEntryComponent: GetEntryComponent::<Identity, OFFSET>,
            GetSelectorLength: GetSelectorLength::<Identity, OFFSET>,
            GetSelectorBytes: GetSelectorBytes::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordComponentRef: GetRecordComponentRef::<Identity, OFFSET>,
            GetLanguageCode: GetLanguageCode::<Identity, OFFSET>,
            GetTextW: GetTextW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbDataContentDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbDigitalCopyControlDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCopyControl(&self, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordCopyControl(&self, brecordindex: u8, pbcomponenttag: *mut u8, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIsdbDigitalCopyControlDescriptor {}
impl IIsdbDigitalCopyControlDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbDigitalCopyControlDescriptor_Vtbl
    where
        Identity: IIsdbDigitalCopyControlDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDigitalCopyControlDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDigitalCopyControlDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDigitalCopyControlDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDigitalCopyControlDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCopyControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDigitalCopyControlDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbDigitalCopyControlDescriptor_Impl::GetCopyControl(this, core::mem::transmute_copy(&pbdigitalrecordingcontroldata), core::mem::transmute_copy(&pbcopycontroltype), core::mem::transmute_copy(&pbapscontroldata), core::mem::transmute_copy(&pbmaximumbitrate)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDigitalCopyControlDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDigitalCopyControlDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCopyControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbcomponenttag: *mut u8, pbdigitalrecordingcontroldata: *mut u8, pbcopycontroltype: *mut u8, pbapscontroldata: *mut u8, pbmaximumbitrate: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDigitalCopyControlDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbDigitalCopyControlDescriptor_Impl::GetRecordCopyControl(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pbcomponenttag), core::mem::transmute_copy(&pbdigitalrecordingcontroldata), core::mem::transmute_copy(&pbcopycontroltype), core::mem::transmute_copy(&pbapscontroldata), core::mem::transmute_copy(&pbmaximumbitrate)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCopyControl: GetCopyControl::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordCopyControl: GetRecordCopyControl::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbDigitalCopyControlDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbDownloadContentDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetFlags(&self, pfreboot: *mut super::super::super::Foundation::BOOL, pfaddon: *mut super::super::super::Foundation::BOOL, pfcompatibility: *mut super::super::super::Foundation::BOOL, pfmoduleinfo: *mut super::super::super::Foundation::BOOL, pftextinfo: *mut super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetComponentSize(&self) -> windows_core::Result<u32>;
    fn GetDownloadId(&self) -> windows_core::Result<u32>;
    fn GetTimeOutValueDII(&self) -> windows_core::Result<u32>;
    fn GetLeakRate(&self) -> windows_core::Result<u32>;
    fn GetComponentTag(&self) -> windows_core::Result<u8>;
    fn GetCompatiblityDescriptorLength(&self) -> windows_core::Result<u16>;
    fn GetCompatiblityDescriptor(&self) -> windows_core::Result<*mut u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u16>;
    fn GetRecordModuleId(&self, wrecordindex: u16) -> windows_core::Result<u16>;
    fn GetRecordModuleSize(&self, wrecordindex: u16) -> windows_core::Result<u32>;
    fn GetRecordModuleInfoLength(&self, wrecordindex: u16) -> windows_core::Result<u8>;
    fn GetRecordModuleInfo(&self, wrecordindex: u16) -> windows_core::Result<*mut u8>;
    fn GetTextLanguageCode(&self, szcode: *mut u8) -> windows_core::Result<()>;
    fn GetTextW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbDownloadContentDescriptor {}
impl IIsdbDownloadContentDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbDownloadContentDescriptor_Vtbl
    where
        Identity: IIsdbDownloadContentDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.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, pfreboot: *mut super::super::super::Foundation::BOOL, pfaddon: *mut super::super::super::Foundation::BOOL, pfcompatibility: *mut super::super::super::Foundation::BOOL, pfmoduleinfo: *mut super::super::super::Foundation::BOOL, pftextinfo: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbDownloadContentDescriptor_Impl::GetFlags(this, core::mem::transmute_copy(&pfreboot), core::mem::transmute_copy(&pfaddon), core::mem::transmute_copy(&pfcompatibility), core::mem::transmute_copy(&pfmoduleinfo), core::mem::transmute_copy(&pftextinfo)).into()
        }
        unsafe extern "system" fn GetComponentSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetComponentSize(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDownloadId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetDownloadId(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimeOutValueDII<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetTimeOutValueDII(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLeakRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetLeakRate(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetComponentTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetComponentTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCompatiblityDescriptorLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwlength: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetCompatiblityDescriptorLength(this) {
                Ok(ok__) => {
                    pwlength.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCompatiblityDescriptor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbdata: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetCompatiblityDescriptor(this) {
                Ok(ok__) => {
                    ppbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wrecordindex: u16, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetRecordModuleId(this, core::mem::transmute_copy(&wrecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wrecordindex: u16, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetRecordModuleSize(this, core::mem::transmute_copy(&wrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleInfoLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wrecordindex: u16, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetRecordModuleInfoLength(this, core::mem::transmute_copy(&wrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordModuleInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wrecordindex: u16, ppbdata: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetRecordModuleInfo(this, core::mem::transmute_copy(&wrecordindex)) {
                Ok(ok__) => {
                    ppbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTextLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, szcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbDownloadContentDescriptor_Impl::GetTextLanguageCode(this, core::mem::transmute_copy(&szcode)).into()
        }
        unsafe extern "system" fn GetTextW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbDownloadContentDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbDownloadContentDescriptor_Impl::GetTextW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            GetComponentSize: GetComponentSize::<Identity, OFFSET>,
            GetDownloadId: GetDownloadId::<Identity, OFFSET>,
            GetTimeOutValueDII: GetTimeOutValueDII::<Identity, OFFSET>,
            GetLeakRate: GetLeakRate::<Identity, OFFSET>,
            GetComponentTag: GetComponentTag::<Identity, OFFSET>,
            GetCompatiblityDescriptorLength: GetCompatiblityDescriptorLength::<Identity, OFFSET>,
            GetCompatiblityDescriptor: GetCompatiblityDescriptor::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordModuleId: GetRecordModuleId::<Identity, OFFSET>,
            GetRecordModuleSize: GetRecordModuleSize::<Identity, OFFSET>,
            GetRecordModuleInfoLength: GetRecordModuleInfoLength::<Identity, OFFSET>,
            GetRecordModuleInfo: GetRecordModuleInfo::<Identity, OFFSET>,
            GetTextLanguageCode: GetTextLanguageCode::<Identity, OFFSET>,
            GetTextW: GetTextW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbDownloadContentDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbEmergencyInformationDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetServiceId(&self, brecordindex: u8) -> windows_core::Result<u16>;
    fn GetStartEndFlag(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetSignalLevel(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetAreaCode(&self, brecordindex: u8, ppwval: *mut *mut u16, pbnumareacodes: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIsdbEmergencyInformationDescriptor {}
impl IIsdbEmergencyInformationDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbEmergencyInformationDescriptor_Vtbl
    where
        Identity: IIsdbEmergencyInformationDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEmergencyInformationDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEmergencyInformationDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEmergencyInformationDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEmergencyInformationDescriptor_Impl::GetServiceId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStartEndFlag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEmergencyInformationDescriptor_Impl::GetStartEndFlag(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSignalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEmergencyInformationDescriptor_Impl::GetSignalLevel(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAreaCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, ppwval: *mut *mut u16, pbnumareacodes: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEmergencyInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbEmergencyInformationDescriptor_Impl::GetAreaCode(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&ppwval), core::mem::transmute_copy(&pbnumareacodes)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetServiceId: GetServiceId::<Identity, OFFSET>,
            GetStartEndFlag: GetStartEndFlag::<Identity, OFFSET>,
            GetSignalLevel: GetSignalLevel::<Identity, OFFSET>,
            GetAreaCode: GetAreaCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbEmergencyInformationDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbEventGroupDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetGroupType(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordEvent(&self, brecordindex: u8, pwserviceid: *mut u16, pweventid: *mut u16) -> windows_core::Result<()>;
    fn GetCountOfRefRecords(&self) -> windows_core::Result<u8>;
    fn GetRefRecordEvent(&self, brecordindex: u8, pworiginalnetworkid: *mut u16, pwtransportstreamid: *mut u16, pwserviceid: *mut u16, pweventid: *mut u16) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIsdbEventGroupDescriptor {}
impl IIsdbEventGroupDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbEventGroupDescriptor_Vtbl
    where
        Identity: IIsdbEventGroupDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEventGroupDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEventGroupDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGroupType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEventGroupDescriptor_Impl::GetGroupType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEventGroupDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pwserviceid: *mut u16, pweventid: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbEventGroupDescriptor_Impl::GetRecordEvent(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pwserviceid), core::mem::transmute_copy(&pweventid)).into()
        }
        unsafe extern "system" fn GetCountOfRefRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbEventGroupDescriptor_Impl::GetCountOfRefRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRefRecordEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pworiginalnetworkid: *mut u16, pwtransportstreamid: *mut u16, pwserviceid: *mut u16, pweventid: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbEventGroupDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbEventGroupDescriptor_Impl::GetRefRecordEvent(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pworiginalnetworkid), core::mem::transmute_copy(&pwtransportstreamid), core::mem::transmute_copy(&pwserviceid), core::mem::transmute_copy(&pweventid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetGroupType: GetGroupType::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordEvent: GetRecordEvent::<Identity, OFFSET>,
            GetCountOfRefRecords: GetCountOfRefRecords::<Identity, OFFSET>,
            GetRefRecordEvent: GetRefRecordEvent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbEventGroupDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbHierarchicalTransmissionDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetFutureUse1(&self) -> windows_core::Result<u8>;
    fn GetQualityLevel(&self) -> windows_core::Result<u8>;
    fn GetFutureUse2(&self) -> windows_core::Result<u8>;
    fn GetReferencePid(&self) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IIsdbHierarchicalTransmissionDescriptor {}
impl IIsdbHierarchicalTransmissionDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbHierarchicalTransmissionDescriptor_Vtbl
    where
        Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbHierarchicalTransmissionDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbHierarchicalTransmissionDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFutureUse1<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbHierarchicalTransmissionDescriptor_Impl::GetFutureUse1(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetQualityLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbHierarchicalTransmissionDescriptor_Impl::GetQualityLevel(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFutureUse2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbHierarchicalTransmissionDescriptor_Impl::GetFutureUse2(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetReferencePid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbHierarchicalTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbHierarchicalTransmissionDescriptor_Impl::GetReferencePid(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetFutureUse1: GetFutureUse1::<Identity, OFFSET>,
            GetQualityLevel: GetQualityLevel::<Identity, OFFSET>,
            GetFutureUse2: GetFutureUse2::<Identity, OFFSET>,
            GetReferencePid: GetReferencePid::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbHierarchicalTransmissionDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbLogoTransmissionDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetLogoTransmissionType(&self) -> windows_core::Result<u8>;
    fn GetLogoId(&self) -> windows_core::Result<u16>;
    fn GetLogoVersion(&self) -> windows_core::Result<u16>;
    fn GetDownloadDataId(&self) -> windows_core::Result<u16>;
    fn GetLogoCharW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbLogoTransmissionDescriptor {}
impl IIsdbLogoTransmissionDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbLogoTransmissionDescriptor_Vtbl
    where
        Identity: IIsdbLogoTransmissionDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoTransmissionType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetLogoTransmissionType(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetLogoId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetLogoVersion(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDownloadDataId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetDownloadDataId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLogoCharW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrchar: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbLogoTransmissionDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbLogoTransmissionDescriptor_Impl::GetLogoCharW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrchar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetLogoTransmissionType: GetLogoTransmissionType::<Identity, OFFSET>,
            GetLogoId: GetLogoId::<Identity, OFFSET>,
            GetLogoVersion: GetLogoVersion::<Identity, OFFSET>,
            GetDownloadDataId: GetDownloadDataId::<Identity, OFFSET>,
            GetLogoCharW: GetLogoCharW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbLogoTransmissionDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbSIParameterDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetParameterVersion(&self) -> windows_core::Result<u8>;
    fn GetUpdateTime(&self) -> windows_core::Result<MPEG_DATE>;
    fn GetRecordNumberOfTable(&self) -> windows_core::Result<u8>;
    fn GetTableId(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetTableDescriptionLength(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetTableDescriptionBytes(&self, brecordindex: u8, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIsdbSIParameterDescriptor {}
impl IIsdbSIParameterDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbSIParameterDescriptor_Vtbl
    where
        Identity: IIsdbSIParameterDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParameterVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetParameterVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetUpdateTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut MPEG_DATE) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetUpdateTime(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetRecordNumberOfTable(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetTableId(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptionLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSIParameterDescriptor_Impl::GetTableDescriptionLength(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptionBytes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbbufferlength: *mut u8, pbbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSIParameterDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbSIParameterDescriptor_Impl::GetTableDescriptionBytes(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&pbbufferlength), core::mem::transmute_copy(&pbbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetParameterVersion: GetParameterVersion::<Identity, OFFSET>,
            GetUpdateTime: GetUpdateTime::<Identity, OFFSET>,
            GetRecordNumberOfTable: GetRecordNumberOfTable::<Identity, OFFSET>,
            GetTableId: GetTableId::<Identity, OFFSET>,
            GetTableDescriptionLength: GetTableDescriptionLength::<Identity, OFFSET>,
            GetTableDescriptionBytes: GetTableDescriptionBytes::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbSIParameterDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbSeriesDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetSeriesId(&self) -> windows_core::Result<u16>;
    fn GetRepeatLabel(&self) -> windows_core::Result<u8>;
    fn GetProgramPattern(&self) -> windows_core::Result<u8>;
    fn GetExpireDate(&self, pfvalid: *mut super::super::super::Foundation::BOOL, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::Result<()>;
    fn GetEpisodeNumber(&self) -> windows_core::Result<u16>;
    fn GetLastEpisodeNumber(&self) -> windows_core::Result<u16>;
    fn GetSeriesNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IIsdbSeriesDescriptor {}
impl IIsdbSeriesDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbSeriesDescriptor_Vtbl
    where
        Identity: IIsdbSeriesDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSeriesId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetSeriesId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRepeatLabel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetRepeatLabel(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProgramPattern<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetProgramPattern(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExpireDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfvalid: *mut super::super::super::Foundation::BOOL, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIsdbSeriesDescriptor_Impl::GetExpireDate(this, core::mem::transmute_copy(&pfvalid), core::mem::transmute_copy(&pmdtval)).into()
        }
        unsafe extern "system" fn GetEpisodeNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetEpisodeNumber(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastEpisodeNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetLastEpisodeNumber(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSeriesNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbSeriesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSeriesDescriptor_Impl::GetSeriesNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetSeriesId: GetSeriesId::<Identity, OFFSET>,
            GetRepeatLabel: GetRepeatLabel::<Identity, OFFSET>,
            GetProgramPattern: GetProgramPattern::<Identity, OFFSET>,
            GetExpireDate: GetExpireDate::<Identity, OFFSET>,
            GetEpisodeNumber: GetEpisodeNumber::<Identity, OFFSET>,
            GetLastEpisodeNumber: GetLastEpisodeNumber::<Identity, OFFSET>,
            GetSeriesNameW: GetSeriesNameW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbSeriesDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbSiParser2_Impl: Sized + IDvbSiParser2_Impl {
    fn GetSDT(&self, tableid: u8, pwtransportstreamid: *const u16) -> windows_core::Result<IISDB_SDT>;
    fn GetBIT(&self, tableid: u8, pworiginalnetworkid: *const u16) -> windows_core::Result<IISDB_BIT>;
    fn GetNBIT(&self, tableid: u8, pworiginalnetworkid: *const u16) -> windows_core::Result<IISDB_NBIT>;
    fn GetLDT(&self, tableid: u8, pworiginalserviceid: *const u16) -> windows_core::Result<IISDB_LDT>;
    fn GetSDTT(&self, tableid: u8, pwtableidext: *const u16) -> windows_core::Result<IISDB_SDTT>;
    fn GetCDT(&self, tableid: u8, bsectionnumber: u8, pwdownloaddataid: *const u16) -> windows_core::Result<IISDB_CDT>;
    fn GetEMM(&self, pid: u16, wtableidext: u16) -> windows_core::Result<IISDB_EMM>;
}
impl windows_core::RuntimeName for IIsdbSiParser2 {}
impl IIsdbSiParser2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbSiParser2_Vtbl
    where
        Identity: IIsdbSiParser2_Impl,
    {
        unsafe extern "system" fn GetSDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pwtransportstreamid: *const u16, ppsdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetSDT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pwtransportstreamid)) {
                Ok(ok__) => {
                    ppsdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetBIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pworiginalnetworkid: *const u16, ppbit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetBIT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pworiginalnetworkid)) {
                Ok(ok__) => {
                    ppbit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNBIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pworiginalnetworkid: *const u16, ppnbit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetNBIT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pworiginalnetworkid)) {
                Ok(ok__) => {
                    ppnbit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pworiginalserviceid: *const u16, ppldt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetLDT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pworiginalserviceid)) {
                Ok(ok__) => {
                    ppldt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSDTT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, pwtableidext: *const u16, ppsdtt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetSDTT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&pwtableidext)) {
                Ok(ok__) => {
                    ppsdtt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCDT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableid: u8, bsectionnumber: u8, pwdownloaddataid: *const u16, ppcdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetCDT(this, core::mem::transmute_copy(&tableid), core::mem::transmute_copy(&bsectionnumber), core::mem::transmute_copy(&pwdownloaddataid)) {
                Ok(ok__) => {
                    ppcdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEMM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, wtableidext: u16, ppemm: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IIsdbSiParser2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbSiParser2_Impl::GetEMM(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&wtableidext)) {
                Ok(ok__) => {
                    ppemm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IDvbSiParser2_Vtbl::new::<Identity, OFFSET>(),
            GetSDT: GetSDT::<Identity, OFFSET>,
            GetBIT: GetBIT::<Identity, OFFSET>,
            GetNBIT: GetNBIT::<Identity, OFFSET>,
            GetLDT: GetLDT::<Identity, OFFSET>,
            GetSDTT: GetSDTT::<Identity, OFFSET>,
            GetCDT: GetCDT::<Identity, OFFSET>,
            GetEMM: GetEMM::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbSiParser2 as windows_core::Interface>::IID || iid == &<IDvbSiParser as windows_core::Interface>::IID || iid == &<IDvbSiParser2 as windows_core::Interface>::IID
    }
}
pub trait IIsdbTSInformationDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetRemoteControlKeyId(&self) -> windows_core::Result<u8>;
    fn GetTSNameW(&self, convmode: DVB_STRCONV_MODE) -> windows_core::Result<windows_core::BSTR>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordTransmissionTypeInfo(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordNumberOfServices(&self, brecordindex: u8) -> windows_core::Result<u8>;
    fn GetRecordServiceIdByIndex(&self, brecordindex: u8, bserviceindex: u8) -> windows_core::Result<u16>;
}
impl windows_core::RuntimeName for IIsdbTSInformationDescriptor {}
impl IIsdbTSInformationDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbTSInformationDescriptor_Vtbl
    where
        Identity: IIsdbTSInformationDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRemoteControlKeyId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetRemoteControlKeyId(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTSNameW<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, convmode: DVB_STRCONV_MODE, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetTSNameW(this, core::mem::transmute_copy(&convmode)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordTransmissionTypeInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetRecordTransmissionTypeInfo(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordNumberOfServices<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetRecordNumberOfServices(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordServiceIdByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, bserviceindex: u8, pdwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbTSInformationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTSInformationDescriptor_Impl::GetRecordServiceIdByIndex(this, core::mem::transmute_copy(&brecordindex), core::mem::transmute_copy(&bserviceindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetRemoteControlKeyId: GetRemoteControlKeyId::<Identity, OFFSET>,
            GetTSNameW: GetTSNameW::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordTransmissionTypeInfo: GetRecordTransmissionTypeInfo::<Identity, OFFSET>,
            GetRecordNumberOfServices: GetRecordNumberOfServices::<Identity, OFFSET>,
            GetRecordServiceIdByIndex: GetRecordServiceIdByIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbTSInformationDescriptor as windows_core::Interface>::IID
    }
}
pub trait IIsdbTerrestrialDeliverySystemDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u8>;
    fn GetAreaCode(&self) -> windows_core::Result<u16>;
    fn GetGuardInterval(&self) -> windows_core::Result<u8>;
    fn GetTransmissionMode(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u8>;
    fn GetRecordFrequency(&self, brecordindex: u8) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IIsdbTerrestrialDeliverySystemDescriptor {}
impl IIsdbTerrestrialDeliverySystemDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIsdbTerrestrialDeliverySystemDescriptor_Vtbl
    where
        Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAreaCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetAreaCode(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuardInterval<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetGuardInterval(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransmissionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetTransmissionMode(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brecordindex: u8, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IIsdbTerrestrialDeliverySystemDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIsdbTerrestrialDeliverySystemDescriptor_Impl::GetRecordFrequency(this, core::mem::transmute_copy(&brecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetAreaCode: GetAreaCode::<Identity, OFFSET>,
            GetGuardInterval: GetGuardInterval::<Identity, OFFSET>,
            GetTransmissionMode: GetTransmissionMode::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordFrequency: GetRecordFrequency::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIsdbTerrestrialDeliverySystemDescriptor as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait ILanguageComponentType_Impl: Sized + IComponentType_Impl {
    fn LangID(&self) -> windows_core::Result<i32>;
    fn SetLangID(&self, langid: i32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for ILanguageComponentType {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl ILanguageComponentType_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILanguageComponentType_Vtbl
    where
        Identity: ILanguageComponentType_Impl,
    {
        unsafe extern "system" fn LangID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, langid: *mut i32) -> windows_core::HRESULT
        where
            Identity: ILanguageComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILanguageComponentType_Impl::LangID(this) {
                Ok(ok__) => {
                    langid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLangID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, langid: i32) -> windows_core::HRESULT
        where
            Identity: ILanguageComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILanguageComponentType_Impl::SetLangID(this, core::mem::transmute_copy(&langid)).into()
        }
        Self { base__: IComponentType_Vtbl::new::<Identity, OFFSET>(), LangID: LangID::<Identity, OFFSET>, SetLangID: SetLangID::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILanguageComponentType as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IComponentType as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ILocator_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn CarrierFrequency(&self) -> windows_core::Result<i32>;
    fn SetCarrierFrequency(&self, frequency: i32) -> windows_core::Result<()>;
    fn InnerFEC(&self) -> windows_core::Result<super::FECMethod>;
    fn SetInnerFEC(&self, fec: super::FECMethod) -> windows_core::Result<()>;
    fn InnerFECRate(&self) -> windows_core::Result<super::BinaryConvolutionCodeRate>;
    fn SetInnerFECRate(&self, fec: super::BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn OuterFEC(&self) -> windows_core::Result<super::FECMethod>;
    fn SetOuterFEC(&self, fec: super::FECMethod) -> windows_core::Result<()>;
    fn OuterFECRate(&self) -> windows_core::Result<super::BinaryConvolutionCodeRate>;
    fn SetOuterFECRate(&self, fec: super::BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn Modulation(&self) -> windows_core::Result<super::ModulationType>;
    fn SetModulation(&self, modulation: super::ModulationType) -> windows_core::Result<()>;
    fn SymbolRate(&self) -> windows_core::Result<i32>;
    fn SetSymbolRate(&self, rate: i32) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ILocator>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ILocator {}
#[cfg(feature = "Win32_System_Com")]
impl ILocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ILocator_Vtbl
    where
        Identity: ILocator_Impl,
    {
        unsafe extern "system" fn CarrierFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, frequency: *mut i32) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::CarrierFrequency(this) {
                Ok(ok__) => {
                    frequency.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCarrierFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, frequency: i32) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetCarrierFrequency(this, core::mem::transmute_copy(&frequency)).into()
        }
        unsafe extern "system" fn InnerFEC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: *mut super::FECMethod) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::InnerFEC(this) {
                Ok(ok__) => {
                    fec.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInnerFEC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: super::FECMethod) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetInnerFEC(this, core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn InnerFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: *mut super::BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::InnerFECRate(this) {
                Ok(ok__) => {
                    fec.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInnerFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: super::BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetInnerFECRate(this, core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn OuterFEC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: *mut super::FECMethod) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::OuterFEC(this) {
                Ok(ok__) => {
                    fec.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOuterFEC<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: super::FECMethod) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetOuterFEC(this, core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn OuterFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: *mut super::BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::OuterFECRate(this) {
                Ok(ok__) => {
                    fec.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOuterFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fec: super::BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetOuterFECRate(this, core::mem::transmute_copy(&fec)).into()
        }
        unsafe extern "system" fn Modulation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, modulation: *mut super::ModulationType) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::Modulation(this) {
                Ok(ok__) => {
                    modulation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetModulation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, modulation: super::ModulationType) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetModulation(this, core::mem::transmute_copy(&modulation)).into()
        }
        unsafe extern "system" fn SymbolRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rate: *mut i32) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::SymbolRate(this) {
                Ok(ok__) => {
                    rate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSymbolRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rate: i32) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ILocator_Impl::SetSymbolRate(this, core::mem::transmute_copy(&rate)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newlocator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ILocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ILocator_Impl::Clone(this) {
                Ok(ok__) => {
                    newlocator.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            CarrierFrequency: CarrierFrequency::<Identity, OFFSET>,
            SetCarrierFrequency: SetCarrierFrequency::<Identity, OFFSET>,
            InnerFEC: InnerFEC::<Identity, OFFSET>,
            SetInnerFEC: SetInnerFEC::<Identity, OFFSET>,
            InnerFECRate: InnerFECRate::<Identity, OFFSET>,
            SetInnerFECRate: SetInnerFECRate::<Identity, OFFSET>,
            OuterFEC: OuterFEC::<Identity, OFFSET>,
            SetOuterFEC: SetOuterFEC::<Identity, OFFSET>,
            OuterFECRate: OuterFECRate::<Identity, OFFSET>,
            SetOuterFECRate: SetOuterFECRate::<Identity, OFFSET>,
            Modulation: Modulation::<Identity, OFFSET>,
            SetModulation: SetModulation::<Identity, OFFSET>,
            SymbolRate: SymbolRate::<Identity, OFFSET>,
            SetSymbolRate: SetSymbolRate::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILocator as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMPEG2Component_Impl: Sized + IComponent_Impl {
    fn PID(&self) -> windows_core::Result<i32>;
    fn SetPID(&self, pid: i32) -> windows_core::Result<()>;
    fn PCRPID(&self) -> windows_core::Result<i32>;
    fn SetPCRPID(&self, pcrpid: i32) -> windows_core::Result<()>;
    fn ProgramNumber(&self) -> windows_core::Result<i32>;
    fn SetProgramNumber(&self, programnumber: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMPEG2Component {}
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2Component_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2Component_Vtbl
    where
        Identity: IMPEG2Component_Impl,
    {
        unsafe extern "system" fn PID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2Component_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2Component_Impl::PID(this) {
                Ok(ok__) => {
                    pid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2Component_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2Component_Impl::SetPID(this, core::mem::transmute_copy(&pid)).into()
        }
        unsafe extern "system" fn PCRPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcrpid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2Component_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2Component_Impl::PCRPID(this) {
                Ok(ok__) => {
                    pcrpid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPCRPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcrpid: i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2Component_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2Component_Impl::SetPCRPID(this, core::mem::transmute_copy(&pcrpid)).into()
        }
        unsafe extern "system" fn ProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, programnumber: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2Component_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2Component_Impl::ProgramNumber(this) {
                Ok(ok__) => {
                    programnumber.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, programnumber: i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2Component_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2Component_Impl::SetProgramNumber(this, core::mem::transmute_copy(&programnumber)).into()
        }
        Self {
            base__: IComponent_Vtbl::new::<Identity, OFFSET>(),
            PID: PID::<Identity, OFFSET>,
            SetPID: SetPID::<Identity, OFFSET>,
            PCRPID: PCRPID::<Identity, OFFSET>,
            SetPCRPID: SetPCRPID::<Identity, OFFSET>,
            ProgramNumber: ProgramNumber::<Identity, OFFSET>,
            SetProgramNumber: SetProgramNumber::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2Component as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IComponent as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IMPEG2ComponentType_Impl: Sized + ILanguageComponentType_Impl {
    fn StreamType(&self) -> windows_core::Result<super::MPEG2StreamType>;
    fn SetStreamType(&self, mp2streamtype: super::MPEG2StreamType) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IMPEG2ComponentType {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IMPEG2ComponentType_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2ComponentType_Vtbl
    where
        Identity: IMPEG2ComponentType_Impl,
    {
        unsafe extern "system" fn StreamType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mp2streamtype: *mut super::MPEG2StreamType) -> windows_core::HRESULT
        where
            Identity: IMPEG2ComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2ComponentType_Impl::StreamType(this) {
                Ok(ok__) => {
                    mp2streamtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStreamType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mp2streamtype: super::MPEG2StreamType) -> windows_core::HRESULT
        where
            Identity: IMPEG2ComponentType_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2ComponentType_Impl::SetStreamType(this, core::mem::transmute_copy(&mp2streamtype)).into()
        }
        Self {
            base__: ILanguageComponentType_Vtbl::new::<Identity, OFFSET>(),
            StreamType: StreamType::<Identity, OFFSET>,
            SetStreamType: SetStreamType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2ComponentType as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IComponentType as windows_core::Interface>::IID || iid == &<ILanguageComponentType as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMPEG2TuneRequest_Impl: Sized + ITuneRequest_Impl {
    fn TSID(&self) -> windows_core::Result<i32>;
    fn SetTSID(&self, tsid: i32) -> windows_core::Result<()>;
    fn ProgNo(&self) -> windows_core::Result<i32>;
    fn SetProgNo(&self, progno: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMPEG2TuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2TuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2TuneRequest_Vtbl
    where
        Identity: IMPEG2TuneRequest_Impl,
    {
        unsafe extern "system" fn TSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tsid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2TuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2TuneRequest_Impl::TSID(this) {
                Ok(ok__) => {
                    tsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tsid: i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2TuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2TuneRequest_Impl::SetTSID(this, core::mem::transmute_copy(&tsid)).into()
        }
        unsafe extern "system" fn ProgNo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, progno: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2TuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2TuneRequest_Impl::ProgNo(this) {
                Ok(ok__) => {
                    progno.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProgNo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, progno: i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2TuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2TuneRequest_Impl::SetProgNo(this, core::mem::transmute_copy(&progno)).into()
        }
        Self {
            base__: ITuneRequest_Vtbl::new::<Identity, OFFSET>(),
            TSID: TSID::<Identity, OFFSET>,
            SetTSID: SetTSID::<Identity, OFFSET>,
            ProgNo: ProgNo::<Identity, OFFSET>,
            SetProgNo: SetProgNo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2TuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<ITuneRequest as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMPEG2TuneRequestFactory_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn CreateTuneRequest(&self, tuningspace: Option<&ITuningSpace>) -> windows_core::Result<IMPEG2TuneRequest>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMPEG2TuneRequestFactory {}
#[cfg(feature = "Win32_System_Com")]
impl IMPEG2TuneRequestFactory_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2TuneRequestFactory_Vtbl
    where
        Identity: IMPEG2TuneRequestFactory_Impl,
    {
        unsafe extern "system" fn CreateTuneRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tuningspace: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMPEG2TuneRequestFactory_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2TuneRequestFactory_Impl::CreateTuneRequest(this, windows_core::from_raw_borrowed(&tuningspace)) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), CreateTuneRequest: CreateTuneRequest::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2TuneRequestFactory as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IMPEG2TuneRequestSupport_Impl: Sized {}
impl windows_core::RuntimeName for IMPEG2TuneRequestSupport {}
impl IMPEG2TuneRequestSupport_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2TuneRequestSupport_Vtbl
    where
        Identity: IMPEG2TuneRequestSupport_Impl,
    {
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2TuneRequestSupport as windows_core::Interface>::IID
    }
}
pub trait IMPEG2_TIF_CONTROL_Impl: Sized {
    fn RegisterTIF(&self, punktif: Option<&windows_core::IUnknown>, ppvregistrationcontext: *mut u32) -> windows_core::Result<()>;
    fn UnregisterTIF(&self, pvregistrationcontext: u32) -> windows_core::Result<()>;
    fn AddPIDs(&self, ulcpids: u32, pulpids: *const u32) -> windows_core::Result<()>;
    fn DeletePIDs(&self, ulcpids: u32, pulpids: *const u32) -> windows_core::Result<()>;
    fn GetPIDCount(&self) -> windows_core::Result<u32>;
    fn GetPIDs(&self, pulcpids: *mut u32, pulpids: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMPEG2_TIF_CONTROL {}
impl IMPEG2_TIF_CONTROL_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2_TIF_CONTROL_Vtbl
    where
        Identity: IMPEG2_TIF_CONTROL_Impl,
    {
        unsafe extern "system" fn RegisterTIF<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punktif: *mut core::ffi::c_void, ppvregistrationcontext: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2_TIF_CONTROL_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2_TIF_CONTROL_Impl::RegisterTIF(this, windows_core::from_raw_borrowed(&punktif), core::mem::transmute_copy(&ppvregistrationcontext)).into()
        }
        unsafe extern "system" fn UnregisterTIF<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvregistrationcontext: u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2_TIF_CONTROL_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2_TIF_CONTROL_Impl::UnregisterTIF(this, core::mem::transmute_copy(&pvregistrationcontext)).into()
        }
        unsafe extern "system" fn AddPIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcpids: u32, pulpids: *const u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2_TIF_CONTROL_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2_TIF_CONTROL_Impl::AddPIDs(this, core::mem::transmute_copy(&ulcpids), core::mem::transmute_copy(&pulpids)).into()
        }
        unsafe extern "system" fn DeletePIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcpids: u32, pulpids: *const u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2_TIF_CONTROL_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2_TIF_CONTROL_Impl::DeletePIDs(this, core::mem::transmute_copy(&ulcpids), core::mem::transmute_copy(&pulpids)).into()
        }
        unsafe extern "system" fn GetPIDCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcpids: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2_TIF_CONTROL_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2_TIF_CONTROL_Impl::GetPIDCount(this) {
                Ok(ok__) => {
                    pulcpids.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcpids: *mut u32, pulpids: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2_TIF_CONTROL_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2_TIF_CONTROL_Impl::GetPIDs(this, core::mem::transmute_copy(&pulcpids), core::mem::transmute_copy(&pulpids)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterTIF: RegisterTIF::<Identity, OFFSET>,
            UnregisterTIF: UnregisterTIF::<Identity, OFFSET>,
            AddPIDs: AddPIDs::<Identity, OFFSET>,
            DeletePIDs: DeletePIDs::<Identity, OFFSET>,
            GetPIDCount: GetPIDCount::<Identity, OFFSET>,
            GetPIDs: GetPIDs::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2_TIF_CONTROL as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSEventBinder_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Bind(&self, peventobject: Option<&super::super::super::System::Com::IDispatch>, eventname: &windows_core::BSTR, eventhandler: &windows_core::BSTR) -> windows_core::Result<i32>;
    fn Unbind(&self, cancelcookie: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSEventBinder {}
#[cfg(feature = "Win32_System_Com")]
impl IMSEventBinder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSEventBinder_Vtbl
    where
        Identity: IMSEventBinder_Impl,
    {
        unsafe extern "system" fn Bind<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, peventobject: *mut core::ffi::c_void, eventname: core::mem::MaybeUninit<windows_core::BSTR>, eventhandler: core::mem::MaybeUninit<windows_core::BSTR>, cancelid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSEventBinder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSEventBinder_Impl::Bind(this, windows_core::from_raw_borrowed(&peventobject), core::mem::transmute(&eventname), core::mem::transmute(&eventhandler)) {
                Ok(ok__) => {
                    cancelid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Unbind<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cancelcookie: u32) -> windows_core::HRESULT
        where
            Identity: IMSEventBinder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSEventBinder_Impl::Unbind(this, core::mem::transmute_copy(&cancelcookie)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Bind: Bind::<Identity, OFFSET>,
            Unbind: Unbind::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSEventBinder as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidAnalogTuner_Impl: Sized + IMSVidTuner_Impl {
    fn Channel(&self) -> windows_core::Result<i32>;
    fn SetChannel(&self, channel: i32) -> windows_core::Result<()>;
    fn VideoFrequency(&self) -> windows_core::Result<i32>;
    fn AudioFrequency(&self) -> windows_core::Result<i32>;
    fn CountryCode(&self) -> windows_core::Result<i32>;
    fn SetCountryCode(&self, lcc: i32) -> windows_core::Result<()>;
    fn SAP(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetSAP(&self, fsapon: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ChannelAvailable(&self, nchannel: i32, signalstrength: *mut i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidAnalogTuner {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAnalogTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAnalogTuner_Vtbl
    where
        Identity: IMSVidAnalogTuner_Impl,
    {
        unsafe extern "system" fn Channel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, channel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner_Impl::Channel(this) {
                Ok(ok__) => {
                    channel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, channel: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAnalogTuner_Impl::SetChannel(this, core::mem::transmute_copy(&channel)).into()
        }
        unsafe extern "system" fn VideoFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcc: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner_Impl::VideoFrequency(this) {
                Ok(ok__) => {
                    lcc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcc: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner_Impl::AudioFrequency(this) {
                Ok(ok__) => {
                    lcc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcc: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner_Impl::CountryCode(this) {
                Ok(ok__) => {
                    lcc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcc: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAnalogTuner_Impl::SetCountryCode(this, core::mem::transmute_copy(&lcc)).into()
        }
        unsafe extern "system" fn SAP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfsapon: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner_Impl::SAP(this) {
                Ok(ok__) => {
                    pfsapon.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSAP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fsapon: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAnalogTuner_Impl::SetSAP(this, core::mem::transmute_copy(&fsapon)).into()
        }
        unsafe extern "system" fn ChannelAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, nchannel: i32, signalstrength: *mut i32, fsignalpresent: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner_Impl::ChannelAvailable(this, core::mem::transmute_copy(&nchannel), core::mem::transmute_copy(&signalstrength)) {
                Ok(ok__) => {
                    fsignalpresent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidTuner_Vtbl::new::<Identity, OFFSET>(),
            Channel: Channel::<Identity, OFFSET>,
            SetChannel: SetChannel::<Identity, OFFSET>,
            VideoFrequency: VideoFrequency::<Identity, OFFSET>,
            AudioFrequency: AudioFrequency::<Identity, OFFSET>,
            CountryCode: CountryCode::<Identity, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, OFFSET>,
            SAP: SAP::<Identity, OFFSET>,
            SetSAP: SetSAP::<Identity, OFFSET>,
            ChannelAvailable: ChannelAvailable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAnalogTuner as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidVideoInputDevice as windows_core::Interface>::IID || iid == &<IMSVidTuner as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidAnalogTuner2_Impl: Sized + IMSVidAnalogTuner_Impl {
    fn TVFormats(&self) -> windows_core::Result<i32>;
    fn TunerModes(&self) -> windows_core::Result<i32>;
    fn NumAuxInputs(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidAnalogTuner2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAnalogTuner2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAnalogTuner2_Vtbl
    where
        Identity: IMSVidAnalogTuner2_Impl,
    {
        unsafe extern "system" fn TVFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, formats: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner2_Impl::TVFormats(this) {
                Ok(ok__) => {
                    formats.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TunerModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, modes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner2_Impl::TunerModes(this) {
                Ok(ok__) => {
                    modes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NumAuxInputs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, inputs: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAnalogTuner2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAnalogTuner2_Impl::NumAuxInputs(this) {
                Ok(ok__) => {
                    inputs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidAnalogTuner_Vtbl::new::<Identity, OFFSET>(),
            TVFormats: TVFormats::<Identity, OFFSET>,
            TunerModes: TunerModes::<Identity, OFFSET>,
            NumAuxInputs: NumAuxInputs::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAnalogTuner2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidVideoInputDevice as windows_core::Interface>::IID || iid == &<IMSVidTuner as windows_core::Interface>::IID || iid == &<IMSVidAnalogTuner as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidAnalogTunerEvent_Impl: Sized + IMSVidTunerEvent_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidAnalogTunerEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAnalogTunerEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAnalogTunerEvent_Vtbl
    where
        Identity: IMSVidAnalogTunerEvent_Impl,
    {
        Self { base__: IMSVidTunerEvent_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAnalogTunerEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidTunerEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidAudioRenderer_Impl: Sized + IMSVidOutputDevice_Impl {
    fn SetVolume(&self, lvol: i32) -> windows_core::Result<()>;
    fn Volume(&self) -> windows_core::Result<i32>;
    fn SetBalance(&self, lbal: i32) -> windows_core::Result<()>;
    fn Balance(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidAudioRenderer {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRenderer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAudioRenderer_Vtbl
    where
        Identity: IMSVidAudioRenderer_Impl,
    {
        unsafe extern "system" fn SetVolume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lvol: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRenderer_Impl::SetVolume(this, core::mem::transmute_copy(&lvol)).into()
        }
        unsafe extern "system" fn Volume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lvol: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAudioRenderer_Impl::Volume(this) {
                Ok(ok__) => {
                    lvol.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBalance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lbal: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRenderer_Impl::SetBalance(this, core::mem::transmute_copy(&lbal)).into()
        }
        unsafe extern "system" fn Balance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lbal: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAudioRenderer_Impl::Balance(this) {
                Ok(ok__) => {
                    lbal.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, OFFSET>(),
            SetVolume: SetVolume::<Identity, OFFSET>,
            Volume: Volume::<Identity, OFFSET>,
            SetBalance: SetBalance::<Identity, OFFSET>,
            Balance: Balance::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAudioRenderer as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidAudioRendererDevices_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &windows_core::VARIANT) -> windows_core::Result<IMSVidAudioRenderer>;
    fn Add(&self, pdb: Option<&IMSVidAudioRenderer>) -> windows_core::Result<()>;
    fn Remove(&self, v: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidAudioRendererDevices {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidAudioRendererDevices_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAudioRendererDevices_Vtbl
    where
        Identity: IMSVidAudioRendererDevices_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAudioRendererDevices_Impl::Count(this) {
                Ok(ok__) => {
                    lcount.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, pd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAudioRendererDevices_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    pd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>, pdb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidAudioRendererDevices_Impl::get_Item(this, core::mem::transmute(&v)) {
                Ok(ok__) => {
                    pdb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererDevices_Impl::Add(this, windows_core::from_raw_borrowed(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererDevices_Impl::Remove(this, core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAudioRendererDevices as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidAudioRendererEvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidAudioRendererEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRendererEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAudioRendererEvent_Vtbl
    where
        Identity: IMSVidAudioRendererEvent_Impl,
    {
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAudioRendererEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidAudioRendererEvent2_Impl: Sized + IMSVidAudioRendererEvent_Impl {
    fn AVDecAudioDualMono(&self) -> windows_core::Result<()>;
    fn AVAudioSampleRate(&self) -> windows_core::Result<()>;
    fn AVAudioChannelConfig(&self) -> windows_core::Result<()>;
    fn AVAudioChannelCount(&self) -> windows_core::Result<()>;
    fn AVDecCommonMeanBitRate(&self) -> windows_core::Result<()>;
    fn AVDDSurroundMode(&self) -> windows_core::Result<()>;
    fn AVDecCommonInputFormat(&self) -> windows_core::Result<()>;
    fn AVDecCommonOutputFormat(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidAudioRendererEvent2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidAudioRendererEvent2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidAudioRendererEvent2_Vtbl
    where
        Identity: IMSVidAudioRendererEvent2_Impl,
    {
        unsafe extern "system" fn AVDecAudioDualMono<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVDecAudioDualMono(this).into()
        }
        unsafe extern "system" fn AVAudioSampleRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVAudioSampleRate(this).into()
        }
        unsafe extern "system" fn AVAudioChannelConfig<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVAudioChannelConfig(this).into()
        }
        unsafe extern "system" fn AVAudioChannelCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVAudioChannelCount(this).into()
        }
        unsafe extern "system" fn AVDecCommonMeanBitRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVDecCommonMeanBitRate(this).into()
        }
        unsafe extern "system" fn AVDDSurroundMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVDDSurroundMode(this).into()
        }
        unsafe extern "system" fn AVDecCommonInputFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVDecCommonInputFormat(this).into()
        }
        unsafe extern "system" fn AVDecCommonOutputFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidAudioRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidAudioRendererEvent2_Impl::AVDecCommonOutputFormat(this).into()
        }
        Self {
            base__: IMSVidAudioRendererEvent_Vtbl::new::<Identity, OFFSET>(),
            AVDecAudioDualMono: AVDecAudioDualMono::<Identity, OFFSET>,
            AVAudioSampleRate: AVAudioSampleRate::<Identity, OFFSET>,
            AVAudioChannelConfig: AVAudioChannelConfig::<Identity, OFFSET>,
            AVAudioChannelCount: AVAudioChannelCount::<Identity, OFFSET>,
            AVDecCommonMeanBitRate: AVDecCommonMeanBitRate::<Identity, OFFSET>,
            AVDDSurroundMode: AVDDSurroundMode::<Identity, OFFSET>,
            AVDecCommonInputFormat: AVDecCommonInputFormat::<Identity, OFFSET>,
            AVDecCommonOutputFormat: AVDecCommonOutputFormat::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidAudioRendererEvent2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidAudioRendererEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidClosedCaptioning_Impl: Sized + IMSVidFeature_Impl {
    fn Enable(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetEnable(&self, on: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidClosedCaptioning {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidClosedCaptioning_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidClosedCaptioning_Vtbl
    where
        Identity: IMSVidClosedCaptioning_Impl,
    {
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, on: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidClosedCaptioning_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidClosedCaptioning_Impl::Enable(this) {
                Ok(ok__) => {
                    on.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, on: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidClosedCaptioning_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidClosedCaptioning_Impl::SetEnable(this, core::mem::transmute_copy(&on)).into()
        }
        Self { base__: IMSVidFeature_Vtbl::new::<Identity, OFFSET>(), Enable: Enable::<Identity, OFFSET>, SetEnable: SetEnable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidClosedCaptioning as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidFeature as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidClosedCaptioning2_Impl: Sized + IMSVidClosedCaptioning_Impl {
    fn Service(&self) -> windows_core::Result<MSVidCCService>;
    fn SetService(&self, on: MSVidCCService) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidClosedCaptioning2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidClosedCaptioning2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidClosedCaptioning2_Vtbl
    where
        Identity: IMSVidClosedCaptioning2_Impl,
    {
        unsafe extern "system" fn Service<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, on: *mut MSVidCCService) -> windows_core::HRESULT
        where
            Identity: IMSVidClosedCaptioning2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidClosedCaptioning2_Impl::Service(this) {
                Ok(ok__) => {
                    on.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, on: MSVidCCService) -> windows_core::HRESULT
        where
            Identity: IMSVidClosedCaptioning2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidClosedCaptioning2_Impl::SetService(this, core::mem::transmute_copy(&on)).into()
        }
        Self { base__: IMSVidClosedCaptioning_Vtbl::new::<Identity, OFFSET>(), Service: Service::<Identity, OFFSET>, SetService: SetService::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidClosedCaptioning2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidFeature as windows_core::Interface>::IID || iid == &<IMSVidClosedCaptioning as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidClosedCaptioning3_Impl: Sized + IMSVidClosedCaptioning2_Impl {
    fn TeleTextFilter(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidClosedCaptioning3 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidClosedCaptioning3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidClosedCaptioning3_Vtbl
    where
        Identity: IMSVidClosedCaptioning3_Impl,
    {
        unsafe extern "system" fn TeleTextFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkttfilter: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidClosedCaptioning3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidClosedCaptioning3_Impl::TeleTextFilter(this) {
                Ok(ok__) => {
                    punkttfilter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IMSVidClosedCaptioning2_Vtbl::new::<Identity, OFFSET>(), TeleTextFilter: TeleTextFilter::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidClosedCaptioning3 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidFeature as windows_core::Interface>::IID || iid == &<IMSVidClosedCaptioning as windows_core::Interface>::IID || iid == &<IMSVidClosedCaptioning2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidCompositionSegment_Impl: Sized + IMSVidGraphSegment_Impl {
    fn Compose(&self, upstream: Option<&IMSVidGraphSegment>, downstream: Option<&IMSVidGraphSegment>) -> windows_core::Result<()>;
    fn Up(&self) -> windows_core::Result<IMSVidGraphSegment>;
    fn Down(&self) -> windows_core::Result<IMSVidGraphSegment>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidCompositionSegment {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidCompositionSegment_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidCompositionSegment_Vtbl
    where
        Identity: IMSVidCompositionSegment_Impl,
    {
        unsafe extern "system" fn Compose<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, upstream: *mut core::ffi::c_void, downstream: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCompositionSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCompositionSegment_Impl::Compose(this, windows_core::from_raw_borrowed(&upstream), windows_core::from_raw_borrowed(&downstream)).into()
        }
        unsafe extern "system" fn Up<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, upstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCompositionSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCompositionSegment_Impl::Up(this) {
                Ok(ok__) => {
                    upstream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Down<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, downstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCompositionSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCompositionSegment_Impl::Down(this) {
                Ok(ok__) => {
                    downstream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidGraphSegment_Vtbl::new::<Identity, OFFSET>(),
            Compose: Compose::<Identity, OFFSET>,
            Up: Up::<Identity, OFFSET>,
            Down: Down::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidCompositionSegment as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IMSVidGraphSegment as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidCtl_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn AutoSize(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetAutoSize(&self, vbool: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn BackColor(&self) -> windows_core::Result<u32>;
    fn SetBackColor(&self, backcolor: u32) -> windows_core::Result<()>;
    fn Enabled(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetEnabled(&self, vbool: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn TabStop(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetTabStop(&self, vbool: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Window(&self) -> windows_core::Result<super::super::super::Foundation::HWND>;
    fn Refresh(&self) -> windows_core::Result<()>;
    fn DisplaySize(&self) -> windows_core::Result<DisplaySizeList>;
    fn SetDisplaySize(&self, newvalue: DisplaySizeList) -> windows_core::Result<()>;
    fn MaintainAspectRatio(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetMaintainAspectRatio(&self, newvalue: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ColorKey(&self) -> windows_core::Result<u32>;
    fn SetColorKey(&self, newvalue: u32) -> windows_core::Result<()>;
    fn get_InputsAvailable(&self, categoryguid: &windows_core::BSTR) -> windows_core::Result<IMSVidInputDevices>;
    fn get_OutputsAvailable(&self, categoryguid: &windows_core::BSTR) -> windows_core::Result<IMSVidOutputDevices>;
    fn get__InputsAvailable(&self, categoryguid: *const windows_core::GUID) -> windows_core::Result<IMSVidInputDevices>;
    fn get__OutputsAvailable(&self, categoryguid: *const windows_core::GUID) -> windows_core::Result<IMSVidOutputDevices>;
    fn VideoRenderersAvailable(&self) -> windows_core::Result<IMSVidVideoRendererDevices>;
    fn AudioRenderersAvailable(&self) -> windows_core::Result<IMSVidAudioRendererDevices>;
    fn FeaturesAvailable(&self) -> windows_core::Result<IMSVidFeatures>;
    fn InputActive(&self) -> windows_core::Result<IMSVidInputDevice>;
    fn SetInputActive(&self, pval: Option<&IMSVidInputDevice>) -> windows_core::Result<()>;
    fn OutputsActive(&self) -> windows_core::Result<IMSVidOutputDevices>;
    fn SetOutputsActive(&self, pval: Option<&IMSVidOutputDevices>) -> windows_core::Result<()>;
    fn VideoRendererActive(&self) -> windows_core::Result<IMSVidVideoRenderer>;
    fn SetVideoRendererActive(&self, pval: Option<&IMSVidVideoRenderer>) -> windows_core::Result<()>;
    fn AudioRendererActive(&self) -> windows_core::Result<IMSVidAudioRenderer>;
    fn SetAudioRendererActive(&self, pval: Option<&IMSVidAudioRenderer>) -> windows_core::Result<()>;
    fn FeaturesActive(&self) -> windows_core::Result<IMSVidFeatures>;
    fn SetFeaturesActive(&self, pval: Option<&IMSVidFeatures>) -> windows_core::Result<()>;
    fn State(&self) -> windows_core::Result<MSVidCtlStateList>;
    fn View(&self, v: *const windows_core::VARIANT) -> windows_core::Result<()>;
    fn Build(&self) -> windows_core::Result<()>;
    fn Pause(&self) -> windows_core::Result<()>;
    fn Run(&self) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
    fn Decompose(&self) -> windows_core::Result<()>;
    fn DisableVideo(&self) -> windows_core::Result<()>;
    fn DisableAudio(&self) -> windows_core::Result<()>;
    fn ViewNext(&self, v: *const windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidCtl {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidCtl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidCtl_Vtbl
    where
        Identity: IMSVidCtl_Impl,
    {
        unsafe extern "system" fn AutoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::AutoSize(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAutoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vbool: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetAutoSize(this, core::mem::transmute_copy(&vbool)).into()
        }
        unsafe extern "system" fn BackColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, backcolor: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::BackColor(this) {
                Ok(ok__) => {
                    backcolor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, backcolor: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetBackColor(this, core::mem::transmute_copy(&backcolor)).into()
        }
        unsafe extern "system" fn Enabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::Enabled(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vbool: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetEnabled(this, core::mem::transmute_copy(&vbool)).into()
        }
        unsafe extern "system" fn TabStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::TabStop(this) {
                Ok(ok__) => {
                    pbool.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTabStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, vbool: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetTabStop(this, core::mem::transmute_copy(&vbool)).into()
        }
        unsafe extern "system" fn Window<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::Window(this) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Refresh<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::Refresh(this).into()
        }
        unsafe extern "system" fn DisplaySize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentvalue: *mut DisplaySizeList) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::DisplaySize(this) {
                Ok(ok__) => {
                    currentvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDisplaySize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newvalue: DisplaySizeList) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetDisplaySize(this, core::mem::transmute_copy(&newvalue)).into()
        }
        unsafe extern "system" fn MaintainAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentvalue: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::MaintainAspectRatio(this) {
                Ok(ok__) => {
                    currentvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaintainAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newvalue: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetMaintainAspectRatio(this, core::mem::transmute_copy(&newvalue)).into()
        }
        unsafe extern "system" fn ColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentvalue: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::ColorKey(this) {
                Ok(ok__) => {
                    currentvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newvalue: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetColorKey(this, core::mem::transmute_copy(&newvalue)).into()
        }
        unsafe extern "system" fn get_InputsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, categoryguid: core::mem::MaybeUninit<windows_core::BSTR>, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::get_InputsAvailable(this, core::mem::transmute(&categoryguid)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_OutputsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, categoryguid: core::mem::MaybeUninit<windows_core::BSTR>, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::get_OutputsAvailable(this, core::mem::transmute(&categoryguid)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get__InputsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, categoryguid: *const windows_core::GUID, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::get__InputsAvailable(this, core::mem::transmute_copy(&categoryguid)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get__OutputsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, categoryguid: *const windows_core::GUID, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::get__OutputsAvailable(this, core::mem::transmute_copy(&categoryguid)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoRenderersAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::VideoRenderersAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioRenderersAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::AudioRenderersAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FeaturesAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::FeaturesAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InputActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::InputActive(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInputActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetInputActive(this, windows_core::from_raw_borrowed(&pval)).into()
        }
        unsafe extern "system" fn OutputsActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::OutputsActive(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputsActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetOutputsActive(this, windows_core::from_raw_borrowed(&pval)).into()
        }
        unsafe extern "system" fn VideoRendererActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::VideoRendererActive(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVideoRendererActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetVideoRendererActive(this, windows_core::from_raw_borrowed(&pval)).into()
        }
        unsafe extern "system" fn AudioRendererActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::AudioRendererActive(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAudioRendererActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetAudioRendererActive(this, windows_core::from_raw_borrowed(&pval)).into()
        }
        unsafe extern "system" fn FeaturesActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::FeaturesActive(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFeaturesActive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::SetFeaturesActive(this, windows_core::from_raw_borrowed(&pval)).into()
        }
        unsafe extern "system" fn State<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstate: *mut MSVidCtlStateList) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidCtl_Impl::State(this) {
                Ok(ok__) => {
                    lstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn View<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::View(this, core::mem::transmute_copy(&v)).into()
        }
        unsafe extern "system" fn Build<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::Build(this).into()
        }
        unsafe extern "system" fn Pause<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::Pause(this).into()
        }
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::Run(this).into()
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::Stop(this).into()
        }
        unsafe extern "system" fn Decompose<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::Decompose(this).into()
        }
        unsafe extern "system" fn DisableVideo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::DisableVideo(this).into()
        }
        unsafe extern "system" fn DisableAudio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::DisableAudio(this).into()
        }
        unsafe extern "system" fn ViewNext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidCtl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidCtl_Impl::ViewNext(this, core::mem::transmute_copy(&v)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            AutoSize: AutoSize::<Identity, OFFSET>,
            SetAutoSize: SetAutoSize::<Identity, OFFSET>,
            BackColor: BackColor::<Identity, OFFSET>,
            SetBackColor: SetBackColor::<Identity, OFFSET>,
            Enabled: Enabled::<Identity, OFFSET>,
            SetEnabled: SetEnabled::<Identity, OFFSET>,
            TabStop: TabStop::<Identity, OFFSET>,
            SetTabStop: SetTabStop::<Identity, OFFSET>,
            Window: Window::<Identity, OFFSET>,
            Refresh: Refresh::<Identity, OFFSET>,
            DisplaySize: DisplaySize::<Identity, OFFSET>,
            SetDisplaySize: SetDisplaySize::<Identity, OFFSET>,
            MaintainAspectRatio: MaintainAspectRatio::<Identity, OFFSET>,
            SetMaintainAspectRatio: SetMaintainAspectRatio::<Identity, OFFSET>,
            ColorKey: ColorKey::<Identity, OFFSET>,
            SetColorKey: SetColorKey::<Identity, OFFSET>,
            get_InputsAvailable: get_InputsAvailable::<Identity, OFFSET>,
            get_OutputsAvailable: get_OutputsAvailable::<Identity, OFFSET>,
            get__InputsAvailable: get__InputsAvailable::<Identity, OFFSET>,
            get__OutputsAvailable: get__OutputsAvailable::<Identity, OFFSET>,
            VideoRenderersAvailable: VideoRenderersAvailable::<Identity, OFFSET>,
            AudioRenderersAvailable: AudioRenderersAvailable::<Identity, OFFSET>,
            FeaturesAvailable: FeaturesAvailable::<Identity, OFFSET>,
            InputActive: InputActive::<Identity, OFFSET>,
            SetInputActive: SetInputActive::<Identity, OFFSET>,
            OutputsActive: OutputsActive::<Identity, OFFSET>,
            SetOutputsActive: SetOutputsActive::<Identity, OFFSET>,
            VideoRendererActive: VideoRendererActive::<Identity, OFFSET>,
            SetVideoRendererActive: SetVideoRendererActive::<Identity, OFFSET>,
            AudioRendererActive: AudioRendererActive::<Identity, OFFSET>,
            SetAudioRendererActive: SetAudioRendererActive::<Identity, OFFSET>,
            FeaturesActive: FeaturesActive::<Identity, OFFSET>,
            SetFeaturesActive: SetFeaturesActive::<Identity, OFFSET>,
            State: State::<Identity, OFFSET>,
            View: View::<Identity, OFFSET>,
            Build: Build::<Identity, OFFSET>,
            Pause: Pause::<Identity, OFFSET>,
            Run: Run::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            Decompose: Decompose::<Identity, OFFSET>,
            DisableVideo: DisableVideo::<Identity, OFFSET>,
            DisableAudio: DisableAudio::<Identity, OFFSET>,
            ViewNext: ViewNext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidCtl as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidDataServices_Impl: Sized + IMSVidFeature_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidDataServices {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDataServices_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidDataServices_Vtbl
    where
        Identity: IMSVidDataServices_Impl,
    {
        Self { base__: IMSVidFeature_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidDataServices as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidFeature as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidDataServicesEvent_Impl: Sized + IMSVidDeviceEvent_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidDataServicesEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDataServicesEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidDataServicesEvent_Vtbl
    where
        Identity: IMSVidDataServicesEvent_Impl,
    {
        Self { base__: IMSVidDeviceEvent_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidDataServicesEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidDevice_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Status(&self) -> windows_core::Result<i32>;
    fn SetPower(&self, power: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Power(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn Category(&self) -> windows_core::Result<windows_core::BSTR>;
    fn ClassID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn _Category(&self) -> windows_core::Result<windows_core::GUID>;
    fn _ClassID(&self) -> windows_core::Result<windows_core::GUID>;
    fn IsEqualDevice(&self, device: Option<&IMSVidDevice>) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidDevice {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDevice_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidDevice_Vtbl
    where
        Identity: IMSVidDevice_Impl,
    {
        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: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::Name(this) {
                Ok(ok__) => {
                    name.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Status<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::Status(this) {
                Ok(ok__) => {
                    status.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPower<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, power: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidDevice_Impl::SetPower(this, core::mem::transmute_copy(&power)).into()
        }
        unsafe extern "system" fn Power<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, power: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::Power(this) {
                Ok(ok__) => {
                    power.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Category<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::Category(this) {
                Ok(ok__) => {
                    guid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ClassID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::ClassID(this) {
                Ok(ok__) => {
                    clsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _Category<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::_Category(this) {
                Ok(ok__) => {
                    guid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _ClassID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::_ClassID(this) {
                Ok(ok__) => {
                    clsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsEqualDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, device: *mut core::ffi::c_void, isequal: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice_Impl::IsEqualDevice(this, windows_core::from_raw_borrowed(&device)) {
                Ok(ok__) => {
                    isequal.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Name: Name::<Identity, OFFSET>,
            Status: Status::<Identity, OFFSET>,
            SetPower: SetPower::<Identity, OFFSET>,
            Power: Power::<Identity, OFFSET>,
            Category: Category::<Identity, OFFSET>,
            ClassID: ClassID::<Identity, OFFSET>,
            _Category: _Category::<Identity, OFFSET>,
            _ClassID: _ClassID::<Identity, OFFSET>,
            IsEqualDevice: IsEqualDevice::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IMSVidDevice2_Impl: Sized {
    fn DevicePath(&self) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IMSVidDevice2 {}
impl IMSVidDevice2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidDevice2_Vtbl
    where
        Identity: IMSVidDevice2_Impl,
    {
        unsafe extern "system" fn DevicePath<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, devpath: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidDevice2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidDevice2_Impl::DevicePath(this) {
                Ok(ok__) => {
                    devpath.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), DevicePath: DevicePath::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidDevice2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidDeviceEvent_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn StateChange(&self, lpd: Option<&IMSVidDevice>, oldstate: i32, newstate: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidDeviceEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidDeviceEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidDeviceEvent_Vtbl
    where
        Identity: IMSVidDeviceEvent_Impl,
    {
        unsafe extern "system" fn StateChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpd: *mut core::ffi::c_void, oldstate: i32, newstate: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidDeviceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidDeviceEvent_Impl::StateChange(this, windows_core::from_raw_borrowed(&lpd), core::mem::transmute_copy(&oldstate), core::mem::transmute_copy(&newstate)).into()
        }
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), StateChange: StateChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidEVR_Impl: Sized + IMSVidVideoRenderer_Impl {
    fn Presenter(&self) -> windows_core::Result<super::super::MediaFoundation::IMFVideoPresenter>;
    fn SetPresenter(&self, pallocpresent: Option<&super::super::MediaFoundation::IMFVideoPresenter>) -> windows_core::Result<()>;
    fn SetSuppressEffects(&self, bsuppress: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SuppressEffects(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidEVR {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidEVR_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidEVR_Vtbl
    where
        Identity: IMSVidEVR_Impl,
    {
        unsafe extern "system" fn Presenter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppallocpresent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidEVR_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidEVR_Impl::Presenter(this) {
                Ok(ok__) => {
                    ppallocpresent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPresenter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pallocpresent: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidEVR_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidEVR_Impl::SetPresenter(this, windows_core::from_raw_borrowed(&pallocpresent)).into()
        }
        unsafe extern "system" fn SetSuppressEffects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsuppress: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidEVR_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidEVR_Impl::SetSuppressEffects(this, core::mem::transmute_copy(&bsuppress)).into()
        }
        unsafe extern "system" fn SuppressEffects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsuppress: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidEVR_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidEVR_Impl::SuppressEffects(this) {
                Ok(ok__) => {
                    bsuppress.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidVideoRenderer_Vtbl::new::<Identity, OFFSET>(),
            Presenter: Presenter::<Identity, OFFSET>,
            SetPresenter: SetPresenter::<Identity, OFFSET>,
            SetSuppressEffects: SetSuppressEffects::<Identity, OFFSET>,
            SuppressEffects: SuppressEffects::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidEVR as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<IMSVidVideoRenderer as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidEVREvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn OnUserEvent(&self, leventcode: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidEVREvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidEVREvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidEVREvent_Vtbl
    where
        Identity: IMSVidEVREvent_Impl,
    {
        unsafe extern "system" fn OnUserEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, leventcode: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidEVREvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidEVREvent_Impl::OnUserEvent(this, core::mem::transmute_copy(&leventcode)).into()
        }
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, OFFSET>(), OnUserEvent: OnUserEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidEVREvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidEncoder_Impl: Sized + IMSVidFeature_Impl {
    fn VideoEncoderInterface(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn AudioEncoderInterface(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidEncoder {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidEncoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidEncoder_Vtbl
    where
        Identity: IMSVidEncoder_Impl,
    {
        unsafe extern "system" fn VideoEncoderInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppencint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidEncoder_Impl::VideoEncoderInterface(this) {
                Ok(ok__) => {
                    ppencint.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioEncoderInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppencint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidEncoder_Impl::AudioEncoderInterface(this) {
                Ok(ok__) => {
                    ppencint.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidFeature_Vtbl::new::<Identity, OFFSET>(),
            VideoEncoderInterface: VideoEncoderInterface::<Identity, OFFSET>,
            AudioEncoderInterface: AudioEncoderInterface::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidEncoder as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidFeature as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidFeature_Impl: Sized + IMSVidDevice_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidFeature {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFeature_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidFeature_Vtbl
    where
        Identity: IMSVidFeature_Impl,
    {
        Self { base__: IMSVidDevice_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidFeature as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidFeatureEvent_Impl: Sized + IMSVidDeviceEvent_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidFeatureEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFeatureEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidFeatureEvent_Vtbl
    where
        Identity: IMSVidFeatureEvent_Impl,
    {
        Self { base__: IMSVidDeviceEvent_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidFeatureEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidFeatures_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &windows_core::VARIANT) -> windows_core::Result<IMSVidFeature>;
    fn Add(&self, pdb: Option<&IMSVidFeature>) -> windows_core::Result<()>;
    fn Remove(&self, v: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidFeatures {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidFeatures_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidFeatures_Vtbl
    where
        Identity: IMSVidFeatures_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidFeatures_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidFeatures_Impl::Count(this) {
                Ok(ok__) => {
                    lcount.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, pd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidFeatures_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidFeatures_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    pd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>, pdb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidFeatures_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidFeatures_Impl::get_Item(this, core::mem::transmute(&v)) {
                Ok(ok__) => {
                    pdb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidFeatures_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidFeatures_Impl::Add(this, windows_core::from_raw_borrowed(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidFeatures_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidFeatures_Impl::Remove(this, core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidFeatures as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidFilePlayback_Impl: Sized + IMSVidPlayback_Impl {
    fn FileName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetFileName(&self, filename: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidFilePlayback {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFilePlayback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidFilePlayback_Vtbl
    where
        Identity: IMSVidFilePlayback_Impl,
    {
        unsafe extern "system" fn FileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidFilePlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidFilePlayback_Impl::FileName(this) {
                Ok(ok__) => {
                    filename.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, filename: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidFilePlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidFilePlayback_Impl::SetFileName(this, core::mem::transmute(&filename)).into()
        }
        Self { base__: IMSVidPlayback_Vtbl::new::<Identity, OFFSET>(), FileName: FileName::<Identity, OFFSET>, SetFileName: SetFileName::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidFilePlayback as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidPlayback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidFilePlayback2_Impl: Sized + IMSVidFilePlayback_Impl {
    fn Set_SourceFilter(&self, filename: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Set__SourceFilter(&self, filename: &windows_core::GUID) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidFilePlayback2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFilePlayback2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidFilePlayback2_Vtbl
    where
        Identity: IMSVidFilePlayback2_Impl,
    {
        unsafe extern "system" fn Set_SourceFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidFilePlayback2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidFilePlayback2_Impl::Set_SourceFilter(this, core::mem::transmute(&filename)).into()
        }
        unsafe extern "system" fn Set__SourceFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidFilePlayback2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidFilePlayback2_Impl::Set__SourceFilter(this, core::mem::transmute(&filename)).into()
        }
        Self {
            base__: IMSVidFilePlayback_Vtbl::new::<Identity, OFFSET>(),
            Set_SourceFilter: Set_SourceFilter::<Identity, OFFSET>,
            Set__SourceFilter: Set__SourceFilter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidFilePlayback2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidPlayback as windows_core::Interface>::IID || iid == &<IMSVidFilePlayback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidFilePlaybackEvent_Impl: Sized + IMSVidPlaybackEvent_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidFilePlaybackEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidFilePlaybackEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidFilePlaybackEvent_Vtbl
    where
        Identity: IMSVidFilePlaybackEvent_Impl,
    {
        Self { base__: IMSVidPlaybackEvent_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidFilePlaybackEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidGenericSink_Impl: Sized + IMSVidOutputDevice_Impl {
    fn SetSinkFilter(&self, bstrname: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SinkStreams(&self) -> windows_core::Result<MSVidSinkStreams>;
    fn SetSinkStreams(&self, streams: MSVidSinkStreams) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidGenericSink {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGenericSink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidGenericSink_Vtbl
    where
        Identity: IMSVidGenericSink_Impl,
    {
        unsafe extern "system" fn SetSinkFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidGenericSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGenericSink_Impl::SetSinkFilter(this, core::mem::transmute(&bstrname)).into()
        }
        unsafe extern "system" fn SinkStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstreams: *mut MSVidSinkStreams) -> windows_core::HRESULT
        where
            Identity: IMSVidGenericSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGenericSink_Impl::SinkStreams(this) {
                Ok(ok__) => {
                    pstreams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSinkStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, streams: MSVidSinkStreams) -> windows_core::HRESULT
        where
            Identity: IMSVidGenericSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGenericSink_Impl::SetSinkStreams(this, core::mem::transmute_copy(&streams)).into()
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, OFFSET>(),
            SetSinkFilter: SetSinkFilter::<Identity, OFFSET>,
            SinkStreams: SinkStreams::<Identity, OFFSET>,
            SetSinkStreams: SetSinkStreams::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidGenericSink as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidGenericSink2_Impl: Sized + IMSVidGenericSink_Impl {
    fn AddFilter(&self, bstrname: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ResetFilterList(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidGenericSink2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGenericSink2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidGenericSink2_Vtbl
    where
        Identity: IMSVidGenericSink2_Impl,
    {
        unsafe extern "system" fn AddFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidGenericSink2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGenericSink2_Impl::AddFilter(this, core::mem::transmute(&bstrname)).into()
        }
        unsafe extern "system" fn ResetFilterList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGenericSink2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGenericSink2_Impl::ResetFilterList(this).into()
        }
        Self {
            base__: IMSVidGenericSink_Vtbl::new::<Identity, OFFSET>(),
            AddFilter: AddFilter::<Identity, OFFSET>,
            ResetFilterList: ResetFilterList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidGenericSink2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<IMSVidGenericSink as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidGraphSegment_Impl: Sized + super::super::super::System::Com::IPersist_Impl {
    fn Init(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn SetInit(&self, pinit: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn EnumFilters(&self) -> windows_core::Result<super::IEnumFilters>;
    fn Container(&self) -> windows_core::Result<IMSVidGraphSegmentContainer>;
    fn SetContainer(&self, pctl: Option<&IMSVidGraphSegmentContainer>) -> windows_core::Result<()>;
    fn Type(&self) -> windows_core::Result<MSVidSegmentType>;
    fn Category(&self) -> windows_core::Result<windows_core::GUID>;
    fn Build(&self) -> windows_core::Result<()>;
    fn PostBuild(&self) -> windows_core::Result<()>;
    fn PreRun(&self) -> windows_core::Result<()>;
    fn PostRun(&self) -> windows_core::Result<()>;
    fn PreStop(&self) -> windows_core::Result<()>;
    fn PostStop(&self) -> windows_core::Result<()>;
    fn OnEventNotify(&self, leventcode: i32, leventparm1: isize, leventparm2: isize) -> windows_core::Result<()>;
    fn Decompose(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidGraphSegment {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGraphSegment_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidGraphSegment_Vtbl
    where
        Identity: IMSVidGraphSegment_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegment_Impl::Init(this) {
                Ok(ok__) => {
                    pinit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetInit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinit: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::SetInit(this, windows_core::from_raw_borrowed(&pinit)).into()
        }
        unsafe extern "system" fn EnumFilters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnewenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegment_Impl::EnumFilters(this) {
                Ok(ok__) => {
                    pnewenum.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, ppctl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegment_Impl::Container(this) {
                Ok(ok__) => {
                    ppctl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetContainer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pctl: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::SetContainer(this, windows_core::from_raw_borrowed(&pctl)).into()
        }
        unsafe extern "system" fn Type<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptype: *mut MSVidSegmentType) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegment_Impl::Type(this) {
                Ok(ok__) => {
                    ptype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Category<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegment_Impl::Category(this) {
                Ok(ok__) => {
                    pguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Build<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::Build(this).into()
        }
        unsafe extern "system" fn PostBuild<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::PostBuild(this).into()
        }
        unsafe extern "system" fn PreRun<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::PreRun(this).into()
        }
        unsafe extern "system" fn PostRun<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::PostRun(this).into()
        }
        unsafe extern "system" fn PreStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::PreStop(this).into()
        }
        unsafe extern "system" fn PostStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::PostStop(this).into()
        }
        unsafe extern "system" fn OnEventNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, leventcode: i32, leventparm1: isize, leventparm2: isize) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::OnEventNotify(this, core::mem::transmute_copy(&leventcode), core::mem::transmute_copy(&leventparm1), core::mem::transmute_copy(&leventparm2)).into()
        }
        unsafe extern "system" fn Decompose<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegment_Impl::Decompose(this).into()
        }
        Self {
            base__: super::super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
            Init: Init::<Identity, OFFSET>,
            SetInit: SetInit::<Identity, OFFSET>,
            EnumFilters: EnumFilters::<Identity, OFFSET>,
            Container: Container::<Identity, OFFSET>,
            SetContainer: SetContainer::<Identity, OFFSET>,
            Type: Type::<Identity, OFFSET>,
            Category: Category::<Identity, OFFSET>,
            Build: Build::<Identity, OFFSET>,
            PostBuild: PostBuild::<Identity, OFFSET>,
            PreRun: PreRun::<Identity, OFFSET>,
            PostRun: PostRun::<Identity, OFFSET>,
            PreStop: PreStop::<Identity, OFFSET>,
            PostStop: PostStop::<Identity, OFFSET>,
            OnEventNotify: OnEventNotify::<Identity, OFFSET>,
            Decompose: Decompose::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidGraphSegment as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidGraphSegmentContainer_Impl: Sized {
    fn Graph(&self) -> windows_core::Result<super::IGraphBuilder>;
    fn Input(&self) -> windows_core::Result<IMSVidGraphSegment>;
    fn Outputs(&self) -> windows_core::Result<IEnumMSVidGraphSegment>;
    fn VideoRenderer(&self) -> windows_core::Result<IMSVidGraphSegment>;
    fn AudioRenderer(&self) -> windows_core::Result<IMSVidGraphSegment>;
    fn Features(&self) -> windows_core::Result<IEnumMSVidGraphSegment>;
    fn Composites(&self) -> windows_core::Result<IEnumMSVidGraphSegment>;
    fn ParentContainer(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn Decompose(&self, psegment: Option<&IMSVidGraphSegment>) -> windows_core::Result<()>;
    fn IsWindowless(&self) -> windows_core::Result<()>;
    fn GetFocus(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidGraphSegmentContainer {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidGraphSegmentContainer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidGraphSegmentContainer_Vtbl
    where
        Identity: IMSVidGraphSegmentContainer_Impl,
    {
        unsafe extern "system" fn Graph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppgraph: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::Graph(this) {
                Ok(ok__) => {
                    ppgraph.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Input<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinput: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::Input(this) {
                Ok(ok__) => {
                    ppinput.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Outputs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppoutputs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::Outputs(this) {
                Ok(ok__) => {
                    ppoutputs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoRenderer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppvr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::VideoRenderer(this) {
                Ok(ok__) => {
                    ppvr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioRenderer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppar: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::AudioRenderer(this) {
                Ok(ok__) => {
                    ppar.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Features<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfeatures: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::Features(this) {
                Ok(ok__) => {
                    ppfeatures.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Composites<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppcomposites: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::Composites(this) {
                Ok(ok__) => {
                    ppcomposites.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ParentContainer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppcontainer: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidGraphSegmentContainer_Impl::ParentContainer(this) {
                Ok(ok__) => {
                    ppcontainer.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Decompose<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psegment: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentContainer_Impl::Decompose(this, windows_core::from_raw_borrowed(&psegment)).into()
        }
        unsafe extern "system" fn IsWindowless<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentContainer_Impl::IsWindowless(this).into()
        }
        unsafe extern "system" fn GetFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentContainer_Impl::GetFocus(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Graph: Graph::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            Outputs: Outputs::<Identity, OFFSET>,
            VideoRenderer: VideoRenderer::<Identity, OFFSET>,
            AudioRenderer: AudioRenderer::<Identity, OFFSET>,
            Features: Features::<Identity, OFFSET>,
            Composites: Composites::<Identity, OFFSET>,
            ParentContainer: ParentContainer::<Identity, OFFSET>,
            Decompose: Decompose::<Identity, OFFSET>,
            IsWindowless: IsWindowless::<Identity, OFFSET>,
            GetFocus: GetFocus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidGraphSegmentContainer as windows_core::Interface>::IID
    }
}
pub trait IMSVidGraphSegmentUserInput_Impl: Sized {
    fn Click(&self) -> windows_core::Result<()>;
    fn DblClick(&self) -> windows_core::Result<()>;
    fn KeyDown(&self, keycode: *const i16, shiftstate: i16) -> windows_core::Result<()>;
    fn KeyPress(&self, keyascii: *const i16) -> windows_core::Result<()>;
    fn KeyUp(&self, keycode: *const i16, shiftstate: i16) -> windows_core::Result<()>;
    fn MouseDown(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::Result<()>;
    fn MouseMove(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::Result<()>;
    fn MouseUp(&self, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMSVidGraphSegmentUserInput {}
impl IMSVidGraphSegmentUserInput_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidGraphSegmentUserInput_Vtbl
    where
        Identity: IMSVidGraphSegmentUserInput_Impl,
    {
        unsafe extern "system" fn Click<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::Click(this).into()
        }
        unsafe extern "system" fn DblClick<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::DblClick(this).into()
        }
        unsafe extern "system" fn KeyDown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keycode: *const i16, shiftstate: i16) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::KeyDown(this, core::mem::transmute_copy(&keycode), core::mem::transmute_copy(&shiftstate)).into()
        }
        unsafe extern "system" fn KeyPress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keyascii: *const i16) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::KeyPress(this, core::mem::transmute_copy(&keyascii)).into()
        }
        unsafe extern "system" fn KeyUp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keycode: *const i16, shiftstate: i16) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::KeyUp(this, core::mem::transmute_copy(&keycode), core::mem::transmute_copy(&shiftstate)).into()
        }
        unsafe extern "system" fn MouseDown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::MouseDown(this, core::mem::transmute_copy(&buttonstate), core::mem::transmute_copy(&shiftstate), core::mem::transmute_copy(&x), core::mem::transmute_copy(&y)).into()
        }
        unsafe extern "system" fn MouseMove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::MouseMove(this, core::mem::transmute_copy(&buttonstate), core::mem::transmute_copy(&shiftstate), core::mem::transmute_copy(&x), core::mem::transmute_copy(&y)).into()
        }
        unsafe extern "system" fn MouseUp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, buttonstate: i16, shiftstate: i16, x: i32, y: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidGraphSegmentUserInput_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidGraphSegmentUserInput_Impl::MouseUp(this, core::mem::transmute_copy(&buttonstate), core::mem::transmute_copy(&shiftstate), core::mem::transmute_copy(&x), core::mem::transmute_copy(&y)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Click: Click::<Identity, OFFSET>,
            DblClick: DblClick::<Identity, OFFSET>,
            KeyDown: KeyDown::<Identity, OFFSET>,
            KeyPress: KeyPress::<Identity, OFFSET>,
            KeyUp: KeyUp::<Identity, OFFSET>,
            MouseDown: MouseDown::<Identity, OFFSET>,
            MouseMove: MouseMove::<Identity, OFFSET>,
            MouseUp: MouseUp::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidGraphSegmentUserInput as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidInputDevice_Impl: Sized + IMSVidDevice_Impl {
    fn IsViewable(&self, v: *const windows_core::VARIANT) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn View(&self, v: *const windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidInputDevice {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidInputDevice_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidInputDevice_Vtbl
    where
        Identity: IMSVidInputDevice_Impl,
    {
        unsafe extern "system" fn IsViewable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: *const core::mem::MaybeUninit<windows_core::VARIANT>, pfviewable: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidInputDevice_Impl::IsViewable(this, core::mem::transmute_copy(&v)) {
                Ok(ok__) => {
                    pfviewable.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn View<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidInputDevice_Impl::View(this, core::mem::transmute_copy(&v)).into()
        }
        Self { base__: IMSVidDevice_Vtbl::new::<Identity, OFFSET>(), IsViewable: IsViewable::<Identity, OFFSET>, View: View::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidInputDeviceEvent_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidInputDeviceEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidInputDeviceEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidInputDeviceEvent_Vtbl
    where
        Identity: IMSVidInputDeviceEvent_Impl,
    {
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidInputDevices_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &windows_core::VARIANT) -> windows_core::Result<IMSVidInputDevice>;
    fn Add(&self, pdb: Option<&IMSVidInputDevice>) -> windows_core::Result<()>;
    fn Remove(&self, v: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidInputDevices {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidInputDevices_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidInputDevices_Vtbl
    where
        Identity: IMSVidInputDevices_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidInputDevices_Impl::Count(this) {
                Ok(ok__) => {
                    lcount.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, pd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidInputDevices_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    pd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>, pdb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidInputDevices_Impl::get_Item(this, core::mem::transmute(&v)) {
                Ok(ok__) => {
                    pdb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidInputDevices_Impl::Add(this, windows_core::from_raw_borrowed(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidInputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidInputDevices_Impl::Remove(this, core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidInputDevices as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidOutputDevice_Impl: Sized + IMSVidDevice_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidOutputDevice {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidOutputDevice_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidOutputDevice_Vtbl
    where
        Identity: IMSVidOutputDevice_Impl,
    {
        Self { base__: IMSVidDevice_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidOutputDeviceEvent_Impl: Sized + IMSVidDeviceEvent_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidOutputDeviceEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidOutputDeviceEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidOutputDeviceEvent_Vtbl
    where
        Identity: IMSVidOutputDeviceEvent_Impl,
    {
        Self { base__: IMSVidDeviceEvent_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidOutputDevices_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &windows_core::VARIANT) -> windows_core::Result<IMSVidOutputDevice>;
    fn Add(&self, pdb: Option<&IMSVidOutputDevice>) -> windows_core::Result<()>;
    fn Remove(&self, v: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidOutputDevices {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidOutputDevices_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidOutputDevices_Vtbl
    where
        Identity: IMSVidOutputDevices_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidOutputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidOutputDevices_Impl::Count(this) {
                Ok(ok__) => {
                    lcount.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, pd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidOutputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidOutputDevices_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    pd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>, pdb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidOutputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidOutputDevices_Impl::get_Item(this, core::mem::transmute(&v)) {
                Ok(ok__) => {
                    pdb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidOutputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidOutputDevices_Impl::Add(this, windows_core::from_raw_borrowed(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidOutputDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidOutputDevices_Impl::Remove(this, core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidOutputDevices as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidPlayback_Impl: Sized + IMSVidInputDevice_Impl {
    fn EnableResetOnStop(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetEnableResetOnStop(&self, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Run(&self) -> windows_core::Result<()>;
    fn Pause(&self) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
    fn get_CanStep(&self, fbackwards: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn Step(&self, lstep: i32) -> windows_core::Result<()>;
    fn SetRate(&self, plrate: f64) -> windows_core::Result<()>;
    fn Rate(&self) -> windows_core::Result<f64>;
    fn SetCurrentPosition(&self, lposition: i32) -> windows_core::Result<()>;
    fn CurrentPosition(&self) -> windows_core::Result<i32>;
    fn SetPositionMode(&self, lpositionmode: PositionModeList) -> windows_core::Result<()>;
    fn PositionMode(&self) -> windows_core::Result<PositionModeList>;
    fn Length(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidPlayback {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidPlayback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidPlayback_Vtbl
    where
        Identity: IMSVidPlayback_Impl,
    {
        unsafe extern "system" fn EnableResetOnStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidPlayback_Impl::EnableResetOnStop(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEnableResetOnStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::SetEnableResetOnStop(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::Run(this).into()
        }
        unsafe extern "system" fn Pause<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::Pause(this).into()
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::Stop(this).into()
        }
        unsafe extern "system" fn get_CanStep<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fbackwards: super::super::super::Foundation::VARIANT_BOOL, pfcan: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidPlayback_Impl::get_CanStep(this, core::mem::transmute_copy(&fbackwards)) {
                Ok(ok__) => {
                    pfcan.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Step<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstep: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::Step(this, core::mem::transmute_copy(&lstep)).into()
        }
        unsafe extern "system" fn SetRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plrate: f64) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::SetRate(this, core::mem::transmute_copy(&plrate)).into()
        }
        unsafe extern "system" fn Rate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plrate: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidPlayback_Impl::Rate(this) {
                Ok(ok__) => {
                    plrate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lposition: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::SetCurrentPosition(this, core::mem::transmute_copy(&lposition)).into()
        }
        unsafe extern "system" fn CurrentPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lposition: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidPlayback_Impl::CurrentPosition(this) {
                Ok(ok__) => {
                    lposition.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPositionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpositionmode: PositionModeList) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlayback_Impl::SetPositionMode(this, core::mem::transmute_copy(&lpositionmode)).into()
        }
        unsafe extern "system" fn PositionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpositionmode: *mut PositionModeList) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidPlayback_Impl::PositionMode(this) {
                Ok(ok__) => {
                    lpositionmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Length<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llength: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidPlayback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidPlayback_Impl::Length(this) {
                Ok(ok__) => {
                    llength.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidInputDevice_Vtbl::new::<Identity, OFFSET>(),
            EnableResetOnStop: EnableResetOnStop::<Identity, OFFSET>,
            SetEnableResetOnStop: SetEnableResetOnStop::<Identity, OFFSET>,
            Run: Run::<Identity, OFFSET>,
            Pause: Pause::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            get_CanStep: get_CanStep::<Identity, OFFSET>,
            Step: Step::<Identity, OFFSET>,
            SetRate: SetRate::<Identity, OFFSET>,
            Rate: Rate::<Identity, OFFSET>,
            SetCurrentPosition: SetCurrentPosition::<Identity, OFFSET>,
            CurrentPosition: CurrentPosition::<Identity, OFFSET>,
            SetPositionMode: SetPositionMode::<Identity, OFFSET>,
            PositionMode: PositionMode::<Identity, OFFSET>,
            Length: Length::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidPlayback as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidPlaybackEvent_Impl: Sized + IMSVidInputDeviceEvent_Impl {
    fn EndOfMedia(&self, lpd: Option<&IMSVidPlayback>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidPlaybackEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidPlaybackEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidPlaybackEvent_Vtbl
    where
        Identity: IMSVidPlaybackEvent_Impl,
    {
        unsafe extern "system" fn EndOfMedia<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidPlaybackEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidPlaybackEvent_Impl::EndOfMedia(this, windows_core::from_raw_borrowed(&lpd)).into()
        }
        Self { base__: IMSVidInputDeviceEvent_Vtbl::new::<Identity, OFFSET>(), EndOfMedia: EndOfMedia::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidRect_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Top(&self) -> windows_core::Result<i32>;
    fn SetTop(&self, topval: i32) -> windows_core::Result<()>;
    fn Left(&self) -> windows_core::Result<i32>;
    fn SetLeft(&self, leftval: i32) -> windows_core::Result<()>;
    fn Width(&self) -> windows_core::Result<i32>;
    fn SetWidth(&self, widthval: i32) -> windows_core::Result<()>;
    fn Height(&self) -> windows_core::Result<i32>;
    fn SetHeight(&self, heightval: i32) -> windows_core::Result<()>;
    fn HWnd(&self) -> windows_core::Result<super::super::super::Foundation::HWND>;
    fn SetHWnd(&self, hwndval: super::super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetRect(&self, rectval: Option<&IMSVidRect>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidRect {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidRect_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidRect_Vtbl
    where
        Identity: IMSVidRect_Impl,
    {
        unsafe extern "system" fn Top<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, topval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidRect_Impl::Top(this) {
                Ok(ok__) => {
                    topval.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, topval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidRect_Impl::SetTop(this, core::mem::transmute_copy(&topval)).into()
        }
        unsafe extern "system" fn Left<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, leftval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidRect_Impl::Left(this) {
                Ok(ok__) => {
                    leftval.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, leftval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidRect_Impl::SetLeft(this, core::mem::transmute_copy(&leftval)).into()
        }
        unsafe extern "system" fn Width<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, widthval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidRect_Impl::Width(this) {
                Ok(ok__) => {
                    widthval.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, widthval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidRect_Impl::SetWidth(this, core::mem::transmute_copy(&widthval)).into()
        }
        unsafe extern "system" fn Height<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, heightval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidRect_Impl::Height(this) {
                Ok(ok__) => {
                    heightval.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, heightval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidRect_Impl::SetHeight(this, core::mem::transmute_copy(&heightval)).into()
        }
        unsafe extern "system" fn HWnd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndval: *mut super::super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidRect_Impl::HWnd(this) {
                Ok(ok__) => {
                    hwndval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHWnd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndval: super::super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidRect_Impl::SetHWnd(this, core::mem::transmute_copy(&hwndval)).into()
        }
        unsafe extern "system" fn SetRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rectval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidRect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidRect_Impl::SetRect(this, windows_core::from_raw_borrowed(&rectval)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Top: Top::<Identity, OFFSET>,
            SetTop: SetTop::<Identity, OFFSET>,
            Left: Left::<Identity, OFFSET>,
            SetLeft: SetLeft::<Identity, OFFSET>,
            Width: Width::<Identity, OFFSET>,
            SetWidth: SetWidth::<Identity, OFFSET>,
            Height: Height::<Identity, OFFSET>,
            SetHeight: SetHeight::<Identity, OFFSET>,
            HWnd: HWnd::<Identity, OFFSET>,
            SetHWnd: SetHWnd::<Identity, OFFSET>,
            SetRect: SetRect::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidRect as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferRecordingControl_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn StartTime(&self) -> windows_core::Result<i32>;
    fn SetStartTime(&self, rtstart: i32) -> windows_core::Result<()>;
    fn StopTime(&self) -> windows_core::Result<i32>;
    fn SetStopTime(&self, rtstop: i32) -> windows_core::Result<()>;
    fn RecordingStopped(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn RecordingStarted(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn RecordingType(&self) -> windows_core::Result<RecordingType>;
    fn RecordingAttribute(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferRecordingControl {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferRecordingControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferRecordingControl_Vtbl
    where
        Identity: IMSVidStreamBufferRecordingControl_Impl,
    {
        unsafe extern "system" fn StartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtstart: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferRecordingControl_Impl::StartTime(this) {
                Ok(ok__) => {
                    rtstart.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtstart: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferRecordingControl_Impl::SetStartTime(this, core::mem::transmute_copy(&rtstart)).into()
        }
        unsafe extern "system" fn StopTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtstop: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferRecordingControl_Impl::StopTime(this) {
                Ok(ok__) => {
                    rtstop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStopTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtstop: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferRecordingControl_Impl::SetStopTime(this, core::mem::transmute_copy(&rtstop)).into()
        }
        unsafe extern "system" fn RecordingStopped<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phresult: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferRecordingControl_Impl::RecordingStopped(this) {
                Ok(ok__) => {
                    phresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingStarted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phresult: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferRecordingControl_Impl::RecordingStarted(this) {
                Ok(ok__) => {
                    phresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtype: *mut RecordingType) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferRecordingControl_Impl::RecordingType(this) {
                Ok(ok__) => {
                    dwtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingAttribute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, precordingattribute: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferRecordingControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferRecordingControl_Impl::RecordingAttribute(this) {
                Ok(ok__) => {
                    precordingattribute.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            StartTime: StartTime::<Identity, OFFSET>,
            SetStartTime: SetStartTime::<Identity, OFFSET>,
            StopTime: StopTime::<Identity, OFFSET>,
            SetStopTime: SetStopTime::<Identity, OFFSET>,
            RecordingStopped: RecordingStopped::<Identity, OFFSET>,
            RecordingStarted: RecordingStarted::<Identity, OFFSET>,
            RecordingType: RecordingType::<Identity, OFFSET>,
            RecordingAttribute: RecordingAttribute::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferRecordingControl as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSink_Impl: Sized + IMSVidOutputDevice_Impl {
    fn get_ContentRecorder(&self, pszfilename: &windows_core::BSTR) -> windows_core::Result<IMSVidStreamBufferRecordingControl>;
    fn get_ReferenceRecorder(&self, pszfilename: &windows_core::BSTR) -> windows_core::Result<IMSVidStreamBufferRecordingControl>;
    fn SinkName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetSinkName(&self, name: &windows_core::BSTR) -> windows_core::Result<()>;
    fn NameSetLock(&self) -> windows_core::Result<()>;
    fn SBESink(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSink {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSink_Vtbl
    where
        Identity: IMSVidStreamBufferSink_Impl,
    {
        unsafe extern "system" fn get_ContentRecorder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: core::mem::MaybeUninit<windows_core::BSTR>, precordingiunknown: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink_Impl::get_ContentRecorder(this, core::mem::transmute(&pszfilename)) {
                Ok(ok__) => {
                    precordingiunknown.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_ReferenceRecorder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: core::mem::MaybeUninit<windows_core::BSTR>, precordingiunknown: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink_Impl::get_ReferenceRecorder(this, core::mem::transmute(&pszfilename)) {
                Ok(ok__) => {
                    precordingiunknown.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SinkName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink_Impl::SinkName(this) {
                Ok(ok__) => {
                    pname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSinkName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink_Impl::SetSinkName(this, core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn NameSetLock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink_Impl::NameSetLock(this).into()
        }
        unsafe extern "system" fn SBESink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sbeconfig: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink_Impl::SBESink(this) {
                Ok(ok__) => {
                    sbeconfig.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, OFFSET>(),
            get_ContentRecorder: get_ContentRecorder::<Identity, OFFSET>,
            get_ReferenceRecorder: get_ReferenceRecorder::<Identity, OFFSET>,
            SinkName: SinkName::<Identity, OFFSET>,
            SetSinkName: SetSinkName::<Identity, OFFSET>,
            NameSetLock: NameSetLock::<Identity, OFFSET>,
            SBESink: SBESink::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSink as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSink2_Impl: Sized + IMSVidStreamBufferSink_Impl {
    fn UnlockProfile(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSink2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSink2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSink2_Vtbl
    where
        Identity: IMSVidStreamBufferSink2_Impl,
    {
        unsafe extern "system" fn UnlockProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink2_Impl::UnlockProfile(this).into()
        }
        Self { base__: IMSVidStreamBufferSink_Vtbl::new::<Identity, OFFSET>(), UnlockProfile: UnlockProfile::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSink2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSink as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSink3_Impl: Sized + IMSVidStreamBufferSink2_Impl {
    fn SetMinSeek(&self) -> windows_core::Result<i32>;
    fn AudioCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn VideoCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn CCCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn WSTCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn SetAudioAnalysisFilter(&self, szclsid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AudioAnalysisFilter(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Set_AudioAnalysisFilter(&self, guid: &windows_core::GUID) -> windows_core::Result<()>;
    fn _AudioAnalysisFilter(&self) -> windows_core::Result<windows_core::GUID>;
    fn SetVideoAnalysisFilter(&self, szclsid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn VideoAnalysisFilter(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Set_VideoAnalysisFilter(&self, guid: &windows_core::GUID) -> windows_core::Result<()>;
    fn _VideoAnalysisFilter(&self) -> windows_core::Result<windows_core::GUID>;
    fn SetDataAnalysisFilter(&self, szclsid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn DataAnalysisFilter(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Set_DataAnalysisFilter(&self, guid: &windows_core::GUID) -> windows_core::Result<()>;
    fn _DataAnalysisFilter(&self) -> windows_core::Result<windows_core::GUID>;
    fn LicenseErrorCode(&self) -> windows_core::Result<windows_core::HRESULT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSink3 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSink3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSink3_Vtbl
    where
        Identity: IMSVidStreamBufferSink3_Impl,
    {
        unsafe extern "system" fn SetMinSeek<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmin: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::SetMinSeek(this) {
                Ok(ok__) => {
                    pdwmin.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AudioCounter<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: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::AudioCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoCounter<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: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::VideoCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CCCounter<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: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::CCCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn WSTCounter<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: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::WSTCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAudioAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, szclsid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink3_Impl::SetAudioAnalysisFilter(this, core::mem::transmute(&szclsid)).into()
        }
        unsafe extern "system" fn AudioAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszclsid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::AudioAnalysisFilter(this) {
                Ok(ok__) => {
                    pszclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_AudioAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink3_Impl::Set_AudioAnalysisFilter(this, core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn _AudioAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::_AudioAnalysisFilter(this) {
                Ok(ok__) => {
                    pguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVideoAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, szclsid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink3_Impl::SetVideoAnalysisFilter(this, core::mem::transmute(&szclsid)).into()
        }
        unsafe extern "system" fn VideoAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszclsid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::VideoAnalysisFilter(this) {
                Ok(ok__) => {
                    pszclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_VideoAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink3_Impl::Set_VideoAnalysisFilter(this, core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn _VideoAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::_VideoAnalysisFilter(this) {
                Ok(ok__) => {
                    pguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDataAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, szclsid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink3_Impl::SetDataAnalysisFilter(this, core::mem::transmute(&szclsid)).into()
        }
        unsafe extern "system" fn DataAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszclsid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::DataAnalysisFilter(this) {
                Ok(ok__) => {
                    pszclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_DataAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSink3_Impl::Set_DataAnalysisFilter(this, core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn _DataAnalysisFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::_DataAnalysisFilter(this) {
                Ok(ok__) => {
                    pguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn LicenseErrorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hres: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSink3_Impl::LicenseErrorCode(this) {
                Ok(ok__) => {
                    hres.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidStreamBufferSink2_Vtbl::new::<Identity, OFFSET>(),
            SetMinSeek: SetMinSeek::<Identity, OFFSET>,
            AudioCounter: AudioCounter::<Identity, OFFSET>,
            VideoCounter: VideoCounter::<Identity, OFFSET>,
            CCCounter: CCCounter::<Identity, OFFSET>,
            WSTCounter: WSTCounter::<Identity, OFFSET>,
            SetAudioAnalysisFilter: SetAudioAnalysisFilter::<Identity, OFFSET>,
            AudioAnalysisFilter: AudioAnalysisFilter::<Identity, OFFSET>,
            Set_AudioAnalysisFilter: Set_AudioAnalysisFilter::<Identity, OFFSET>,
            _AudioAnalysisFilter: _AudioAnalysisFilter::<Identity, OFFSET>,
            SetVideoAnalysisFilter: SetVideoAnalysisFilter::<Identity, OFFSET>,
            VideoAnalysisFilter: VideoAnalysisFilter::<Identity, OFFSET>,
            Set_VideoAnalysisFilter: Set_VideoAnalysisFilter::<Identity, OFFSET>,
            _VideoAnalysisFilter: _VideoAnalysisFilter::<Identity, OFFSET>,
            SetDataAnalysisFilter: SetDataAnalysisFilter::<Identity, OFFSET>,
            DataAnalysisFilter: DataAnalysisFilter::<Identity, OFFSET>,
            Set_DataAnalysisFilter: Set_DataAnalysisFilter::<Identity, OFFSET>,
            _DataAnalysisFilter: _DataAnalysisFilter::<Identity, OFFSET>,
            LicenseErrorCode: LicenseErrorCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSink3 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSink as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSink2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSinkEvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn CertificateFailure(&self) -> windows_core::Result<()>;
    fn CertificateSuccess(&self) -> windows_core::Result<()>;
    fn WriteFailure(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSinkEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent_Vtbl
    where
        Identity: IMSVidStreamBufferSinkEvent_Impl,
    {
        unsafe extern "system" fn CertificateFailure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent_Impl::CertificateFailure(this).into()
        }
        unsafe extern "system" fn CertificateSuccess<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent_Impl::CertificateSuccess(this).into()
        }
        unsafe extern "system" fn WriteFailure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent_Impl::WriteFailure(this).into()
        }
        Self {
            base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, OFFSET>(),
            CertificateFailure: CertificateFailure::<Identity, OFFSET>,
            CertificateSuccess: CertificateSuccess::<Identity, OFFSET>,
            WriteFailure: WriteFailure::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSinkEvent2_Impl: Sized + IMSVidStreamBufferSinkEvent_Impl {
    fn EncryptionOn(&self) -> windows_core::Result<()>;
    fn EncryptionOff(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSinkEvent2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent2_Vtbl
    where
        Identity: IMSVidStreamBufferSinkEvent2_Impl,
    {
        unsafe extern "system" fn EncryptionOn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent2_Impl::EncryptionOn(this).into()
        }
        unsafe extern "system" fn EncryptionOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent2_Impl::EncryptionOff(this).into()
        }
        Self {
            base__: IMSVidStreamBufferSinkEvent_Vtbl::new::<Identity, OFFSET>(),
            EncryptionOn: EncryptionOn::<Identity, OFFSET>,
            EncryptionOff: EncryptionOff::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSinkEvent3_Impl: Sized + IMSVidStreamBufferSinkEvent2_Impl {
    fn LicenseChange(&self, dwprot: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSinkEvent3 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent3_Vtbl
    where
        Identity: IMSVidStreamBufferSinkEvent3_Impl,
    {
        unsafe extern "system" fn LicenseChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwprot: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent3_Impl::LicenseChange(this, core::mem::transmute_copy(&dwprot)).into()
        }
        Self { base__: IMSVidStreamBufferSinkEvent2_Vtbl::new::<Identity, OFFSET>(), LicenseChange: LicenseChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent3 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSinkEvent4_Impl: Sized + IMSVidStreamBufferSinkEvent3_Impl {
    fn WriteFailureClear(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSinkEvent4 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSinkEvent4_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSinkEvent4_Vtbl
    where
        Identity: IMSVidStreamBufferSinkEvent4_Impl,
    {
        unsafe extern "system" fn WriteFailureClear<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSinkEvent4_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSinkEvent4_Impl::WriteFailureClear(this).into()
        }
        Self { base__: IMSVidStreamBufferSinkEvent3_Vtbl::new::<Identity, OFFSET>(), WriteFailureClear: WriteFailureClear::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSinkEvent4 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent2 as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSinkEvent3 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSource_Impl: Sized + IMSVidFilePlayback_Impl {
    fn Start(&self) -> windows_core::Result<i32>;
    fn RecordingAttribute(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn CurrentRatings(&self, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, pbfenattr: *mut i32) -> windows_core::Result<()>;
    fn MaxRatingsLevel(&self, ensystem: EnTvRat_System, enrating: EnTvRat_GenericLevel, lbfenattr: i32) -> windows_core::Result<()>;
    fn SetBlockUnrated(&self, bblock: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetUnratedDelay(&self, dwdelay: i32) -> windows_core::Result<()>;
    fn SBESource(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSource {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSource_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSource_Vtbl
    where
        Identity: IMSVidStreamBufferSource_Impl,
    {
        unsafe extern "system" fn Start<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstart: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource_Impl::Start(this) {
                Ok(ok__) => {
                    lstart.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RecordingAttribute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, precordingattribute: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource_Impl::RecordingAttribute(this) {
                Ok(ok__) => {
                    precordingattribute.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentRatings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pensystem: *mut EnTvRat_System, penrating: *mut EnTvRat_GenericLevel, pbfenattr: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSource_Impl::CurrentRatings(this, core::mem::transmute_copy(&pensystem), core::mem::transmute_copy(&penrating), core::mem::transmute_copy(&pbfenattr)).into()
        }
        unsafe extern "system" fn MaxRatingsLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ensystem: EnTvRat_System, enrating: EnTvRat_GenericLevel, lbfenattr: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSource_Impl::MaxRatingsLevel(this, core::mem::transmute_copy(&ensystem), core::mem::transmute_copy(&enrating), core::mem::transmute_copy(&lbfenattr)).into()
        }
        unsafe extern "system" fn SetBlockUnrated<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bblock: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSource_Impl::SetBlockUnrated(this, core::mem::transmute_copy(&bblock)).into()
        }
        unsafe extern "system" fn SetUnratedDelay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwdelay: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSource_Impl::SetUnratedDelay(this, core::mem::transmute_copy(&dwdelay)).into()
        }
        unsafe extern "system" fn SBESource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sbefilter: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource_Impl::SBESource(this) {
                Ok(ok__) => {
                    sbefilter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidFilePlayback_Vtbl::new::<Identity, OFFSET>(),
            Start: Start::<Identity, OFFSET>,
            RecordingAttribute: RecordingAttribute::<Identity, OFFSET>,
            CurrentRatings: CurrentRatings::<Identity, OFFSET>,
            MaxRatingsLevel: MaxRatingsLevel::<Identity, OFFSET>,
            SetBlockUnrated: SetBlockUnrated::<Identity, OFFSET>,
            SetUnratedDelay: SetUnratedDelay::<Identity, OFFSET>,
            SBESource: SBESource::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSource as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidPlayback as windows_core::Interface>::IID || iid == &<IMSVidFilePlayback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSource2_Impl: Sized + IMSVidStreamBufferSource_Impl {
    fn put_RateEx(&self, dwrate: f64, dwframespersecond: u32) -> windows_core::Result<()>;
    fn AudioCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn VideoCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn CCCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn WSTCounter(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSource2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSource2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSource2_Vtbl
    where
        Identity: IMSVidStreamBufferSource2_Impl,
    {
        unsafe extern "system" fn put_RateEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrate: f64, dwframespersecond: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSource2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSource2_Impl::put_RateEx(this, core::mem::transmute_copy(&dwrate), core::mem::transmute_copy(&dwframespersecond)).into()
        }
        unsafe extern "system" fn AudioCounter<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: IMSVidStreamBufferSource2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource2_Impl::AudioCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoCounter<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: IMSVidStreamBufferSource2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource2_Impl::VideoCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CCCounter<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: IMSVidStreamBufferSource2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource2_Impl::CCCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn WSTCounter<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: IMSVidStreamBufferSource2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidStreamBufferSource2_Impl::WSTCounter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidStreamBufferSource_Vtbl::new::<Identity, OFFSET>(),
            put_RateEx: put_RateEx::<Identity, OFFSET>,
            AudioCounter: AudioCounter::<Identity, OFFSET>,
            VideoCounter: VideoCounter::<Identity, OFFSET>,
            CCCounter: CCCounter::<Identity, OFFSET>,
            WSTCounter: WSTCounter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSource2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidPlayback as windows_core::Interface>::IID || iid == &<IMSVidFilePlayback as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSource as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSourceEvent_Impl: Sized + IMSVidFilePlaybackEvent_Impl {
    fn CertificateFailure(&self) -> windows_core::Result<()>;
    fn CertificateSuccess(&self) -> windows_core::Result<()>;
    fn RatingsBlocked(&self) -> windows_core::Result<()>;
    fn RatingsUnblocked(&self) -> windows_core::Result<()>;
    fn RatingsChanged(&self) -> windows_core::Result<()>;
    fn TimeHole(&self, streamoffsetms: i32, sizems: i32) -> windows_core::Result<()>;
    fn StaleDataRead(&self) -> windows_core::Result<()>;
    fn ContentBecomingStale(&self) -> windows_core::Result<()>;
    fn StaleFileDeleted(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSourceEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSourceEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSourceEvent_Vtbl
    where
        Identity: IMSVidStreamBufferSourceEvent_Impl,
    {
        unsafe extern "system" fn CertificateFailure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::CertificateFailure(this).into()
        }
        unsafe extern "system" fn CertificateSuccess<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::CertificateSuccess(this).into()
        }
        unsafe extern "system" fn RatingsBlocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::RatingsBlocked(this).into()
        }
        unsafe extern "system" fn RatingsUnblocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::RatingsUnblocked(this).into()
        }
        unsafe extern "system" fn RatingsChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::RatingsChanged(this).into()
        }
        unsafe extern "system" fn TimeHole<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, streamoffsetms: i32, sizems: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::TimeHole(this, core::mem::transmute_copy(&streamoffsetms), core::mem::transmute_copy(&sizems)).into()
        }
        unsafe extern "system" fn StaleDataRead<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::StaleDataRead(this).into()
        }
        unsafe extern "system" fn ContentBecomingStale<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::ContentBecomingStale(this).into()
        }
        unsafe extern "system" fn StaleFileDeleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent_Impl::StaleFileDeleted(this).into()
        }
        Self {
            base__: IMSVidFilePlaybackEvent_Vtbl::new::<Identity, OFFSET>(),
            CertificateFailure: CertificateFailure::<Identity, OFFSET>,
            CertificateSuccess: CertificateSuccess::<Identity, OFFSET>,
            RatingsBlocked: RatingsBlocked::<Identity, OFFSET>,
            RatingsUnblocked: RatingsUnblocked::<Identity, OFFSET>,
            RatingsChanged: RatingsChanged::<Identity, OFFSET>,
            TimeHole: TimeHole::<Identity, OFFSET>,
            StaleDataRead: StaleDataRead::<Identity, OFFSET>,
            ContentBecomingStale: ContentBecomingStale::<Identity, OFFSET>,
            StaleFileDeleted: StaleFileDeleted::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSourceEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSourceEvent2_Impl: Sized + IMSVidStreamBufferSourceEvent_Impl {
    fn RateChange(&self, qwnewrate: f64, qwoldrate: f64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSourceEvent2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSourceEvent2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSourceEvent2_Vtbl
    where
        Identity: IMSVidStreamBufferSourceEvent2_Impl,
    {
        unsafe extern "system" fn RateChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, qwnewrate: f64, qwoldrate: f64) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent2_Impl::RateChange(this, core::mem::transmute_copy(&qwnewrate), core::mem::transmute_copy(&qwoldrate)).into()
        }
        Self { base__: IMSVidStreamBufferSourceEvent_Vtbl::new::<Identity, OFFSET>(), RateChange: RateChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSourceEvent2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSourceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferSourceEvent3_Impl: Sized + IMSVidStreamBufferSourceEvent2_Impl {
    fn BroadcastEvent(&self, guid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn BroadcastEventEx(&self, guid: &windows_core::BSTR, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::Result<()>;
    fn COPPBlocked(&self) -> windows_core::Result<()>;
    fn COPPUnblocked(&self) -> windows_core::Result<()>;
    fn ContentPrimarilyAudio(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferSourceEvent3 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferSourceEvent3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferSourceEvent3_Vtbl
    where
        Identity: IMSVidStreamBufferSourceEvent3_Impl,
    {
        unsafe extern "system" fn BroadcastEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent3_Impl::BroadcastEvent(this, core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn BroadcastEventEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: core::mem::MaybeUninit<windows_core::BSTR>, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent3_Impl::BroadcastEventEx(this, core::mem::transmute(&guid), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2), core::mem::transmute_copy(&param3), core::mem::transmute_copy(&param4)).into()
        }
        unsafe extern "system" fn COPPBlocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent3_Impl::COPPBlocked(this).into()
        }
        unsafe extern "system" fn COPPUnblocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent3_Impl::COPPUnblocked(this).into()
        }
        unsafe extern "system" fn ContentPrimarilyAudio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferSourceEvent3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferSourceEvent3_Impl::ContentPrimarilyAudio(this).into()
        }
        Self {
            base__: IMSVidStreamBufferSourceEvent2_Vtbl::new::<Identity, OFFSET>(),
            BroadcastEvent: BroadcastEvent::<Identity, OFFSET>,
            BroadcastEventEx: BroadcastEventEx::<Identity, OFFSET>,
            COPPBlocked: COPPBlocked::<Identity, OFFSET>,
            COPPUnblocked: COPPUnblocked::<Identity, OFFSET>,
            ContentPrimarilyAudio: ContentPrimarilyAudio::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferSourceEvent3 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSourceEvent as windows_core::Interface>::IID || iid == &<IMSVidStreamBufferSourceEvent2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidStreamBufferV2SourceEvent_Impl: Sized + IMSVidFilePlaybackEvent_Impl {
    fn RatingsChanged(&self) -> windows_core::Result<()>;
    fn TimeHole(&self, streamoffsetms: i32, sizems: i32) -> windows_core::Result<()>;
    fn StaleDataRead(&self) -> windows_core::Result<()>;
    fn ContentBecomingStale(&self) -> windows_core::Result<()>;
    fn StaleFileDeleted(&self) -> windows_core::Result<()>;
    fn RateChange(&self, qwnewrate: f64, qwoldrate: f64) -> windows_core::Result<()>;
    fn BroadcastEvent(&self, guid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn BroadcastEventEx(&self, guid: &windows_core::BSTR, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::Result<()>;
    fn ContentPrimarilyAudio(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidStreamBufferV2SourceEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidStreamBufferV2SourceEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidStreamBufferV2SourceEvent_Vtbl
    where
        Identity: IMSVidStreamBufferV2SourceEvent_Impl,
    {
        unsafe extern "system" fn RatingsChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::RatingsChanged(this).into()
        }
        unsafe extern "system" fn TimeHole<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, streamoffsetms: i32, sizems: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::TimeHole(this, core::mem::transmute_copy(&streamoffsetms), core::mem::transmute_copy(&sizems)).into()
        }
        unsafe extern "system" fn StaleDataRead<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::StaleDataRead(this).into()
        }
        unsafe extern "system" fn ContentBecomingStale<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::ContentBecomingStale(this).into()
        }
        unsafe extern "system" fn StaleFileDeleted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::StaleFileDeleted(this).into()
        }
        unsafe extern "system" fn RateChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, qwnewrate: f64, qwoldrate: f64) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::RateChange(this, core::mem::transmute_copy(&qwnewrate), core::mem::transmute_copy(&qwoldrate)).into()
        }
        unsafe extern "system" fn BroadcastEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::BroadcastEvent(this, core::mem::transmute(&guid)).into()
        }
        unsafe extern "system" fn BroadcastEventEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: core::mem::MaybeUninit<windows_core::BSTR>, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::BroadcastEventEx(this, core::mem::transmute(&guid), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2), core::mem::transmute_copy(&param3), core::mem::transmute_copy(&param4)).into()
        }
        unsafe extern "system" fn ContentPrimarilyAudio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidStreamBufferV2SourceEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidStreamBufferV2SourceEvent_Impl::ContentPrimarilyAudio(this).into()
        }
        Self {
            base__: IMSVidFilePlaybackEvent_Vtbl::new::<Identity, OFFSET>(),
            RatingsChanged: RatingsChanged::<Identity, OFFSET>,
            TimeHole: TimeHole::<Identity, OFFSET>,
            StaleDataRead: StaleDataRead::<Identity, OFFSET>,
            ContentBecomingStale: ContentBecomingStale::<Identity, OFFSET>,
            StaleFileDeleted: StaleFileDeleted::<Identity, OFFSET>,
            RateChange: RateChange::<Identity, OFFSET>,
            BroadcastEvent: BroadcastEvent::<Identity, OFFSET>,
            BroadcastEventEx: BroadcastEventEx::<Identity, OFFSET>,
            ContentPrimarilyAudio: ContentPrimarilyAudio::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidStreamBufferV2SourceEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID || iid == &<IMSVidFilePlaybackEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidTuner_Impl: Sized + IMSVidVideoInputDevice_Impl {
    fn Tune(&self) -> windows_core::Result<ITuneRequest>;
    fn SetTune(&self, ptr: Option<&ITuneRequest>) -> windows_core::Result<()>;
    fn TuningSpace(&self) -> windows_core::Result<ITuningSpace>;
    fn SetTuningSpace(&self, plts: Option<&ITuningSpace>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidTuner {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidTuner_Vtbl
    where
        Identity: IMSVidTuner_Impl,
    {
        unsafe extern "system" fn Tune<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidTuner_Impl::Tune(this) {
                Ok(ok__) => {
                    pptr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTune<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptr: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidTuner_Impl::SetTune(this, windows_core::from_raw_borrowed(&ptr)).into()
        }
        unsafe extern "system" fn TuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plts: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidTuner_Impl::TuningSpace(this) {
                Ok(ok__) => {
                    plts.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plts: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidTuner_Impl::SetTuningSpace(this, windows_core::from_raw_borrowed(&plts)).into()
        }
        Self {
            base__: IMSVidVideoInputDevice_Vtbl::new::<Identity, OFFSET>(),
            Tune: Tune::<Identity, OFFSET>,
            SetTune: SetTune::<Identity, OFFSET>,
            TuningSpace: TuningSpace::<Identity, OFFSET>,
            SetTuningSpace: SetTuningSpace::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidTuner as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidVideoInputDevice as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidTunerEvent_Impl: Sized + IMSVidInputDeviceEvent_Impl {
    fn TuneChanged(&self, lpd: Option<&IMSVidTuner>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidTunerEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidTunerEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidTunerEvent_Vtbl
    where
        Identity: IMSVidTunerEvent_Impl,
    {
        unsafe extern "system" fn TuneChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpd: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidTunerEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidTunerEvent_Impl::TuneChanged(this, windows_core::from_raw_borrowed(&lpd)).into()
        }
        Self { base__: IMSVidInputDeviceEvent_Vtbl::new::<Identity, OFFSET>(), TuneChanged: TuneChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidTunerEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVMR9_Impl: Sized + IMSVidVideoRenderer_Impl {
    fn Allocator_ID(&self) -> windows_core::Result<i32>;
    fn SetAllocator(&self, allocpresent: Option<&windows_core::IUnknown>, id: i32) -> windows_core::Result<()>;
    fn SetSuppressEffects(&self, bsuppress: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SuppressEffects(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn Allocator(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidVMR9 {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVMR9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVMR9_Vtbl
    where
        Identity: IMSVidVMR9_Impl,
    {
        unsafe extern "system" fn Allocator_ID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVMR9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVMR9_Impl::Allocator_ID(this) {
                Ok(ok__) => {
                    id.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, allocpresent: *mut core::ffi::c_void, id: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVMR9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVMR9_Impl::SetAllocator(this, windows_core::from_raw_borrowed(&allocpresent), core::mem::transmute_copy(&id)).into()
        }
        unsafe extern "system" fn SetSuppressEffects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsuppress: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVMR9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVMR9_Impl::SetSuppressEffects(this, core::mem::transmute_copy(&bsuppress)).into()
        }
        unsafe extern "system" fn SuppressEffects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsuppress: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVMR9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVMR9_Impl::SuppressEffects(this) {
                Ok(ok__) => {
                    bsuppress.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Allocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, allocpresent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVMR9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVMR9_Impl::Allocator(this) {
                Ok(ok__) => {
                    allocpresent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidVideoRenderer_Vtbl::new::<Identity, OFFSET>(),
            Allocator_ID: Allocator_ID::<Identity, OFFSET>,
            SetAllocator: SetAllocator::<Identity, OFFSET>,
            SetSuppressEffects: SetSuppressEffects::<Identity, OFFSET>,
            SuppressEffects: SuppressEffects::<Identity, OFFSET>,
            Allocator: Allocator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVMR9 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<IMSVidVideoRenderer as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
pub trait IMSVidVRGraphSegment_Impl: Sized + IMSVidGraphSegment_Impl {
    fn Set_VMRendererMode(&self, dwmode: i32) -> windows_core::Result<()>;
    fn SetOwner(&self, window: super::super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn Owner(&self) -> windows_core::Result<super::super::super::Foundation::HWND>;
    fn UseOverlay(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetUseOverlay(&self, useoverlayval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Visible(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetVisible(&self, visible: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ColorKey(&self) -> windows_core::Result<u32>;
    fn SetColorKey(&self, colorkey: u32) -> windows_core::Result<()>;
    fn Source(&self) -> windows_core::Result<super::super::super::Foundation::RECT>;
    fn SetSource(&self, r: &super::super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn Destination(&self) -> windows_core::Result<super::super::super::Foundation::RECT>;
    fn SetDestination(&self, r: &super::super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn get_NativeSize(&self, sizeval: *mut super::super::super::Foundation::SIZE, aspectratio: *mut super::super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn BorderColor(&self) -> windows_core::Result<u32>;
    fn SetBorderColor(&self, color: u32) -> windows_core::Result<()>;
    fn MaintainAspectRatio(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetMaintainAspectRatio(&self, fmaintain: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Refresh(&self) -> windows_core::Result<()>;
    fn DisplayChange(&self) -> windows_core::Result<()>;
    fn RePaint(&self, hdc: super::super::super::Graphics::Gdi::HDC) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IMSVidVRGraphSegment {}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl IMSVidVRGraphSegment_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVRGraphSegment_Vtbl
    where
        Identity: IMSVidVRGraphSegment_Impl,
    {
        unsafe extern "system" fn Set_VMRendererMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmode: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::Set_VMRendererMode(this, core::mem::transmute_copy(&dwmode)).into()
        }
        unsafe extern "system" fn SetOwner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, window: super::super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetOwner(this, core::mem::transmute_copy(&window)).into()
        }
        unsafe extern "system" fn Owner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, window: *mut super::super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::Owner(this) {
                Ok(ok__) => {
                    window.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UseOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, useoverlayval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::UseOverlay(this) {
                Ok(ok__) => {
                    useoverlayval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUseOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, useoverlayval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetUseOverlay(this, core::mem::transmute_copy(&useoverlayval)).into()
        }
        unsafe extern "system" fn Visible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, visible: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::Visible(this) {
                Ok(ok__) => {
                    visible.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, visible: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetVisible(this, core::mem::transmute_copy(&visible)).into()
        }
        unsafe extern "system" fn ColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, colorkey: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::ColorKey(this) {
                Ok(ok__) => {
                    colorkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, colorkey: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetColorKey(this, core::mem::transmute_copy(&colorkey)).into()
        }
        unsafe extern "system" fn Source<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, r: *mut super::super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::Source(this) {
                Ok(ok__) => {
                    r.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, r: super::super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetSource(this, core::mem::transmute(&r)).into()
        }
        unsafe extern "system" fn Destination<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, r: *mut super::super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::Destination(this) {
                Ok(ok__) => {
                    r.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestination<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, r: super::super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetDestination(this, core::mem::transmute(&r)).into()
        }
        unsafe extern "system" fn get_NativeSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sizeval: *mut super::super::super::Foundation::SIZE, aspectratio: *mut super::super::super::Foundation::SIZE) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::get_NativeSize(this, core::mem::transmute_copy(&sizeval), core::mem::transmute_copy(&aspectratio)).into()
        }
        unsafe extern "system" fn BorderColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::BorderColor(this) {
                Ok(ok__) => {
                    color.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBorderColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetBorderColor(this, core::mem::transmute_copy(&color)).into()
        }
        unsafe extern "system" fn MaintainAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fmaintain: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVRGraphSegment_Impl::MaintainAspectRatio(this) {
                Ok(ok__) => {
                    fmaintain.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaintainAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fmaintain: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::SetMaintainAspectRatio(this, core::mem::transmute_copy(&fmaintain)).into()
        }
        unsafe extern "system" fn Refresh<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::Refresh(this).into()
        }
        unsafe extern "system" fn DisplayChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::DisplayChange(this).into()
        }
        unsafe extern "system" fn RePaint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::super::Graphics::Gdi::HDC) -> windows_core::HRESULT
        where
            Identity: IMSVidVRGraphSegment_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVRGraphSegment_Impl::RePaint(this, core::mem::transmute_copy(&hdc)).into()
        }
        Self {
            base__: IMSVidGraphSegment_Vtbl::new::<Identity, OFFSET>(),
            Set_VMRendererMode: Set_VMRendererMode::<Identity, OFFSET>,
            SetOwner: SetOwner::<Identity, OFFSET>,
            Owner: Owner::<Identity, OFFSET>,
            UseOverlay: UseOverlay::<Identity, OFFSET>,
            SetUseOverlay: SetUseOverlay::<Identity, OFFSET>,
            Visible: Visible::<Identity, OFFSET>,
            SetVisible: SetVisible::<Identity, OFFSET>,
            ColorKey: ColorKey::<Identity, OFFSET>,
            SetColorKey: SetColorKey::<Identity, OFFSET>,
            Source: Source::<Identity, OFFSET>,
            SetSource: SetSource::<Identity, OFFSET>,
            Destination: Destination::<Identity, OFFSET>,
            SetDestination: SetDestination::<Identity, OFFSET>,
            get_NativeSize: get_NativeSize::<Identity, OFFSET>,
            BorderColor: BorderColor::<Identity, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, OFFSET>,
            MaintainAspectRatio: MaintainAspectRatio::<Identity, OFFSET>,
            SetMaintainAspectRatio: SetMaintainAspectRatio::<Identity, OFFSET>,
            Refresh: Refresh::<Identity, OFFSET>,
            DisplayChange: DisplayChange::<Identity, OFFSET>,
            RePaint: RePaint::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVRGraphSegment as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IMSVidGraphSegment as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidVideoInputDevice_Impl: Sized + IMSVidInputDevice_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidVideoInputDevice {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoInputDevice_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVideoInputDevice_Vtbl
    where
        Identity: IMSVidVideoInputDevice_Impl,
    {
        Self { base__: IMSVidInputDevice_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVideoInputDevice as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRenderer_Impl: Sized + IMSVidOutputDevice_Impl {
    fn CustomCompositorClass(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetCustomCompositorClass(&self, compositorclsid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn _CustomCompositorClass(&self) -> windows_core::Result<windows_core::GUID>;
    fn Set_CustomCompositorClass(&self, compositorclsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn _CustomCompositor(&self) -> windows_core::Result<super::IVMRImageCompositor>;
    fn Set_CustomCompositor(&self, compositor: Option<&super::IVMRImageCompositor>) -> windows_core::Result<()>;
    fn MixerBitmap(&self) -> windows_core::Result<super::super::super::System::Ole::IPictureDisp>;
    fn _MixerBitmap(&self) -> windows_core::Result<super::IVMRMixerBitmap>;
    fn SetMixerBitmap(&self, mixerpicturedisp: Option<&super::super::super::System::Ole::IPictureDisp>) -> windows_core::Result<()>;
    fn Set_MixerBitmap(&self, mixerpicture: *const super::VMRALPHABITMAP) -> windows_core::Result<()>;
    fn MixerBitmapPositionRect(&self) -> windows_core::Result<IMSVidRect>;
    fn SetMixerBitmapPositionRect(&self, rdest: Option<&IMSVidRect>) -> windows_core::Result<()>;
    fn MixerBitmapOpacity(&self) -> windows_core::Result<i32>;
    fn SetMixerBitmapOpacity(&self, opacity: i32) -> windows_core::Result<()>;
    fn SetupMixerBitmap(&self, mixerpicturedisp: Option<&super::super::super::System::Ole::IPictureDisp>, opacity: i32, rdest: Option<&IMSVidRect>) -> windows_core::Result<()>;
    fn SourceSize(&self) -> windows_core::Result<SourceSizeList>;
    fn SetSourceSize(&self, newsize: SourceSizeList) -> windows_core::Result<()>;
    fn OverScan(&self) -> windows_core::Result<i32>;
    fn SetOverScan(&self, lpercent: i32) -> windows_core::Result<()>;
    fn AvailableSourceRect(&self) -> windows_core::Result<IMSVidRect>;
    fn MaxVidRect(&self) -> windows_core::Result<IMSVidRect>;
    fn MinVidRect(&self) -> windows_core::Result<IMSVidRect>;
    fn ClippedSourceRect(&self) -> windows_core::Result<IMSVidRect>;
    fn SetClippedSourceRect(&self, prect: Option<&IMSVidRect>) -> windows_core::Result<()>;
    fn UsingOverlay(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetUsingOverlay(&self, useoverlayval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Capture(&self) -> windows_core::Result<super::super::super::System::Ole::IPictureDisp>;
    fn FramesPerSecond(&self) -> windows_core::Result<i32>;
    fn DecimateInput(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetDecimateInput(&self, pdeci: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidVideoRenderer {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRenderer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVideoRenderer_Vtbl
    where
        Identity: IMSVidVideoRenderer_Impl,
    {
        unsafe extern "system" fn CustomCompositorClass<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compositorclsid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::CustomCompositorClass(this) {
                Ok(ok__) => {
                    compositorclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCustomCompositorClass<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compositorclsid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetCustomCompositorClass(this, core::mem::transmute(&compositorclsid)).into()
        }
        unsafe extern "system" fn _CustomCompositorClass<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compositorclsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::_CustomCompositorClass(this) {
                Ok(ok__) => {
                    compositorclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_CustomCompositorClass<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compositorclsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::Set_CustomCompositorClass(this, core::mem::transmute_copy(&compositorclsid)).into()
        }
        unsafe extern "system" fn _CustomCompositor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compositor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::_CustomCompositor(this) {
                Ok(ok__) => {
                    compositor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_CustomCompositor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, compositor: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::Set_CustomCompositor(this, windows_core::from_raw_borrowed(&compositor)).into()
        }
        unsafe extern "system" fn MixerBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mixerpicturedisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::MixerBitmap(this) {
                Ok(ok__) => {
                    mixerpicturedisp.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _MixerBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mixerpicture: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::_MixerBitmap(this) {
                Ok(ok__) => {
                    mixerpicture.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixerBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mixerpicturedisp: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetMixerBitmap(this, windows_core::from_raw_borrowed(&mixerpicturedisp)).into()
        }
        unsafe extern "system" fn Set_MixerBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mixerpicture: *const super::VMRALPHABITMAP) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::Set_MixerBitmap(this, core::mem::transmute_copy(&mixerpicture)).into()
        }
        unsafe extern "system" fn MixerBitmapPositionRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::MixerBitmapPositionRect(this) {
                Ok(ok__) => {
                    rdest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixerBitmapPositionRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rdest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetMixerBitmapPositionRect(this, windows_core::from_raw_borrowed(&rdest)).into()
        }
        unsafe extern "system" fn MixerBitmapOpacity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, opacity: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::MixerBitmapOpacity(this) {
                Ok(ok__) => {
                    opacity.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixerBitmapOpacity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, opacity: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetMixerBitmapOpacity(this, core::mem::transmute_copy(&opacity)).into()
        }
        unsafe extern "system" fn SetupMixerBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mixerpicturedisp: *mut core::ffi::c_void, opacity: i32, rdest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetupMixerBitmap(this, windows_core::from_raw_borrowed(&mixerpicturedisp), core::mem::transmute_copy(&opacity), windows_core::from_raw_borrowed(&rdest)).into()
        }
        unsafe extern "system" fn SourceSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentsize: *mut SourceSizeList) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::SourceSize(this) {
                Ok(ok__) => {
                    currentsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newsize: SourceSizeList) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetSourceSize(this, core::mem::transmute_copy(&newsize)).into()
        }
        unsafe extern "system" fn OverScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plpercent: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::OverScan(this) {
                Ok(ok__) => {
                    plpercent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOverScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpercent: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetOverScan(this, core::mem::transmute_copy(&lpercent)).into()
        }
        unsafe extern "system" fn AvailableSourceRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prect: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::AvailableSourceRect(this) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MaxVidRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppvidrect: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::MaxVidRect(this) {
                Ok(ok__) => {
                    ppvidrect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MinVidRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppvidrect: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::MinVidRect(this) {
                Ok(ok__) => {
                    ppvidrect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ClippedSourceRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prect: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::ClippedSourceRect(this) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetClippedSourceRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prect: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetClippedSourceRect(this, windows_core::from_raw_borrowed(&prect)).into()
        }
        unsafe extern "system" fn UsingOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, useoverlayval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::UsingOverlay(this) {
                Ok(ok__) => {
                    useoverlayval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUsingOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, useoverlayval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetUsingOverlay(this, core::mem::transmute_copy(&useoverlayval)).into()
        }
        unsafe extern "system" fn Capture<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentimage: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::Capture(this) {
                Ok(ok__) => {
                    currentimage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FramesPerSecond<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::FramesPerSecond(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DecimateInput<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdeci: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer_Impl::DecimateInput(this) {
                Ok(ok__) => {
                    pdeci.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecimateInput<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdeci: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer_Impl::SetDecimateInput(this, core::mem::transmute_copy(&pdeci)).into()
        }
        Self {
            base__: IMSVidOutputDevice_Vtbl::new::<Identity, OFFSET>(),
            CustomCompositorClass: CustomCompositorClass::<Identity, OFFSET>,
            SetCustomCompositorClass: SetCustomCompositorClass::<Identity, OFFSET>,
            _CustomCompositorClass: _CustomCompositorClass::<Identity, OFFSET>,
            Set_CustomCompositorClass: Set_CustomCompositorClass::<Identity, OFFSET>,
            _CustomCompositor: _CustomCompositor::<Identity, OFFSET>,
            Set_CustomCompositor: Set_CustomCompositor::<Identity, OFFSET>,
            MixerBitmap: MixerBitmap::<Identity, OFFSET>,
            _MixerBitmap: _MixerBitmap::<Identity, OFFSET>,
            SetMixerBitmap: SetMixerBitmap::<Identity, OFFSET>,
            Set_MixerBitmap: Set_MixerBitmap::<Identity, OFFSET>,
            MixerBitmapPositionRect: MixerBitmapPositionRect::<Identity, OFFSET>,
            SetMixerBitmapPositionRect: SetMixerBitmapPositionRect::<Identity, OFFSET>,
            MixerBitmapOpacity: MixerBitmapOpacity::<Identity, OFFSET>,
            SetMixerBitmapOpacity: SetMixerBitmapOpacity::<Identity, OFFSET>,
            SetupMixerBitmap: SetupMixerBitmap::<Identity, OFFSET>,
            SourceSize: SourceSize::<Identity, OFFSET>,
            SetSourceSize: SetSourceSize::<Identity, OFFSET>,
            OverScan: OverScan::<Identity, OFFSET>,
            SetOverScan: SetOverScan::<Identity, OFFSET>,
            AvailableSourceRect: AvailableSourceRect::<Identity, OFFSET>,
            MaxVidRect: MaxVidRect::<Identity, OFFSET>,
            MinVidRect: MinVidRect::<Identity, OFFSET>,
            ClippedSourceRect: ClippedSourceRect::<Identity, OFFSET>,
            SetClippedSourceRect: SetClippedSourceRect::<Identity, OFFSET>,
            UsingOverlay: UsingOverlay::<Identity, OFFSET>,
            SetUsingOverlay: SetUsingOverlay::<Identity, OFFSET>,
            Capture: Capture::<Identity, OFFSET>,
            FramesPerSecond: FramesPerSecond::<Identity, OFFSET>,
            DecimateInput: DecimateInput::<Identity, OFFSET>,
            SetDecimateInput: SetDecimateInput::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVideoRenderer as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRenderer2_Impl: Sized + IMSVidVideoRenderer_Impl {
    fn Allocator(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn _Allocator(&self) -> windows_core::Result<super::IVMRSurfaceAllocator>;
    fn Allocator_ID(&self) -> windows_core::Result<i32>;
    fn SetAllocator(&self, allocpresent: Option<&windows_core::IUnknown>, id: i32) -> windows_core::Result<()>;
    fn _SetAllocator2(&self, allocpresent: Option<&super::IVMRSurfaceAllocator>, id: i32) -> windows_core::Result<()>;
    fn SetSuppressEffects(&self, bsuppress: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SuppressEffects(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidVideoRenderer2 {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRenderer2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVideoRenderer2_Vtbl
    where
        Identity: IMSVidVideoRenderer2_Impl,
    {
        unsafe extern "system" fn Allocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, allocpresent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer2_Impl::Allocator(this) {
                Ok(ok__) => {
                    allocpresent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _Allocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, allocpresent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer2_Impl::_Allocator(this) {
                Ok(ok__) => {
                    allocpresent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Allocator_ID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer2_Impl::Allocator_ID(this) {
                Ok(ok__) => {
                    id.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, allocpresent: *mut core::ffi::c_void, id: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer2_Impl::SetAllocator(this, windows_core::from_raw_borrowed(&allocpresent), core::mem::transmute_copy(&id)).into()
        }
        unsafe extern "system" fn _SetAllocator2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, allocpresent: *mut core::ffi::c_void, id: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer2_Impl::_SetAllocator2(this, windows_core::from_raw_borrowed(&allocpresent), core::mem::transmute_copy(&id)).into()
        }
        unsafe extern "system" fn SetSuppressEffects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsuppress: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRenderer2_Impl::SetSuppressEffects(this, core::mem::transmute_copy(&bsuppress)).into()
        }
        unsafe extern "system" fn SuppressEffects<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsuppress: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRenderer2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRenderer2_Impl::SuppressEffects(this) {
                Ok(ok__) => {
                    bsuppress.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMSVidVideoRenderer_Vtbl::new::<Identity, OFFSET>(),
            Allocator: Allocator::<Identity, OFFSET>,
            _Allocator: _Allocator::<Identity, OFFSET>,
            Allocator_ID: Allocator_ID::<Identity, OFFSET>,
            SetAllocator: SetAllocator::<Identity, OFFSET>,
            _SetAllocator2: _SetAllocator2::<Identity, OFFSET>,
            SetSuppressEffects: SetSuppressEffects::<Identity, OFFSET>,
            SuppressEffects: SuppressEffects::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVideoRenderer2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidOutputDevice as windows_core::Interface>::IID || iid == &<IMSVidVideoRenderer as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IMSVidVideoRendererDevices_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, v: &windows_core::VARIANT) -> windows_core::Result<IMSVidVideoRenderer>;
    fn Add(&self, pdb: Option<&IMSVidVideoRenderer>) -> windows_core::Result<()>;
    fn Remove(&self, v: &windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IMSVidVideoRendererDevices {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IMSVidVideoRendererDevices_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVideoRendererDevices_Vtbl
    where
        Identity: IMSVidVideoRendererDevices_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRendererDevices_Impl::Count(this) {
                Ok(ok__) => {
                    lcount.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, pd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRendererDevices_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    pd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>, pdb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidVideoRendererDevices_Impl::get_Item(this, core::mem::transmute(&v)) {
                Ok(ok__) => {
                    pdb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRendererDevices_Impl::Add(this, windows_core::from_raw_borrowed(&pdb)).into()
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, v: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererDevices_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRendererDevices_Impl::Remove(this, core::mem::transmute(&v)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVideoRendererDevices as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidVideoRendererEvent_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn OverlayUnavailable(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidVideoRendererEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRendererEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVideoRendererEvent_Vtbl
    where
        Identity: IMSVidVideoRendererEvent_Impl,
    {
        unsafe extern "system" fn OverlayUnavailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRendererEvent_Impl::OverlayUnavailable(this).into()
        }
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, OFFSET>(), OverlayUnavailable: OverlayUnavailable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVideoRendererEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidVideoRendererEvent2_Impl: Sized + IMSVidOutputDeviceEvent_Impl {
    fn OverlayUnavailable(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidVideoRendererEvent2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidVideoRendererEvent2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidVideoRendererEvent2_Vtbl
    where
        Identity: IMSVidVideoRendererEvent2_Impl,
    {
        unsafe extern "system" fn OverlayUnavailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidVideoRendererEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidVideoRendererEvent2_Impl::OverlayUnavailable(this).into()
        }
        Self { base__: IMSVidOutputDeviceEvent_Vtbl::new::<Identity, OFFSET>(), OverlayUnavailable: OverlayUnavailable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidVideoRendererEvent2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidOutputDeviceEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidWebDVD_Impl: Sized + IMSVidPlayback_Impl {
    fn OnDVDEvent(&self, levent: i32, lparam1: isize, lparam2: isize) -> windows_core::Result<()>;
    fn PlayTitle(&self, ltitle: i32) -> windows_core::Result<()>;
    fn PlayChapterInTitle(&self, ltitle: i32, lchapter: i32) -> windows_core::Result<()>;
    fn PlayChapter(&self, lchapter: i32) -> windows_core::Result<()>;
    fn PlayChaptersAutoStop(&self, ltitle: i32, lstrchapter: i32, lchaptercount: i32) -> windows_core::Result<()>;
    fn PlayAtTime(&self, strtime: &windows_core::BSTR) -> windows_core::Result<()>;
    fn PlayAtTimeInTitle(&self, ltitle: i32, strtime: &windows_core::BSTR) -> windows_core::Result<()>;
    fn PlayPeriodInTitleAutoStop(&self, ltitle: i32, strstarttime: &windows_core::BSTR, strendtime: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ReplayChapter(&self) -> windows_core::Result<()>;
    fn PlayPrevChapter(&self) -> windows_core::Result<()>;
    fn PlayNextChapter(&self) -> windows_core::Result<()>;
    fn StillOff(&self) -> windows_core::Result<()>;
    fn get_AudioLanguage(&self, lstream: i32, fformat: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<windows_core::BSTR>;
    fn ShowMenu(&self, menuid: DVDMenuIDConstants) -> windows_core::Result<()>;
    fn Resume(&self) -> windows_core::Result<()>;
    fn ReturnFromSubmenu(&self) -> windows_core::Result<()>;
    fn ButtonsAvailable(&self) -> windows_core::Result<i32>;
    fn CurrentButton(&self) -> windows_core::Result<i32>;
    fn SelectAndActivateButton(&self, lbutton: i32) -> windows_core::Result<()>;
    fn ActivateButton(&self) -> windows_core::Result<()>;
    fn SelectRightButton(&self) -> windows_core::Result<()>;
    fn SelectLeftButton(&self) -> windows_core::Result<()>;
    fn SelectLowerButton(&self) -> windows_core::Result<()>;
    fn SelectUpperButton(&self) -> windows_core::Result<()>;
    fn ActivateAtPosition(&self, xpos: i32, ypos: i32) -> windows_core::Result<()>;
    fn SelectAtPosition(&self, xpos: i32, ypos: i32) -> windows_core::Result<()>;
    fn get_ButtonAtPosition(&self, xpos: i32, ypos: i32) -> windows_core::Result<i32>;
    fn get_NumberOfChapters(&self, ltitle: i32) -> windows_core::Result<i32>;
    fn TotalTitleTime(&self) -> windows_core::Result<windows_core::BSTR>;
    fn TitlesAvailable(&self) -> windows_core::Result<i32>;
    fn VolumesAvailable(&self) -> windows_core::Result<i32>;
    fn CurrentVolume(&self) -> windows_core::Result<i32>;
    fn CurrentDiscSide(&self) -> windows_core::Result<i32>;
    fn CurrentDomain(&self) -> windows_core::Result<i32>;
    fn CurrentChapter(&self) -> windows_core::Result<i32>;
    fn CurrentTitle(&self) -> windows_core::Result<i32>;
    fn CurrentTime(&self) -> windows_core::Result<windows_core::BSTR>;
    fn DVDTimeCode2bstr(&self, timecode: i32) -> windows_core::Result<windows_core::BSTR>;
    fn DVDDirectory(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetDVDDirectory(&self, newval: &windows_core::BSTR) -> windows_core::Result<()>;
    fn IsSubpictureStreamEnabled(&self, lstream: i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn IsAudioStreamEnabled(&self, lstream: i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn CurrentSubpictureStream(&self) -> windows_core::Result<i32>;
    fn SetCurrentSubpictureStream(&self, newval: i32) -> windows_core::Result<()>;
    fn get_SubpictureLanguage(&self, lstream: i32) -> windows_core::Result<windows_core::BSTR>;
    fn CurrentAudioStream(&self) -> windows_core::Result<i32>;
    fn SetCurrentAudioStream(&self, newval: i32) -> windows_core::Result<()>;
    fn AudioStreamsAvailable(&self) -> windows_core::Result<i32>;
    fn AnglesAvailable(&self) -> windows_core::Result<i32>;
    fn CurrentAngle(&self) -> windows_core::Result<i32>;
    fn SetCurrentAngle(&self, newval: i32) -> windows_core::Result<()>;
    fn SubpictureStreamsAvailable(&self) -> windows_core::Result<i32>;
    fn SubpictureOn(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetSubpictureOn(&self, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn DVDUniqueID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn AcceptParentalLevelChange(&self, faccept: super::super::super::Foundation::VARIANT_BOOL, strusername: &windows_core::BSTR, strpassword: &windows_core::BSTR) -> windows_core::Result<()>;
    fn NotifyParentalLevelChange(&self, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SelectParentalCountry(&self, lcountry: i32, strusername: &windows_core::BSTR, strpassword: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SelectParentalLevel(&self, lparentallevel: i32, strusername: &windows_core::BSTR, strpassword: &windows_core::BSTR) -> windows_core::Result<()>;
    fn get_TitleParentalLevels(&self, ltitle: i32) -> windows_core::Result<i32>;
    fn PlayerParentalCountry(&self) -> windows_core::Result<i32>;
    fn PlayerParentalLevel(&self) -> windows_core::Result<i32>;
    fn Eject(&self) -> windows_core::Result<()>;
    fn UOPValid(&self, luop: i32) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn get_SPRM(&self, lindex: i32) -> windows_core::Result<i16>;
    fn get_GPRM(&self, lindex: i32) -> windows_core::Result<i16>;
    fn put_GPRM(&self, lindex: i32, svalue: i16) -> windows_core::Result<()>;
    fn get_DVDTextStringType(&self, llangindex: i32, lstringindex: i32) -> windows_core::Result<DVDTextStringType>;
    fn get_DVDTextString(&self, llangindex: i32, lstringindex: i32) -> windows_core::Result<windows_core::BSTR>;
    fn get_DVDTextNumberOfStrings(&self, llangindex: i32) -> windows_core::Result<i32>;
    fn DVDTextNumberOfLanguages(&self) -> windows_core::Result<i32>;
    fn get_DVDTextLanguageLCID(&self, llangindex: i32) -> windows_core::Result<i32>;
    fn RegionChange(&self) -> windows_core::Result<()>;
    fn DVDAdm(&self) -> windows_core::Result<super::super::super::System::Com::IDispatch>;
    fn DeleteBookmark(&self) -> windows_core::Result<()>;
    fn RestoreBookmark(&self) -> windows_core::Result<()>;
    fn SaveBookmark(&self) -> windows_core::Result<()>;
    fn SelectDefaultAudioLanguage(&self, lang: i32, ext: i32) -> windows_core::Result<()>;
    fn SelectDefaultSubpictureLanguage(&self, lang: i32, ext: DVDSPExt) -> windows_core::Result<()>;
    fn PreferredSubpictureStream(&self) -> windows_core::Result<i32>;
    fn DefaultMenuLanguage(&self) -> windows_core::Result<i32>;
    fn SetDefaultMenuLanguage(&self, lang: i32) -> windows_core::Result<()>;
    fn DefaultSubpictureLanguage(&self) -> windows_core::Result<i32>;
    fn DefaultAudioLanguage(&self) -> windows_core::Result<i32>;
    fn DefaultSubpictureLanguageExt(&self) -> windows_core::Result<DVDSPExt>;
    fn DefaultAudioLanguageExt(&self) -> windows_core::Result<i32>;
    fn get_LanguageFromLCID(&self, lcid: i32) -> windows_core::Result<windows_core::BSTR>;
    fn KaraokeAudioPresentationMode(&self) -> windows_core::Result<i32>;
    fn SetKaraokeAudioPresentationMode(&self, newval: i32) -> windows_core::Result<()>;
    fn get_KaraokeChannelContent(&self, lstream: i32, lchan: i32) -> windows_core::Result<i32>;
    fn get_KaraokeChannelAssignment(&self, lstream: i32) -> windows_core::Result<i32>;
    fn RestorePreferredSettings(&self) -> windows_core::Result<()>;
    fn get_ButtonRect(&self, lbutton: i32) -> windows_core::Result<IMSVidRect>;
    fn DVDScreenInMouseCoordinates(&self) -> windows_core::Result<IMSVidRect>;
    fn SetDVDScreenInMouseCoordinates(&self, prect: Option<&IMSVidRect>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidWebDVD {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVD_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidWebDVD_Vtbl
    where
        Identity: IMSVidWebDVD_Impl,
    {
        unsafe extern "system" fn OnDVDEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, levent: i32, lparam1: isize, lparam2: isize) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::OnDVDEvent(this, core::mem::transmute_copy(&levent), core::mem::transmute_copy(&lparam1), core::mem::transmute_copy(&lparam2)).into()
        }
        unsafe extern "system" fn PlayTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayTitle(this, core::mem::transmute_copy(&ltitle)).into()
        }
        unsafe extern "system" fn PlayChapterInTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32, lchapter: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayChapterInTitle(this, core::mem::transmute_copy(&ltitle), core::mem::transmute_copy(&lchapter)).into()
        }
        unsafe extern "system" fn PlayChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lchapter: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayChapter(this, core::mem::transmute_copy(&lchapter)).into()
        }
        unsafe extern "system" fn PlayChaptersAutoStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32, lstrchapter: i32, lchaptercount: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayChaptersAutoStop(this, core::mem::transmute_copy(&ltitle), core::mem::transmute_copy(&lstrchapter), core::mem::transmute_copy(&lchaptercount)).into()
        }
        unsafe extern "system" fn PlayAtTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strtime: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayAtTime(this, core::mem::transmute(&strtime)).into()
        }
        unsafe extern "system" fn PlayAtTimeInTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32, strtime: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayAtTimeInTitle(this, core::mem::transmute_copy(&ltitle), core::mem::transmute(&strtime)).into()
        }
        unsafe extern "system" fn PlayPeriodInTitleAutoStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32, strstarttime: core::mem::MaybeUninit<windows_core::BSTR>, strendtime: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayPeriodInTitleAutoStop(this, core::mem::transmute_copy(&ltitle), core::mem::transmute(&strstarttime), core::mem::transmute(&strendtime)).into()
        }
        unsafe extern "system" fn ReplayChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::ReplayChapter(this).into()
        }
        unsafe extern "system" fn PlayPrevChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayPrevChapter(this).into()
        }
        unsafe extern "system" fn PlayNextChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::PlayNextChapter(this).into()
        }
        unsafe extern "system" fn StillOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::StillOff(this).into()
        }
        unsafe extern "system" fn get_AudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstream: i32, fformat: super::super::super::Foundation::VARIANT_BOOL, straudiolang: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_AudioLanguage(this, core::mem::transmute_copy(&lstream), core::mem::transmute_copy(&fformat)) {
                Ok(ok__) => {
                    straudiolang.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ShowMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, menuid: DVDMenuIDConstants) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::ShowMenu(this, core::mem::transmute_copy(&menuid)).into()
        }
        unsafe extern "system" fn Resume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::Resume(this).into()
        }
        unsafe extern "system" fn ReturnFromSubmenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::ReturnFromSubmenu(this).into()
        }
        unsafe extern "system" fn ButtonsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::ButtonsAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentButton(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectAndActivateButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lbutton: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectAndActivateButton(this, core::mem::transmute_copy(&lbutton)).into()
        }
        unsafe extern "system" fn ActivateButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::ActivateButton(this).into()
        }
        unsafe extern "system" fn SelectRightButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectRightButton(this).into()
        }
        unsafe extern "system" fn SelectLeftButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectLeftButton(this).into()
        }
        unsafe extern "system" fn SelectLowerButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectLowerButton(this).into()
        }
        unsafe extern "system" fn SelectUpperButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectUpperButton(this).into()
        }
        unsafe extern "system" fn ActivateAtPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, xpos: i32, ypos: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::ActivateAtPosition(this, core::mem::transmute_copy(&xpos), core::mem::transmute_copy(&ypos)).into()
        }
        unsafe extern "system" fn SelectAtPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, xpos: i32, ypos: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectAtPosition(this, core::mem::transmute_copy(&xpos), core::mem::transmute_copy(&ypos)).into()
        }
        unsafe extern "system" fn get_ButtonAtPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, xpos: i32, ypos: i32, plbutton: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_ButtonAtPosition(this, core::mem::transmute_copy(&xpos), core::mem::transmute_copy(&ypos)) {
                Ok(ok__) => {
                    plbutton.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_NumberOfChapters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_NumberOfChapters(this, core::mem::transmute_copy(&ltitle)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TotalTitleTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::TotalTitleTime(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TitlesAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::TitlesAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VolumesAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::VolumesAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentVolume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentVolume(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentDiscSide<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentDiscSide(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentDomain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentDomain(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentChapter(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentTitle(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentTime(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDTimeCode2bstr<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, timecode: i32, ptimestr: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DVDTimeCode2bstr(this, core::mem::transmute_copy(&timecode)) {
                Ok(ok__) => {
                    ptimestr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DVDDirectory(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDVDDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetDVDDirectory(this, core::mem::transmute(&newval)).into()
        }
        unsafe extern "system" fn IsSubpictureStreamEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstream: i32, fenabled: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::IsSubpictureStreamEnabled(this, core::mem::transmute_copy(&lstream)) {
                Ok(ok__) => {
                    fenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsAudioStreamEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstream: i32, fenabled: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::IsAudioStreamEnabled(this, core::mem::transmute_copy(&lstream)) {
                Ok(ok__) => {
                    fenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentSubpictureStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentSubpictureStream(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentSubpictureStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetCurrentSubpictureStream(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn get_SubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstream: i32, strlanguage: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_SubpictureLanguage(this, core::mem::transmute_copy(&lstream)) {
                Ok(ok__) => {
                    strlanguage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentAudioStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentAudioStream(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentAudioStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetCurrentAudioStream(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn AudioStreamsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::AudioStreamsAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AnglesAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::AnglesAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CurrentAngle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::CurrentAngle(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCurrentAngle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetCurrentAngle(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn SubpictureStreamsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::SubpictureStreamsAvailable(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SubpictureOn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::SubpictureOn(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSubpictureOn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetSubpictureOn(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn DVDUniqueID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DVDUniqueID(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AcceptParentalLevelChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, faccept: super::super::super::Foundation::VARIANT_BOOL, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strpassword: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::AcceptParentalLevelChange(this, core::mem::transmute_copy(&faccept), core::mem::transmute(&strusername), core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn NotifyParentalLevelChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::NotifyParentalLevelChange(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn SelectParentalCountry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcountry: i32, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strpassword: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectParentalCountry(this, core::mem::transmute_copy(&lcountry), core::mem::transmute(&strusername), core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn SelectParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lparentallevel: i32, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strpassword: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectParentalLevel(this, core::mem::transmute_copy(&lparentallevel), core::mem::transmute(&strusername), core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn get_TitleParentalLevels<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ltitle: i32, plparentallevels: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_TitleParentalLevels(this, core::mem::transmute_copy(&ltitle)) {
                Ok(ok__) => {
                    plparentallevels.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayerParentalCountry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcountrycode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::PlayerParentalCountry(this) {
                Ok(ok__) => {
                    plcountrycode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayerParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plparentallevel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::PlayerParentalLevel(this) {
                Ok(ok__) => {
                    plparentallevel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Eject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::Eject(this).into()
        }
        unsafe extern "system" fn UOPValid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, luop: i32, pfvalid: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::UOPValid(this, core::mem::transmute_copy(&luop)) {
                Ok(ok__) => {
                    pfvalid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_SPRM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, pssprm: *mut i16) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_SPRM(this, core::mem::transmute_copy(&lindex)) {
                Ok(ok__) => {
                    pssprm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_GPRM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, pssprm: *mut i16) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_GPRM(this, core::mem::transmute_copy(&lindex)) {
                Ok(ok__) => {
                    pssprm.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_GPRM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, svalue: i16) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::put_GPRM(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&svalue)).into()
        }
        unsafe extern "system" fn get_DVDTextStringType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llangindex: i32, lstringindex: i32, ptype: *mut DVDTextStringType) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_DVDTextStringType(this, core::mem::transmute_copy(&llangindex), core::mem::transmute_copy(&lstringindex)) {
                Ok(ok__) => {
                    ptype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_DVDTextString<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llangindex: i32, lstringindex: i32, pstrtext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_DVDTextString(this, core::mem::transmute_copy(&llangindex), core::mem::transmute_copy(&lstringindex)) {
                Ok(ok__) => {
                    pstrtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_DVDTextNumberOfStrings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llangindex: i32, plnumofstrings: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_DVDTextNumberOfStrings(this, core::mem::transmute_copy(&llangindex)) {
                Ok(ok__) => {
                    plnumofstrings.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDTextNumberOfLanguages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plnumoflangs: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DVDTextNumberOfLanguages(this) {
                Ok(ok__) => {
                    plnumoflangs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_DVDTextLanguageLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llangindex: i32, lcid: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_DVDTextLanguageLCID(this, core::mem::transmute_copy(&llangindex)) {
                Ok(ok__) => {
                    lcid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegionChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::RegionChange(this).into()
        }
        unsafe extern "system" fn DVDAdm<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DVDAdm(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DeleteBookmark<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::DeleteBookmark(this).into()
        }
        unsafe extern "system" fn RestoreBookmark<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::RestoreBookmark(this).into()
        }
        unsafe extern "system" fn SaveBookmark<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SaveBookmark(this).into()
        }
        unsafe extern "system" fn SelectDefaultAudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lang: i32, ext: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectDefaultAudioLanguage(this, core::mem::transmute_copy(&lang), core::mem::transmute_copy(&ext)).into()
        }
        unsafe extern "system" fn SelectDefaultSubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lang: i32, ext: DVDSPExt) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SelectDefaultSubpictureLanguage(this, core::mem::transmute_copy(&lang), core::mem::transmute_copy(&ext)).into()
        }
        unsafe extern "system" fn PreferredSubpictureStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::PreferredSubpictureStream(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultMenuLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lang: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DefaultMenuLanguage(this) {
                Ok(ok__) => {
                    lang.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultMenuLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lang: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetDefaultMenuLanguage(this, core::mem::transmute_copy(&lang)).into()
        }
        unsafe extern "system" fn DefaultSubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lang: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DefaultSubpictureLanguage(this) {
                Ok(ok__) => {
                    lang.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultAudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lang: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DefaultAudioLanguage(this) {
                Ok(ok__) => {
                    lang.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultSubpictureLanguageExt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ext: *mut DVDSPExt) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DefaultSubpictureLanguageExt(this) {
                Ok(ok__) => {
                    ext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultAudioLanguageExt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ext: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DefaultAudioLanguageExt(this) {
                Ok(ok__) => {
                    ext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_LanguageFromLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcid: i32, lang: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_LanguageFromLCID(this, core::mem::transmute_copy(&lcid)) {
                Ok(ok__) => {
                    lang.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn KaraokeAudioPresentationMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::KaraokeAudioPresentationMode(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetKaraokeAudioPresentationMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetKaraokeAudioPresentationMode(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn get_KaraokeChannelContent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstream: i32, lchan: i32, lcontent: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_KaraokeChannelContent(this, core::mem::transmute_copy(&lstream), core::mem::transmute_copy(&lchan)) {
                Ok(ok__) => {
                    lcontent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_KaraokeChannelAssignment<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lstream: i32, lchannelassignment: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_KaraokeChannelAssignment(this, core::mem::transmute_copy(&lstream)) {
                Ok(ok__) => {
                    lchannelassignment.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RestorePreferredSettings<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::RestorePreferredSettings(this).into()
        }
        unsafe extern "system" fn get_ButtonRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lbutton: i32, prect: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::get_ButtonRect(this, core::mem::transmute_copy(&lbutton)) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DVDScreenInMouseCoordinates<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprect: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVD_Impl::DVDScreenInMouseCoordinates(this) {
                Ok(ok__) => {
                    pprect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDVDScreenInMouseCoordinates<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prect: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD_Impl::SetDVDScreenInMouseCoordinates(this, windows_core::from_raw_borrowed(&prect)).into()
        }
        Self {
            base__: IMSVidPlayback_Vtbl::new::<Identity, OFFSET>(),
            OnDVDEvent: OnDVDEvent::<Identity, OFFSET>,
            PlayTitle: PlayTitle::<Identity, OFFSET>,
            PlayChapterInTitle: PlayChapterInTitle::<Identity, OFFSET>,
            PlayChapter: PlayChapter::<Identity, OFFSET>,
            PlayChaptersAutoStop: PlayChaptersAutoStop::<Identity, OFFSET>,
            PlayAtTime: PlayAtTime::<Identity, OFFSET>,
            PlayAtTimeInTitle: PlayAtTimeInTitle::<Identity, OFFSET>,
            PlayPeriodInTitleAutoStop: PlayPeriodInTitleAutoStop::<Identity, OFFSET>,
            ReplayChapter: ReplayChapter::<Identity, OFFSET>,
            PlayPrevChapter: PlayPrevChapter::<Identity, OFFSET>,
            PlayNextChapter: PlayNextChapter::<Identity, OFFSET>,
            StillOff: StillOff::<Identity, OFFSET>,
            get_AudioLanguage: get_AudioLanguage::<Identity, OFFSET>,
            ShowMenu: ShowMenu::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            ReturnFromSubmenu: ReturnFromSubmenu::<Identity, OFFSET>,
            ButtonsAvailable: ButtonsAvailable::<Identity, OFFSET>,
            CurrentButton: CurrentButton::<Identity, OFFSET>,
            SelectAndActivateButton: SelectAndActivateButton::<Identity, OFFSET>,
            ActivateButton: ActivateButton::<Identity, OFFSET>,
            SelectRightButton: SelectRightButton::<Identity, OFFSET>,
            SelectLeftButton: SelectLeftButton::<Identity, OFFSET>,
            SelectLowerButton: SelectLowerButton::<Identity, OFFSET>,
            SelectUpperButton: SelectUpperButton::<Identity, OFFSET>,
            ActivateAtPosition: ActivateAtPosition::<Identity, OFFSET>,
            SelectAtPosition: SelectAtPosition::<Identity, OFFSET>,
            get_ButtonAtPosition: get_ButtonAtPosition::<Identity, OFFSET>,
            get_NumberOfChapters: get_NumberOfChapters::<Identity, OFFSET>,
            TotalTitleTime: TotalTitleTime::<Identity, OFFSET>,
            TitlesAvailable: TitlesAvailable::<Identity, OFFSET>,
            VolumesAvailable: VolumesAvailable::<Identity, OFFSET>,
            CurrentVolume: CurrentVolume::<Identity, OFFSET>,
            CurrentDiscSide: CurrentDiscSide::<Identity, OFFSET>,
            CurrentDomain: CurrentDomain::<Identity, OFFSET>,
            CurrentChapter: CurrentChapter::<Identity, OFFSET>,
            CurrentTitle: CurrentTitle::<Identity, OFFSET>,
            CurrentTime: CurrentTime::<Identity, OFFSET>,
            DVDTimeCode2bstr: DVDTimeCode2bstr::<Identity, OFFSET>,
            DVDDirectory: DVDDirectory::<Identity, OFFSET>,
            SetDVDDirectory: SetDVDDirectory::<Identity, OFFSET>,
            IsSubpictureStreamEnabled: IsSubpictureStreamEnabled::<Identity, OFFSET>,
            IsAudioStreamEnabled: IsAudioStreamEnabled::<Identity, OFFSET>,
            CurrentSubpictureStream: CurrentSubpictureStream::<Identity, OFFSET>,
            SetCurrentSubpictureStream: SetCurrentSubpictureStream::<Identity, OFFSET>,
            get_SubpictureLanguage: get_SubpictureLanguage::<Identity, OFFSET>,
            CurrentAudioStream: CurrentAudioStream::<Identity, OFFSET>,
            SetCurrentAudioStream: SetCurrentAudioStream::<Identity, OFFSET>,
            AudioStreamsAvailable: AudioStreamsAvailable::<Identity, OFFSET>,
            AnglesAvailable: AnglesAvailable::<Identity, OFFSET>,
            CurrentAngle: CurrentAngle::<Identity, OFFSET>,
            SetCurrentAngle: SetCurrentAngle::<Identity, OFFSET>,
            SubpictureStreamsAvailable: SubpictureStreamsAvailable::<Identity, OFFSET>,
            SubpictureOn: SubpictureOn::<Identity, OFFSET>,
            SetSubpictureOn: SetSubpictureOn::<Identity, OFFSET>,
            DVDUniqueID: DVDUniqueID::<Identity, OFFSET>,
            AcceptParentalLevelChange: AcceptParentalLevelChange::<Identity, OFFSET>,
            NotifyParentalLevelChange: NotifyParentalLevelChange::<Identity, OFFSET>,
            SelectParentalCountry: SelectParentalCountry::<Identity, OFFSET>,
            SelectParentalLevel: SelectParentalLevel::<Identity, OFFSET>,
            get_TitleParentalLevels: get_TitleParentalLevels::<Identity, OFFSET>,
            PlayerParentalCountry: PlayerParentalCountry::<Identity, OFFSET>,
            PlayerParentalLevel: PlayerParentalLevel::<Identity, OFFSET>,
            Eject: Eject::<Identity, OFFSET>,
            UOPValid: UOPValid::<Identity, OFFSET>,
            get_SPRM: get_SPRM::<Identity, OFFSET>,
            get_GPRM: get_GPRM::<Identity, OFFSET>,
            put_GPRM: put_GPRM::<Identity, OFFSET>,
            get_DVDTextStringType: get_DVDTextStringType::<Identity, OFFSET>,
            get_DVDTextString: get_DVDTextString::<Identity, OFFSET>,
            get_DVDTextNumberOfStrings: get_DVDTextNumberOfStrings::<Identity, OFFSET>,
            DVDTextNumberOfLanguages: DVDTextNumberOfLanguages::<Identity, OFFSET>,
            get_DVDTextLanguageLCID: get_DVDTextLanguageLCID::<Identity, OFFSET>,
            RegionChange: RegionChange::<Identity, OFFSET>,
            DVDAdm: DVDAdm::<Identity, OFFSET>,
            DeleteBookmark: DeleteBookmark::<Identity, OFFSET>,
            RestoreBookmark: RestoreBookmark::<Identity, OFFSET>,
            SaveBookmark: SaveBookmark::<Identity, OFFSET>,
            SelectDefaultAudioLanguage: SelectDefaultAudioLanguage::<Identity, OFFSET>,
            SelectDefaultSubpictureLanguage: SelectDefaultSubpictureLanguage::<Identity, OFFSET>,
            PreferredSubpictureStream: PreferredSubpictureStream::<Identity, OFFSET>,
            DefaultMenuLanguage: DefaultMenuLanguage::<Identity, OFFSET>,
            SetDefaultMenuLanguage: SetDefaultMenuLanguage::<Identity, OFFSET>,
            DefaultSubpictureLanguage: DefaultSubpictureLanguage::<Identity, OFFSET>,
            DefaultAudioLanguage: DefaultAudioLanguage::<Identity, OFFSET>,
            DefaultSubpictureLanguageExt: DefaultSubpictureLanguageExt::<Identity, OFFSET>,
            DefaultAudioLanguageExt: DefaultAudioLanguageExt::<Identity, OFFSET>,
            get_LanguageFromLCID: get_LanguageFromLCID::<Identity, OFFSET>,
            KaraokeAudioPresentationMode: KaraokeAudioPresentationMode::<Identity, OFFSET>,
            SetKaraokeAudioPresentationMode: SetKaraokeAudioPresentationMode::<Identity, OFFSET>,
            get_KaraokeChannelContent: get_KaraokeChannelContent::<Identity, OFFSET>,
            get_KaraokeChannelAssignment: get_KaraokeChannelAssignment::<Identity, OFFSET>,
            RestorePreferredSettings: RestorePreferredSettings::<Identity, OFFSET>,
            get_ButtonRect: get_ButtonRect::<Identity, OFFSET>,
            DVDScreenInMouseCoordinates: DVDScreenInMouseCoordinates::<Identity, OFFSET>,
            SetDVDScreenInMouseCoordinates: SetDVDScreenInMouseCoordinates::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidWebDVD as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidPlayback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidWebDVD2_Impl: Sized + IMSVidWebDVD_Impl {
    fn get_Bookmark(&self, ppdata: *mut *mut u8, pdatalength: *mut u32) -> windows_core::Result<()>;
    fn put_Bookmark(&self, pdata: *const u8, dwdatalength: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidWebDVD2 {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVD2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidWebDVD2_Vtbl
    where
        Identity: IMSVidWebDVD2_Impl,
    {
        unsafe extern "system" fn get_Bookmark<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdata: *mut *mut u8, pdatalength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD2_Impl::get_Bookmark(this, core::mem::transmute_copy(&ppdata), core::mem::transmute_copy(&pdatalength)).into()
        }
        unsafe extern "system" fn put_Bookmark<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdata: *const u8, dwdatalength: u32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVD2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVD2_Impl::put_Bookmark(this, core::mem::transmute_copy(&pdata), core::mem::transmute_copy(&dwdatalength)).into()
        }
        Self {
            base__: IMSVidWebDVD_Vtbl::new::<Identity, OFFSET>(),
            get_Bookmark: get_Bookmark::<Identity, OFFSET>,
            put_Bookmark: put_Bookmark::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidWebDVD2 as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidInputDevice as windows_core::Interface>::IID || iid == &<IMSVidPlayback as windows_core::Interface>::IID || iid == &<IMSVidWebDVD as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidWebDVDAdm_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn ChangePassword(&self, strusername: &windows_core::BSTR, strold: &windows_core::BSTR, strnew: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SaveParentalLevel(&self, level: i32, strusername: &windows_core::BSTR, strpassword: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SaveParentalCountry(&self, country: i32, strusername: &windows_core::BSTR, strpassword: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ConfirmPassword(&self, strusername: &windows_core::BSTR, strpassword: &windows_core::BSTR) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn GetParentalLevel(&self) -> windows_core::Result<i32>;
    fn GetParentalCountry(&self) -> windows_core::Result<i32>;
    fn DefaultAudioLCID(&self) -> windows_core::Result<i32>;
    fn SetDefaultAudioLCID(&self, newval: i32) -> windows_core::Result<()>;
    fn DefaultSubpictureLCID(&self) -> windows_core::Result<i32>;
    fn SetDefaultSubpictureLCID(&self, newval: i32) -> windows_core::Result<()>;
    fn DefaultMenuLCID(&self) -> windows_core::Result<i32>;
    fn SetDefaultMenuLCID(&self, newval: i32) -> windows_core::Result<()>;
    fn BookmarkOnStop(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
    fn SetBookmarkOnStop(&self, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidWebDVDAdm {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVDAdm_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidWebDVDAdm_Vtbl
    where
        Identity: IMSVidWebDVDAdm_Impl,
    {
        unsafe extern "system" fn ChangePassword<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strold: core::mem::MaybeUninit<windows_core::BSTR>, strnew: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::ChangePassword(this, core::mem::transmute(&strusername), core::mem::transmute(&strold), core::mem::transmute(&strnew)).into()
        }
        unsafe extern "system" fn SaveParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: i32, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strpassword: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::SaveParentalLevel(this, core::mem::transmute_copy(&level), core::mem::transmute(&strusername), core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn SaveParentalCountry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, country: i32, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strpassword: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::SaveParentalCountry(this, core::mem::transmute_copy(&country), core::mem::transmute(&strusername), core::mem::transmute(&strpassword)).into()
        }
        unsafe extern "system" fn ConfirmPassword<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strusername: core::mem::MaybeUninit<windows_core::BSTR>, strpassword: core::mem::MaybeUninit<windows_core::BSTR>, pval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::ConfirmPassword(this, core::mem::transmute(&strusername), core::mem::transmute(&strpassword)) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llevel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::GetParentalLevel(this) {
                Ok(ok__) => {
                    llevel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParentalCountry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcountry: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::GetParentalCountry(this) {
                Ok(ok__) => {
                    lcountry.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultAudioLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::DefaultAudioLCID(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultAudioLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::SetDefaultAudioLCID(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn DefaultSubpictureLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::DefaultSubpictureLCID(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultSubpictureLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::SetDefaultSubpictureLCID(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn DefaultMenuLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::DefaultMenuLCID(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultMenuLCID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: i32) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::SetDefaultMenuLCID(this, core::mem::transmute_copy(&newval)).into()
        }
        unsafe extern "system" fn BookmarkOnStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pval: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidWebDVDAdm_Impl::BookmarkOnStop(this) {
                Ok(ok__) => {
                    pval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBookmarkOnStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newval: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDAdm_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDAdm_Impl::SetBookmarkOnStop(this, core::mem::transmute_copy(&newval)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            ChangePassword: ChangePassword::<Identity, OFFSET>,
            SaveParentalLevel: SaveParentalLevel::<Identity, OFFSET>,
            SaveParentalCountry: SaveParentalCountry::<Identity, OFFSET>,
            ConfirmPassword: ConfirmPassword::<Identity, OFFSET>,
            GetParentalLevel: GetParentalLevel::<Identity, OFFSET>,
            GetParentalCountry: GetParentalCountry::<Identity, OFFSET>,
            DefaultAudioLCID: DefaultAudioLCID::<Identity, OFFSET>,
            SetDefaultAudioLCID: SetDefaultAudioLCID::<Identity, OFFSET>,
            DefaultSubpictureLCID: DefaultSubpictureLCID::<Identity, OFFSET>,
            SetDefaultSubpictureLCID: SetDefaultSubpictureLCID::<Identity, OFFSET>,
            DefaultMenuLCID: DefaultMenuLCID::<Identity, OFFSET>,
            SetDefaultMenuLCID: SetDefaultMenuLCID::<Identity, OFFSET>,
            BookmarkOnStop: BookmarkOnStop::<Identity, OFFSET>,
            SetBookmarkOnStop: SetBookmarkOnStop::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidWebDVDAdm as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidWebDVDEvent_Impl: Sized + IMSVidPlaybackEvent_Impl {
    fn DVDNotify(&self, leventcode: i32, lparam1: &windows_core::VARIANT, lparam2: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn PlayForwards(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayBackwards(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ShowMenu(&self, menuid: DVDMenuIDConstants, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Resume(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SelectOrActivateButton(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn StillOff(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PauseOn(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ChangeCurrentAudioStream(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ChangeCurrentSubpictureStream(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ChangeCurrentAngle(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayAtTimeInTitle(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayAtTime(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayChapterInTitle(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayChapter(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ReplayChapter(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayNextChapter(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Stop(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ReturnFromSubmenu(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayTitle(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn PlayPrevChapter(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ChangeKaraokePresMode(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ChangeVideoPresMode(&self, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidWebDVDEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidWebDVDEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidWebDVDEvent_Vtbl
    where
        Identity: IMSVidWebDVDEvent_Impl,
    {
        unsafe extern "system" fn DVDNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, leventcode: i32, lparam1: core::mem::MaybeUninit<windows_core::VARIANT>, lparam2: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::DVDNotify(this, core::mem::transmute_copy(&leventcode), core::mem::transmute(&lparam1), core::mem::transmute(&lparam2)).into()
        }
        unsafe extern "system" fn PlayForwards<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayForwards(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayBackwards<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayBackwards(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ShowMenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, menuid: DVDMenuIDConstants, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ShowMenu(this, core::mem::transmute_copy(&menuid), core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn Resume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::Resume(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn SelectOrActivateButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::SelectOrActivateButton(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn StillOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::StillOff(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PauseOn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PauseOn(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeCurrentAudioStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ChangeCurrentAudioStream(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeCurrentSubpictureStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ChangeCurrentSubpictureStream(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeCurrentAngle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ChangeCurrentAngle(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayAtTimeInTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayAtTimeInTitle(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayAtTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayAtTime(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayChapterInTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayChapterInTitle(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayChapter(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ReplayChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ReplayChapter(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayNextChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayNextChapter(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::Stop(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ReturnFromSubmenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ReturnFromSubmenu(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayTitle(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn PlayPrevChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::PlayPrevChapter(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeKaraokePresMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ChangeKaraokePresMode(this, core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn ChangeVideoPresMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benabled: super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IMSVidWebDVDEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidWebDVDEvent_Impl::ChangeVideoPresMode(this, core::mem::transmute_copy(&benabled)).into()
        }
        Self {
            base__: IMSVidPlaybackEvent_Vtbl::new::<Identity, OFFSET>(),
            DVDNotify: DVDNotify::<Identity, OFFSET>,
            PlayForwards: PlayForwards::<Identity, OFFSET>,
            PlayBackwards: PlayBackwards::<Identity, OFFSET>,
            ShowMenu: ShowMenu::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            SelectOrActivateButton: SelectOrActivateButton::<Identity, OFFSET>,
            StillOff: StillOff::<Identity, OFFSET>,
            PauseOn: PauseOn::<Identity, OFFSET>,
            ChangeCurrentAudioStream: ChangeCurrentAudioStream::<Identity, OFFSET>,
            ChangeCurrentSubpictureStream: ChangeCurrentSubpictureStream::<Identity, OFFSET>,
            ChangeCurrentAngle: ChangeCurrentAngle::<Identity, OFFSET>,
            PlayAtTimeInTitle: PlayAtTimeInTitle::<Identity, OFFSET>,
            PlayAtTime: PlayAtTime::<Identity, OFFSET>,
            PlayChapterInTitle: PlayChapterInTitle::<Identity, OFFSET>,
            PlayChapter: PlayChapter::<Identity, OFFSET>,
            ReplayChapter: ReplayChapter::<Identity, OFFSET>,
            PlayNextChapter: PlayNextChapter::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            ReturnFromSubmenu: ReturnFromSubmenu::<Identity, OFFSET>,
            PlayTitle: PlayTitle::<Identity, OFFSET>,
            PlayPrevChapter: PlayPrevChapter::<Identity, OFFSET>,
            ChangeKaraokePresMode: ChangeKaraokePresMode::<Identity, OFFSET>,
            ChangeVideoPresMode: ChangeVideoPresMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidWebDVDEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidInputDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidPlaybackEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidXDS_Impl: Sized + IMSVidFeature_Impl {
    fn ChannelChangeInterface(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidXDS {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidXDS_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidXDS_Vtbl
    where
        Identity: IMSVidXDS_Impl,
    {
        unsafe extern "system" fn ChannelChangeInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkcc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMSVidXDS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMSVidXDS_Impl::ChannelChangeInterface(this) {
                Ok(ok__) => {
                    punkcc.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IMSVidFeature_Vtbl::new::<Identity, OFFSET>(), ChannelChangeInterface: ChannelChangeInterface::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidXDS as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDevice as windows_core::Interface>::IID || iid == &<IMSVidFeature as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMSVidXDSEvent_Impl: Sized + IMSVidFeatureEvent_Impl {
    fn RatingChange(&self, prevratingsystem: EnTvRat_System, prevlevel: EnTvRat_GenericLevel, prevattributes: BfEnTvRat_GenericAttributes, newratingsystem: EnTvRat_System, newlevel: EnTvRat_GenericLevel, newattributes: BfEnTvRat_GenericAttributes) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMSVidXDSEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMSVidXDSEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMSVidXDSEvent_Vtbl
    where
        Identity: IMSVidXDSEvent_Impl,
    {
        unsafe extern "system" fn RatingChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prevratingsystem: EnTvRat_System, prevlevel: EnTvRat_GenericLevel, prevattributes: BfEnTvRat_GenericAttributes, newratingsystem: EnTvRat_System, newlevel: EnTvRat_GenericLevel, newattributes: BfEnTvRat_GenericAttributes) -> windows_core::HRESULT
        where
            Identity: IMSVidXDSEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMSVidXDSEvent_Impl::RatingChange(this, core::mem::transmute_copy(&prevratingsystem), core::mem::transmute_copy(&prevlevel), core::mem::transmute_copy(&prevattributes), core::mem::transmute_copy(&newratingsystem), core::mem::transmute_copy(&newlevel), core::mem::transmute_copy(&newattributes)).into()
        }
        Self { base__: IMSVidFeatureEvent_Vtbl::new::<Identity, OFFSET>(), RatingChange: RatingChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMSVidXDSEvent as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMSVidDeviceEvent as windows_core::Interface>::IID || iid == &<IMSVidFeatureEvent as windows_core::Interface>::IID
    }
}
pub trait IMceBurnerControl_Impl: Sized {
    fn GetBurnerNoDecryption(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMceBurnerControl {}
impl IMceBurnerControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMceBurnerControl_Vtbl
    where
        Identity: IMceBurnerControl_Impl,
    {
        unsafe extern "system" fn GetBurnerNoDecryption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMceBurnerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMceBurnerControl_Impl::GetBurnerNoDecryption(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetBurnerNoDecryption: GetBurnerNoDecryption::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMceBurnerControl as windows_core::Interface>::IID
    }
}
pub trait IMpeg2Data_Impl: Sized {
    fn GetSection(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32) -> windows_core::Result<ISectionList>;
    fn GetTable(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32) -> windows_core::Result<ISectionList>;
    fn GetStreamOfSections(&self, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::super::Foundation::HANDLE) -> windows_core::Result<IMpeg2Stream>;
}
impl windows_core::RuntimeName for IMpeg2Data {}
impl IMpeg2Data_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMpeg2Data_Vtbl
    where
        Identity: IMpeg2Data_Impl,
    {
        unsafe extern "system" fn GetSection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32, ppsectionlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMpeg2Data_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpeg2Data_Impl::GetSection(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&tid), core::mem::transmute_copy(&pfilter), core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppsectionlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, dwtimeout: u32, ppsectionlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMpeg2Data_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpeg2Data_Impl::GetTable(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&tid), core::mem::transmute_copy(&pfilter), core::mem::transmute_copy(&dwtimeout)) {
                Ok(ok__) => {
                    ppsectionlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamOfSections<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::super::Foundation::HANDLE, ppmpegstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMpeg2Data_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpeg2Data_Impl::GetStreamOfSections(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&tid), core::mem::transmute_copy(&pfilter), core::mem::transmute_copy(&hdatareadyevent)) {
                Ok(ok__) => {
                    ppmpegstream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSection: GetSection::<Identity, OFFSET>,
            GetTable: GetTable::<Identity, OFFSET>,
            GetStreamOfSections: GetStreamOfSections::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMpeg2Data as windows_core::Interface>::IID
    }
}
pub trait IMpeg2Stream_Impl: Sized {
    fn Initialize(&self, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: Option<&IMpeg2Data>, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn SupplyDataBuffer(&self, pstreambuffer: *const MPEG_STREAM_BUFFER) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMpeg2Stream {}
impl IMpeg2Stream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMpeg2Stream_Vtbl
    where
        Identity: IMpeg2Stream_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: *mut core::ffi::c_void, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, hdatareadyevent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IMpeg2Stream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2Stream_Impl::Initialize(this, core::mem::transmute_copy(&requesttype), windows_core::from_raw_borrowed(&pmpeg2data), core::mem::transmute_copy(&pcontext), core::mem::transmute_copy(&pid), core::mem::transmute_copy(&tid), core::mem::transmute_copy(&pfilter), core::mem::transmute_copy(&hdatareadyevent)).into()
        }
        unsafe extern "system" fn SupplyDataBuffer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstreambuffer: *const MPEG_STREAM_BUFFER) -> windows_core::HRESULT
        where
            Identity: IMpeg2Stream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2Stream_Impl::SupplyDataBuffer(this, core::mem::transmute_copy(&pstreambuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            SupplyDataBuffer: SupplyDataBuffer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMpeg2Stream as windows_core::Interface>::IID
    }
}
pub trait IMpeg2TableFilter_Impl: Sized {
    fn AddPID(&self, p: u16) -> windows_core::Result<()>;
    fn AddTable(&self, p: u16, t: u8) -> windows_core::Result<()>;
    fn AddExtension(&self, p: u16, t: u8, e: u16) -> windows_core::Result<()>;
    fn RemovePID(&self, p: u16) -> windows_core::Result<()>;
    fn RemoveTable(&self, p: u16, t: u8) -> windows_core::Result<()>;
    fn RemoveExtension(&self, p: u16, t: u8, e: u16) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMpeg2TableFilter {}
impl IMpeg2TableFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMpeg2TableFilter_Vtbl
    where
        Identity: IMpeg2TableFilter_Impl,
    {
        unsafe extern "system" fn AddPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, p: u16) -> windows_core::HRESULT
        where
            Identity: IMpeg2TableFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2TableFilter_Impl::AddPID(this, core::mem::transmute_copy(&p)).into()
        }
        unsafe extern "system" fn AddTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, p: u16, t: u8) -> windows_core::HRESULT
        where
            Identity: IMpeg2TableFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2TableFilter_Impl::AddTable(this, core::mem::transmute_copy(&p), core::mem::transmute_copy(&t)).into()
        }
        unsafe extern "system" fn AddExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, p: u16, t: u8, e: u16) -> windows_core::HRESULT
        where
            Identity: IMpeg2TableFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2TableFilter_Impl::AddExtension(this, core::mem::transmute_copy(&p), core::mem::transmute_copy(&t), core::mem::transmute_copy(&e)).into()
        }
        unsafe extern "system" fn RemovePID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, p: u16) -> windows_core::HRESULT
        where
            Identity: IMpeg2TableFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2TableFilter_Impl::RemovePID(this, core::mem::transmute_copy(&p)).into()
        }
        unsafe extern "system" fn RemoveTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, p: u16, t: u8) -> windows_core::HRESULT
        where
            Identity: IMpeg2TableFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2TableFilter_Impl::RemoveTable(this, core::mem::transmute_copy(&p), core::mem::transmute_copy(&t)).into()
        }
        unsafe extern "system" fn RemoveExtension<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, p: u16, t: u8, e: u16) -> windows_core::HRESULT
        where
            Identity: IMpeg2TableFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2TableFilter_Impl::RemoveExtension(this, core::mem::transmute_copy(&p), core::mem::transmute_copy(&t), core::mem::transmute_copy(&e)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddPID: AddPID::<Identity, OFFSET>,
            AddTable: AddTable::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemovePID: RemovePID::<Identity, OFFSET>,
            RemoveTable: RemoveTable::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMpeg2TableFilter as windows_core::Interface>::IID
    }
}
pub trait IPAT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetTransportStreamId(&self) -> windows_core::Result<u16>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordProgramNumber(&self, dwindex: u32) -> windows_core::Result<u16>;
    fn GetRecordProgramMapPid(&self, dwindex: u32) -> windows_core::Result<u16>;
    fn FindRecordProgramMapPid(&self, wprogramnumber: u16) -> windows_core::Result<u16>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<IPAT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPAT {}
impl IPAT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPAT_Vtbl
    where
        Identity: IPAT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPAT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetTransportStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::GetTransportStreamId(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::GetRecordProgramNumber(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordProgramMapPid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::GetRecordProgramMapPid(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindRecordProgramMapPid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wprogramnumber: u16, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::FindRecordProgramMapPid(this, core::mem::transmute_copy(&wprogramnumber)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPAT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pppat: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPAT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    pppat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPAT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPAT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPAT_Impl::ConvertNextToCurrent(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetTransportStreamId: GetTransportStreamId::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordProgramNumber: GetRecordProgramNumber::<Identity, OFFSET>,
            GetRecordProgramMapPid: GetRecordProgramMapPid::<Identity, OFFSET>,
            FindRecordProgramMapPid: FindRecordProgramMapPid::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPAT as windows_core::Interface>::IID
    }
}
pub trait IPBDAAttributesDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u16>;
    fn GetAttributePayload(&self, ppbattributebuffer: *mut *mut u8, pdwattributelength: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPBDAAttributesDescriptor {}
impl IPBDAAttributesDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPBDAAttributesDescriptor_Vtbl
    where
        Identity: IPBDAAttributesDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IPBDAAttributesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDAAttributesDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPBDAAttributesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDAAttributesDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttributePayload<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbattributebuffer: *mut *mut u8, pdwattributelength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPBDAAttributesDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPBDAAttributesDescriptor_Impl::GetAttributePayload(this, core::mem::transmute_copy(&ppbattributebuffer), core::mem::transmute_copy(&pdwattributelength)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetAttributePayload: GetAttributePayload::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPBDAAttributesDescriptor as windows_core::Interface>::IID
    }
}
pub trait IPBDAEntitlementDescriptor_Impl: Sized {
    fn GetTag(&self) -> windows_core::Result<u8>;
    fn GetLength(&self) -> windows_core::Result<u16>;
    fn GetToken(&self, ppbtokenbuffer: *mut *mut u8, pdwtokenlength: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPBDAEntitlementDescriptor {}
impl IPBDAEntitlementDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPBDAEntitlementDescriptor_Vtbl
    where
        Identity: IPBDAEntitlementDescriptor_Impl,
    {
        unsafe extern "system" fn GetTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IPBDAEntitlementDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDAEntitlementDescriptor_Impl::GetTag(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPBDAEntitlementDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDAEntitlementDescriptor_Impl::GetLength(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetToken<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbtokenbuffer: *mut *mut u8, pdwtokenlength: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPBDAEntitlementDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPBDAEntitlementDescriptor_Impl::GetToken(this, core::mem::transmute_copy(&ppbtokenbuffer), core::mem::transmute_copy(&pdwtokenlength)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTag: GetTag::<Identity, OFFSET>,
            GetLength: GetLength::<Identity, OFFSET>,
            GetToken: GetToken::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPBDAEntitlementDescriptor as windows_core::Interface>::IID
    }
}
pub trait IPBDASiParser_Impl: Sized {
    fn Initialize(&self, punk: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetEIT(&self, dwsize: u32, pbuffer: *const u8) -> windows_core::Result<IPBDA_EIT>;
    fn GetServices(&self, dwsize: u32, pbuffer: *const u8) -> windows_core::Result<IPBDA_Services>;
}
impl windows_core::RuntimeName for IPBDASiParser {}
impl IPBDASiParser_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPBDASiParser_Vtbl
    where
        Identity: IPBDASiParser_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPBDASiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPBDASiParser_Impl::Initialize(this, windows_core::from_raw_borrowed(&punk)).into()
        }
        unsafe extern "system" fn GetEIT<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsize: u32, pbuffer: *const u8, ppeit: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPBDASiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDASiParser_Impl::GetEIT(this, core::mem::transmute_copy(&dwsize), core::mem::transmute_copy(&pbuffer)) {
                Ok(ok__) => {
                    ppeit.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServices<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsize: u32, pbuffer: *const u8, ppservices: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPBDASiParser_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDASiParser_Impl::GetServices(this, core::mem::transmute_copy(&dwsize), core::mem::transmute_copy(&pbuffer)) {
                Ok(ok__) => {
                    ppservices.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>,
            GetEIT: GetEIT::<Identity, OFFSET>,
            GetServices: GetServices::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPBDASiParser as windows_core::Interface>::IID
    }
}
pub trait IPBDA_EIT_Impl: Sized {
    fn Initialize(&self, size: u32, pbuffer: *const u8) -> windows_core::Result<()>;
    fn GetTableId(&self) -> windows_core::Result<u8>;
    fn GetVersionNumber(&self) -> windows_core::Result<u16>;
    fn GetServiceIdx(&self) -> windows_core::Result<u64>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordEventId(&self, dwrecordindex: u32) -> windows_core::Result<u64>;
    fn GetRecordStartTime(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_DATE_AND_TIME>;
    fn GetRecordDuration(&self, dwrecordindex: u32) -> windows_core::Result<MPEG_TIME>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPBDA_EIT {}
impl IPBDA_EIT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPBDA_EIT_Vtbl
    where
        Identity: IPBDA_EIT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: u32, pbuffer: *const u8) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPBDA_EIT_Impl::Initialize(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn GetTableId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetTableId(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetServiceIdx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plwval: *mut u64) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetServiceIdx(this) {
                Ok(ok__) => {
                    plwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordEventId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, plwval: *mut u64) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetRecordEventId(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    plwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pmdtval: *mut MPEG_DATE_AND_TIME) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetRecordStartTime(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pmdtval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pmdval: *mut MPEG_TIME) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetRecordDuration(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pmdval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_EIT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPBDA_EIT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPBDA_EIT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetTableId: GetTableId::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetServiceIdx: GetServiceIdx::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordEventId: GetRecordEventId::<Identity, OFFSET>,
            GetRecordStartTime: GetRecordStartTime::<Identity, OFFSET>,
            GetRecordDuration: GetRecordDuration::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPBDA_EIT as windows_core::Interface>::IID
    }
}
pub trait IPBDA_Services_Impl: Sized {
    fn Initialize(&self, size: u32, pbuffer: *const u8) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u32>;
    fn GetRecordByIndex(&self, dwrecordindex: u32) -> windows_core::Result<u64>;
}
impl windows_core::RuntimeName for IPBDA_Services {}
impl IPBDA_Services_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPBDA_Services_Vtbl
    where
        Identity: IPBDA_Services_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: u32, pbuffer: *const u8) -> windows_core::HRESULT
        where
            Identity: IPBDA_Services_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPBDA_Services_Impl::Initialize(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPBDA_Services_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_Services_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pul64serviceidx: *mut u64) -> windows_core::HRESULT
        where
            Identity: IPBDA_Services_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPBDA_Services_Impl::GetRecordByIndex(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pul64serviceidx.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>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordByIndex: GetRecordByIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPBDA_Services as windows_core::Interface>::IID
    }
}
pub trait IPMT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetProgramNumber(&self) -> windows_core::Result<u16>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetPcrPid(&self) -> windows_core::Result<u16>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn GetCountOfRecords(&self) -> windows_core::Result<u16>;
    fn GetRecordStreamType(&self, dwrecordindex: u32) -> windows_core::Result<u8>;
    fn GetRecordElementaryPid(&self, dwrecordindex: u32) -> windows_core::Result<u16>;
    fn GetRecordCountOfDescriptors(&self, dwrecordindex: u32) -> windows_core::Result<u32>;
    fn GetRecordDescriptorByIndex(&self, dwrecordindex: u32, dwdescindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetRecordDescriptorByTag(&self, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn QueryServiceGatewayInfo(&self, ppdsmcclist: *mut *mut DSMCC_ELEMENT, puicount: *mut u32) -> windows_core::Result<()>;
    fn QueryMPEInfo(&self, ppmpelist: *mut *mut MPE_ELEMENT, puicount: *mut u32) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<IPMT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPMT {}
impl IPMT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPMT_Vtbl
    where
        Identity: IPMT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetProgramNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetProgramNumber(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPcrPid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetPcrPid(this) {
                Ok(ok__) => {
                    ppidval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn GetCountOfRecords<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetCountOfRecords(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordStreamType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetRecordStreamType(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordElementaryPid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, ppidval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetRecordElementaryPid(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    ppidval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordCountOfDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetRecordCountOfDescriptors(this, core::mem::transmute_copy(&dwrecordindex)) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, dwdescindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetRecordDescriptorByIndex(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&dwdescindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRecordDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrecordindex: u32, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::GetRecordDescriptorByTag(this, core::mem::transmute_copy(&dwrecordindex), core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn QueryServiceGatewayInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdsmcclist: *mut *mut DSMCC_ELEMENT, puicount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::QueryServiceGatewayInfo(this, core::mem::transmute_copy(&ppdsmcclist), core::mem::transmute_copy(&puicount)).into()
        }
        unsafe extern "system" fn QueryMPEInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmpelist: *mut *mut MPE_ELEMENT, puicount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::QueryMPEInfo(this, core::mem::transmute_copy(&ppmpelist), core::mem::transmute_copy(&puicount)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pppmt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPMT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    pppmt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPMT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPMT_Impl::ConvertNextToCurrent(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetProgramNumber: GetProgramNumber::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetPcrPid: GetPcrPid::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            GetCountOfRecords: GetCountOfRecords::<Identity, OFFSET>,
            GetRecordStreamType: GetRecordStreamType::<Identity, OFFSET>,
            GetRecordElementaryPid: GetRecordElementaryPid::<Identity, OFFSET>,
            GetRecordCountOfDescriptors: GetRecordCountOfDescriptors::<Identity, OFFSET>,
            GetRecordDescriptorByIndex: GetRecordDescriptorByIndex::<Identity, OFFSET>,
            GetRecordDescriptorByTag: GetRecordDescriptorByTag::<Identity, OFFSET>,
            QueryServiceGatewayInfo: QueryServiceGatewayInfo::<Identity, OFFSET>,
            QueryMPEInfo: QueryMPEInfo::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPMT as windows_core::Interface>::IID
    }
}
pub trait IPSITables_Impl: Sized {
    fn GetTable(&self, dwtsid: u32, dwtid_pid: u32, dwhashedver: u32, dwpara4: u32) -> windows_core::Result<windows_core::IUnknown>;
}
impl windows_core::RuntimeName for IPSITables {}
impl IPSITables_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPSITables_Vtbl
    where
        Identity: IPSITables_Impl,
    {
        unsafe extern "system" fn GetTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtsid: u32, dwtid_pid: u32, dwhashedver: u32, dwpara4: u32, ppiunknown: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPSITables_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPSITables_Impl::GetTable(this, core::mem::transmute_copy(&dwtsid), core::mem::transmute_copy(&dwtid_pid), core::mem::transmute_copy(&dwhashedver), core::mem::transmute_copy(&dwpara4)) {
                Ok(ok__) => {
                    ppiunknown.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetTable: GetTable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPSITables as windows_core::Interface>::IID
    }
}
pub trait IPTFilterLicenseRenewal_Impl: Sized {
    fn RenewLicenses(&self, wszfilename: &windows_core::PCWSTR, wszexpiredkid: &windows_core::PCWSTR, dwcallersid: u32, bhighpriority: super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CancelLicenseRenewal(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPTFilterLicenseRenewal {}
impl IPTFilterLicenseRenewal_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPTFilterLicenseRenewal_Vtbl
    where
        Identity: IPTFilterLicenseRenewal_Impl,
    {
        unsafe extern "system" fn RenewLicenses<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wszfilename: windows_core::PCWSTR, wszexpiredkid: windows_core::PCWSTR, dwcallersid: u32, bhighpriority: super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IPTFilterLicenseRenewal_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPTFilterLicenseRenewal_Impl::RenewLicenses(this, core::mem::transmute(&wszfilename), core::mem::transmute(&wszexpiredkid), core::mem::transmute_copy(&dwcallersid), core::mem::transmute_copy(&bhighpriority)).into()
        }
        unsafe extern "system" fn CancelLicenseRenewal<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPTFilterLicenseRenewal_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPTFilterLicenseRenewal_Impl::CancelLicenseRenewal(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RenewLicenses: RenewLicenses::<Identity, OFFSET>,
            CancelLicenseRenewal: CancelLicenseRenewal::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPTFilterLicenseRenewal as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IPersistTuneXml_Impl: Sized + super::super::super::System::Com::IPersist_Impl {
    fn InitNew(&self) -> windows_core::Result<()>;
    fn Load(&self, varvalue: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn Save(&self) -> windows_core::Result<windows_core::VARIANT>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IPersistTuneXml {}
#[cfg(feature = "Win32_System_Com")]
impl IPersistTuneXml_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistTuneXml_Vtbl
    where
        Identity: IPersistTuneXml_Impl,
    {
        unsafe extern "system" fn InitNew<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPersistTuneXml_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistTuneXml_Impl::InitNew(this).into()
        }
        unsafe extern "system" fn Load<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varvalue: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IPersistTuneXml_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistTuneXml_Impl::Load(this, core::mem::transmute(&varvalue)).into()
        }
        unsafe extern "system" fn Save<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarfragment: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IPersistTuneXml_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPersistTuneXml_Impl::Save(this) {
                Ok(ok__) => {
                    pvarfragment.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
            InitNew: InitNew::<Identity, OFFSET>,
            Load: Load::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistTuneXml as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
pub trait IPersistTuneXmlUtility_Impl: Sized {
    fn Deserialize(&self, varvalue: &windows_core::VARIANT) -> windows_core::Result<windows_core::IUnknown>;
}
impl windows_core::RuntimeName for IPersistTuneXmlUtility {}
impl IPersistTuneXmlUtility_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistTuneXmlUtility_Vtbl
    where
        Identity: IPersistTuneXmlUtility_Impl,
    {
        unsafe extern "system" fn Deserialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varvalue: core::mem::MaybeUninit<windows_core::VARIANT>, ppobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPersistTuneXmlUtility_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPersistTuneXmlUtility_Impl::Deserialize(this, core::mem::transmute(&varvalue)) {
                Ok(ok__) => {
                    ppobject.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Deserialize: Deserialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistTuneXmlUtility as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IPersistTuneXmlUtility2_Impl: Sized + IPersistTuneXmlUtility_Impl {
    fn Serialize(&self, pitunerequest: Option<&ITuneRequest>) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IPersistTuneXmlUtility2 {}
#[cfg(feature = "Win32_System_Com")]
impl IPersistTuneXmlUtility2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistTuneXmlUtility2_Vtbl
    where
        Identity: IPersistTuneXmlUtility2_Impl,
    {
        unsafe extern "system" fn Serialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitunerequest: *mut core::ffi::c_void, pstring: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IPersistTuneXmlUtility2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPersistTuneXmlUtility2_Impl::Serialize(this, windows_core::from_raw_borrowed(&pitunerequest)) {
                Ok(ok__) => {
                    pstring.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IPersistTuneXmlUtility_Vtbl::new::<Identity, OFFSET>(), Serialize: Serialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistTuneXmlUtility2 as windows_core::Interface>::IID || iid == &<IPersistTuneXmlUtility as windows_core::Interface>::IID
    }
}
pub trait IRegisterTuner_Impl: Sized {
    fn Register(&self, ptuner: Option<&ITuner>, pgraph: Option<&super::IGraphBuilder>) -> windows_core::Result<()>;
    fn Unregister(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IRegisterTuner {}
impl IRegisterTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRegisterTuner_Vtbl
    where
        Identity: IRegisterTuner_Impl,
    {
        unsafe extern "system" fn Register<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptuner: *mut core::ffi::c_void, pgraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRegisterTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRegisterTuner_Impl::Register(this, windows_core::from_raw_borrowed(&ptuner), windows_core::from_raw_borrowed(&pgraph)).into()
        }
        unsafe extern "system" fn Unregister<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRegisterTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRegisterTuner_Impl::Unregister(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, OFFSET>,
            Unregister: Unregister::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRegisterTuner as windows_core::Interface>::IID
    }
}
pub trait ISBE2Crossbar_Impl: Sized {
    fn EnableDefaultMode(&self, defaultflags: u32) -> windows_core::Result<()>;
    fn GetInitialProfile(&self) -> windows_core::Result<ISBE2MediaTypeProfile>;
    fn SetOutputProfile(&self, pprofile: Option<&ISBE2MediaTypeProfile>, pcoutputpins: *mut u32, ppoutputpins: *mut Option<super::IPin>) -> windows_core::Result<()>;
    fn EnumStreams(&self) -> windows_core::Result<ISBE2EnumStream>;
}
impl windows_core::RuntimeName for ISBE2Crossbar {}
impl ISBE2Crossbar_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2Crossbar_Vtbl
    where
        Identity: ISBE2Crossbar_Impl,
    {
        unsafe extern "system" fn EnableDefaultMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, defaultflags: u32) -> windows_core::HRESULT
        where
            Identity: ISBE2Crossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2Crossbar_Impl::EnableDefaultMode(this, core::mem::transmute_copy(&defaultflags)).into()
        }
        unsafe extern "system" fn GetInitialProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppprofile: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISBE2Crossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISBE2Crossbar_Impl::GetInitialProfile(this) {
                Ok(ok__) => {
                    ppprofile.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprofile: *mut core::ffi::c_void, pcoutputpins: *mut u32, ppoutputpins: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISBE2Crossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2Crossbar_Impl::SetOutputProfile(this, windows_core::from_raw_borrowed(&pprofile), core::mem::transmute_copy(&pcoutputpins), core::mem::transmute_copy(&ppoutputpins)).into()
        }
        unsafe extern "system" fn EnumStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstreams: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISBE2Crossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISBE2Crossbar_Impl::EnumStreams(this) {
                Ok(ok__) => {
                    ppstreams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnableDefaultMode: EnableDefaultMode::<Identity, OFFSET>,
            GetInitialProfile: GetInitialProfile::<Identity, OFFSET>,
            SetOutputProfile: SetOutputProfile::<Identity, OFFSET>,
            EnumStreams: EnumStreams::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2Crossbar as windows_core::Interface>::IID
    }
}
pub trait ISBE2EnumStream_Impl: Sized {
    fn Next(&self, crequest: u32, pstreamdesc: *mut SBE2_STREAM_DESC, pcreceived: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, crecords: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ISBE2EnumStream>;
}
impl windows_core::RuntimeName for ISBE2EnumStream {}
impl ISBE2EnumStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2EnumStream_Vtbl
    where
        Identity: ISBE2EnumStream_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, crequest: u32, pstreamdesc: *mut SBE2_STREAM_DESC, pcreceived: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISBE2EnumStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2EnumStream_Impl::Next(this, core::mem::transmute_copy(&crequest), core::mem::transmute_copy(&pstreamdesc), core::mem::transmute_copy(&pcreceived)).into()
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, crecords: u32) -> windows_core::HRESULT
        where
            Identity: ISBE2EnumStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2EnumStream_Impl::Skip(this, core::mem::transmute_copy(&crecords)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISBE2EnumStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2EnumStream_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISBE2EnumStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISBE2EnumStream_Impl::Clone(this) {
                Ok(ok__) => {
                    ppienumstream.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 == &<ISBE2EnumStream as windows_core::Interface>::IID
    }
}
pub trait ISBE2FileScan_Impl: Sized {
    fn RepairFile(&self, filename: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISBE2FileScan {}
impl ISBE2FileScan_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2FileScan_Vtbl
    where
        Identity: ISBE2FileScan_Impl,
    {
        unsafe extern "system" fn RepairFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: ISBE2FileScan_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2FileScan_Impl::RepairFile(this, core::mem::transmute(&filename)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RepairFile: RepairFile::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2FileScan as windows_core::Interface>::IID
    }
}
pub trait ISBE2GlobalEvent_Impl: Sized {
    fn GetEvent(&self, idevt: *const windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISBE2GlobalEvent {}
impl ISBE2GlobalEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2GlobalEvent_Vtbl
    where
        Identity: ISBE2GlobalEvent_Impl,
    {
        unsafe extern "system" fn GetEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idevt: *const windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISBE2GlobalEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2GlobalEvent_Impl::GetEvent(this, core::mem::transmute_copy(&idevt), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2), core::mem::transmute_copy(&param3), core::mem::transmute_copy(&param4), core::mem::transmute_copy(&pspanning), core::mem::transmute_copy(&pcb), core::mem::transmute_copy(&pb)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetEvent: GetEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2GlobalEvent as windows_core::Interface>::IID
    }
}
pub trait ISBE2GlobalEvent2_Impl: Sized + ISBE2GlobalEvent_Impl {
    fn GetEventEx(&self, idevt: *const windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8, pstreamtime: *mut i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISBE2GlobalEvent2 {}
impl ISBE2GlobalEvent2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2GlobalEvent2_Vtbl
    where
        Identity: ISBE2GlobalEvent2_Impl,
    {
        unsafe extern "system" fn GetEventEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idevt: *const windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32, pspanning: *mut super::super::super::Foundation::BOOL, pcb: *mut u32, pb: *mut u8, pstreamtime: *mut i64) -> windows_core::HRESULT
        where
            Identity: ISBE2GlobalEvent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2GlobalEvent2_Impl::GetEventEx(this, core::mem::transmute_copy(&idevt), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2), core::mem::transmute_copy(&param3), core::mem::transmute_copy(&param4), core::mem::transmute_copy(&pspanning), core::mem::transmute_copy(&pcb), core::mem::transmute_copy(&pb), core::mem::transmute_copy(&pstreamtime)).into()
        }
        Self { base__: ISBE2GlobalEvent_Vtbl::new::<Identity, OFFSET>(), GetEventEx: GetEventEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2GlobalEvent2 as windows_core::Interface>::IID || iid == &<ISBE2GlobalEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait ISBE2MediaTypeProfile_Impl: Sized {
    fn GetStreamCount(&self) -> windows_core::Result<u32>;
    fn GetStream(&self, index: u32) -> windows_core::Result<*mut super::super::MediaFoundation::AM_MEDIA_TYPE>;
    fn AddStream(&self, pmediatype: *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn DeleteStream(&self, index: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for ISBE2MediaTypeProfile {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl ISBE2MediaTypeProfile_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2MediaTypeProfile_Vtbl
    where
        Identity: ISBE2MediaTypeProfile_Impl,
    {
        unsafe extern "system" fn GetStreamCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISBE2MediaTypeProfile_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISBE2MediaTypeProfile_Impl::GetStreamCount(this) {
                Ok(ok__) => {
                    pcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, ppmediatype: *mut *mut super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: ISBE2MediaTypeProfile_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISBE2MediaTypeProfile_Impl::GetStream(this, core::mem::transmute_copy(&index)) {
                Ok(ok__) => {
                    ppmediatype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmediatype: *const super::super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: ISBE2MediaTypeProfile_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2MediaTypeProfile_Impl::AddStream(this, core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn DeleteStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32) -> windows_core::HRESULT
        where
            Identity: ISBE2MediaTypeProfile_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2MediaTypeProfile_Impl::DeleteStream(this, core::mem::transmute_copy(&index)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetStreamCount: GetStreamCount::<Identity, OFFSET>,
            GetStream: GetStream::<Identity, OFFSET>,
            AddStream: AddStream::<Identity, OFFSET>,
            DeleteStream: DeleteStream::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2MediaTypeProfile as windows_core::Interface>::IID
    }
}
pub trait ISBE2SpanningEvent_Impl: Sized {
    fn GetEvent(&self, idevt: *const windows_core::GUID, streamid: u32, pcb: *mut u32, pb: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISBE2SpanningEvent {}
impl ISBE2SpanningEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2SpanningEvent_Vtbl
    where
        Identity: ISBE2SpanningEvent_Impl,
    {
        unsafe extern "system" fn GetEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idevt: *const windows_core::GUID, streamid: u32, pcb: *mut u32, pb: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISBE2SpanningEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2SpanningEvent_Impl::GetEvent(this, core::mem::transmute_copy(&idevt), core::mem::transmute_copy(&streamid), core::mem::transmute_copy(&pcb), core::mem::transmute_copy(&pb)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetEvent: GetEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2SpanningEvent as windows_core::Interface>::IID
    }
}
pub trait ISBE2StreamMap_Impl: Sized {
    fn MapStream(&self, stream: u32) -> windows_core::Result<()>;
    fn UnmapStream(&self, stream: u32) -> windows_core::Result<()>;
    fn EnumMappedStreams(&self) -> windows_core::Result<ISBE2EnumStream>;
}
impl windows_core::RuntimeName for ISBE2StreamMap {}
impl ISBE2StreamMap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISBE2StreamMap_Vtbl
    where
        Identity: ISBE2StreamMap_Impl,
    {
        unsafe extern "system" fn MapStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, stream: u32) -> windows_core::HRESULT
        where
            Identity: ISBE2StreamMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2StreamMap_Impl::MapStream(this, core::mem::transmute_copy(&stream)).into()
        }
        unsafe extern "system" fn UnmapStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, stream: u32) -> windows_core::HRESULT
        where
            Identity: ISBE2StreamMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISBE2StreamMap_Impl::UnmapStream(this, core::mem::transmute_copy(&stream)).into()
        }
        unsafe extern "system" fn EnumMappedStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstreams: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISBE2StreamMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISBE2StreamMap_Impl::EnumMappedStreams(this) {
                Ok(ok__) => {
                    ppstreams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            MapStream: MapStream::<Identity, OFFSET>,
            UnmapStream: UnmapStream::<Identity, OFFSET>,
            EnumMappedStreams: EnumMappedStreams::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISBE2StreamMap as windows_core::Interface>::IID
    }
}
pub trait ISCTE_EAS_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetSequencyNumber(&self) -> windows_core::Result<u8>;
    fn GetProtocolVersion(&self) -> windows_core::Result<u8>;
    fn GetEASEventID(&self) -> windows_core::Result<u16>;
    fn GetOriginatorCode(&self) -> windows_core::Result<u8>;
    fn GetEASEventCodeLen(&self) -> windows_core::Result<u8>;
    fn GetEASEventCode(&self) -> windows_core::Result<u8>;
    fn GetRawNatureOfActivationTextLen(&self) -> windows_core::Result<u8>;
    fn GetRawNatureOfActivationText(&self) -> windows_core::Result<u8>;
    fn GetNatureOfActivationText(&self, bstris0639code: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
    fn GetTimeRemaining(&self) -> windows_core::Result<u8>;
    fn GetStartTime(&self) -> windows_core::Result<u32>;
    fn GetDuration(&self) -> windows_core::Result<u16>;
    fn GetAlertPriority(&self) -> windows_core::Result<u8>;
    fn GetDetailsOOBSourceID(&self) -> windows_core::Result<u16>;
    fn GetDetailsMajor(&self) -> windows_core::Result<u16>;
    fn GetDetailsMinor(&self) -> windows_core::Result<u16>;
    fn GetDetailsAudioOOBSourceID(&self) -> windows_core::Result<u16>;
    fn GetAlertText(&self, bstris0639code: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
    fn GetRawAlertTextLen(&self) -> windows_core::Result<u16>;
    fn GetRawAlertText(&self) -> windows_core::Result<u8>;
    fn GetLocationCount(&self) -> windows_core::Result<u8>;
    fn GetLocationCodes(&self, bindex: u8, pbstate: *mut u8, pbcountysubdivision: *mut u8, pwcounty: *mut u16) -> windows_core::Result<()>;
    fn GetExceptionCount(&self) -> windows_core::Result<u8>;
    fn GetExceptionService(&self, bindex: u8, pbibref: *mut u8, pwfirst: *mut u16, pwsecond: *mut u16) -> windows_core::Result<()>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISCTE_EAS {}
impl ISCTE_EAS_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISCTE_EAS_Vtbl
    where
        Identity: ISCTE_EAS_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISCTE_EAS_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSequencyNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetSequencyNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProtocolVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetProtocolVersion(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEASEventID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetEASEventID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetOriginatorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetOriginatorCode(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEASEventCodeLen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetEASEventCodeLen(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEASEventCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetEASEventCode(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawNatureOfActivationTextLen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetRawNatureOfActivationTextLen(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawNatureOfActivationText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetRawNatureOfActivationText(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNatureOfActivationText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstris0639code: core::mem::MaybeUninit<windows_core::BSTR>, pbstrstring: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetNatureOfActivationText(this, core::mem::transmute(&bstris0639code)) {
                Ok(ok__) => {
                    pbstrstring.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimeRemaining<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetTimeRemaining(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetStartTime(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetDuration(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAlertPriority<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetAlertPriority(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsOOBSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetDetailsOOBSourceID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsMajor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetDetailsMajor(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsMinor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetDetailsMinor(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDetailsAudioOOBSourceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetDetailsAudioOOBSourceID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAlertText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstris0639code: core::mem::MaybeUninit<windows_core::BSTR>, pbstrstring: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetAlertText(this, core::mem::transmute(&bstris0639code)) {
                Ok(ok__) => {
                    pbstrstring.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawAlertTextLen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetRawAlertTextLen(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRawAlertText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetRawAlertText(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLocationCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetLocationCount(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLocationCodes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbstate: *mut u8, pbcountysubdivision: *mut u8, pwcounty: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISCTE_EAS_Impl::GetLocationCodes(this, core::mem::transmute_copy(&bindex), core::mem::transmute_copy(&pbstate), core::mem::transmute_copy(&pbcountysubdivision), core::mem::transmute_copy(&pwcounty)).into()
        }
        unsafe extern "system" fn GetExceptionCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetExceptionCount(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetExceptionService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbibref: *mut u8, pwfirst: *mut u16, pwsecond: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISCTE_EAS_Impl::GetExceptionService(this, core::mem::transmute_copy(&bindex), core::mem::transmute_copy(&pbibref), core::mem::transmute_copy(&pwfirst), core::mem::transmute_copy(&pwsecond)).into()
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISCTE_EAS_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISCTE_EAS_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISCTE_EAS_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetSequencyNumber: GetSequencyNumber::<Identity, OFFSET>,
            GetProtocolVersion: GetProtocolVersion::<Identity, OFFSET>,
            GetEASEventID: GetEASEventID::<Identity, OFFSET>,
            GetOriginatorCode: GetOriginatorCode::<Identity, OFFSET>,
            GetEASEventCodeLen: GetEASEventCodeLen::<Identity, OFFSET>,
            GetEASEventCode: GetEASEventCode::<Identity, OFFSET>,
            GetRawNatureOfActivationTextLen: GetRawNatureOfActivationTextLen::<Identity, OFFSET>,
            GetRawNatureOfActivationText: GetRawNatureOfActivationText::<Identity, OFFSET>,
            GetNatureOfActivationText: GetNatureOfActivationText::<Identity, OFFSET>,
            GetTimeRemaining: GetTimeRemaining::<Identity, OFFSET>,
            GetStartTime: GetStartTime::<Identity, OFFSET>,
            GetDuration: GetDuration::<Identity, OFFSET>,
            GetAlertPriority: GetAlertPriority::<Identity, OFFSET>,
            GetDetailsOOBSourceID: GetDetailsOOBSourceID::<Identity, OFFSET>,
            GetDetailsMajor: GetDetailsMajor::<Identity, OFFSET>,
            GetDetailsMinor: GetDetailsMinor::<Identity, OFFSET>,
            GetDetailsAudioOOBSourceID: GetDetailsAudioOOBSourceID::<Identity, OFFSET>,
            GetAlertText: GetAlertText::<Identity, OFFSET>,
            GetRawAlertTextLen: GetRawAlertTextLen::<Identity, OFFSET>,
            GetRawAlertText: GetRawAlertText::<Identity, OFFSET>,
            GetLocationCount: GetLocationCount::<Identity, OFFSET>,
            GetLocationCodes: GetLocationCodes::<Identity, OFFSET>,
            GetExceptionCount: GetExceptionCount::<Identity, OFFSET>,
            GetExceptionService: GetExceptionService::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISCTE_EAS as windows_core::Interface>::IID
    }
}
pub trait ISIInbandEPG_Impl: Sized {
    fn StartSIEPGScan(&self) -> windows_core::Result<()>;
    fn StopSIEPGScan(&self) -> windows_core::Result<()>;
    fn IsSIEPGScanRunning(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for ISIInbandEPG {}
impl ISIInbandEPG_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISIInbandEPG_Vtbl
    where
        Identity: ISIInbandEPG_Impl,
    {
        unsafe extern "system" fn StartSIEPGScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISIInbandEPG_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISIInbandEPG_Impl::StartSIEPGScan(this).into()
        }
        unsafe extern "system" fn StopSIEPGScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISIInbandEPG_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISIInbandEPG_Impl::StopSIEPGScan(this).into()
        }
        unsafe extern "system" fn IsSIEPGScanRunning<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brunning: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: ISIInbandEPG_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISIInbandEPG_Impl::IsSIEPGScanRunning(this) {
                Ok(ok__) => {
                    brunning.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartSIEPGScan: StartSIEPGScan::<Identity, OFFSET>,
            StopSIEPGScan: StopSIEPGScan::<Identity, OFFSET>,
            IsSIEPGScanRunning: IsSIEPGScanRunning::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISIInbandEPG as windows_core::Interface>::IID
    }
}
pub trait ISIInbandEPGEvent_Impl: Sized {
    fn SIObjectEvent(&self, pidvb_eit: Option<&IDVB_EIT2>, dwtable_id: u32, dwservice_id: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISIInbandEPGEvent {}
impl ISIInbandEPGEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISIInbandEPGEvent_Vtbl
    where
        Identity: ISIInbandEPGEvent_Impl,
    {
        unsafe extern "system" fn SIObjectEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidvb_eit: *mut core::ffi::c_void, dwtable_id: u32, dwservice_id: u32) -> windows_core::HRESULT
        where
            Identity: ISIInbandEPGEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISIInbandEPGEvent_Impl::SIObjectEvent(this, windows_core::from_raw_borrowed(&pidvb_eit), core::mem::transmute_copy(&dwtable_id), core::mem::transmute_copy(&dwservice_id)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SIObjectEvent: SIObjectEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISIInbandEPGEvent as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IScanningTuner_Impl: Sized + ITuner_Impl {
    fn SeekUp(&self) -> windows_core::Result<()>;
    fn SeekDown(&self) -> windows_core::Result<()>;
    fn ScanUp(&self, millisecondspause: i32) -> windows_core::Result<()>;
    fn ScanDown(&self, millisecondspause: i32) -> windows_core::Result<()>;
    fn AutoProgram(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IScanningTuner {}
#[cfg(feature = "Win32_System_Com")]
impl IScanningTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IScanningTuner_Vtbl
    where
        Identity: IScanningTuner_Impl,
    {
        unsafe extern "system" fn SeekUp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IScanningTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTuner_Impl::SeekUp(this).into()
        }
        unsafe extern "system" fn SeekDown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IScanningTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTuner_Impl::SeekDown(this).into()
        }
        unsafe extern "system" fn ScanUp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, millisecondspause: i32) -> windows_core::HRESULT
        where
            Identity: IScanningTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTuner_Impl::ScanUp(this, core::mem::transmute_copy(&millisecondspause)).into()
        }
        unsafe extern "system" fn ScanDown<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, millisecondspause: i32) -> windows_core::HRESULT
        where
            Identity: IScanningTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTuner_Impl::ScanDown(this, core::mem::transmute_copy(&millisecondspause)).into()
        }
        unsafe extern "system" fn AutoProgram<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IScanningTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTuner_Impl::AutoProgram(this).into()
        }
        Self {
            base__: ITuner_Vtbl::new::<Identity, OFFSET>(),
            SeekUp: SeekUp::<Identity, OFFSET>,
            SeekDown: SeekDown::<Identity, OFFSET>,
            ScanUp: ScanUp::<Identity, OFFSET>,
            ScanDown: ScanDown::<Identity, OFFSET>,
            AutoProgram: AutoProgram::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IScanningTuner as windows_core::Interface>::IID || iid == &<ITuner as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IScanningTunerEx_Impl: Sized + IScanningTuner_Impl {
    fn GetCurrentLocator(&self, pilocator: *const Option<ILocator>) -> windows_core::Result<()>;
    fn PerformExhaustiveScan(&self, dwlowerfreq: i32, dwhigherfreq: i32, bfinetune: super::super::super::Foundation::VARIANT_BOOL, hevent: usize) -> windows_core::Result<()>;
    fn TerminateCurrentScan(&self) -> windows_core::Result<i32>;
    fn ResumeCurrentScan(&self, hevent: usize) -> windows_core::Result<()>;
    fn GetTunerScanningCapability(&self, hardwareassistedscanning: *mut i32, numstandardssupported: *mut i32, broadcaststandards: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetTunerStatus(&self, secondsleft: *mut i32, currentlocktype: *mut i32, autodetect: *mut i32, currentfreq: *mut i32) -> windows_core::Result<()>;
    fn GetCurrentTunerStandardCapability(&self, currentbroadcaststandard: &windows_core::GUID, settlingtime: *mut i32, tvstandardssupported: *mut i32) -> windows_core::Result<()>;
    fn SetScanSignalTypeFilter(&self, scanmodulationtypes: i32, analogvideostandard: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IScanningTunerEx {}
#[cfg(feature = "Win32_System_Com")]
impl IScanningTunerEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IScanningTunerEx_Vtbl
    where
        Identity: IScanningTunerEx_Impl,
    {
        unsafe extern "system" fn GetCurrentLocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pilocator: *const *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::GetCurrentLocator(this, core::mem::transmute_copy(&pilocator)).into()
        }
        unsafe extern "system" fn PerformExhaustiveScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwlowerfreq: i32, dwhigherfreq: i32, bfinetune: super::super::super::Foundation::VARIANT_BOOL, hevent: usize) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::PerformExhaustiveScan(this, core::mem::transmute_copy(&dwlowerfreq), core::mem::transmute_copy(&dwhigherfreq), core::mem::transmute_copy(&bfinetune), core::mem::transmute_copy(&hevent)).into()
        }
        unsafe extern "system" fn TerminateCurrentScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrentfreq: *mut i32) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IScanningTunerEx_Impl::TerminateCurrentScan(this) {
                Ok(ok__) => {
                    pcurrentfreq.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ResumeCurrentScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hevent: usize) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::ResumeCurrentScan(this, core::mem::transmute_copy(&hevent)).into()
        }
        unsafe extern "system" fn GetTunerScanningCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hardwareassistedscanning: *mut i32, numstandardssupported: *mut i32, broadcaststandards: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::GetTunerScanningCapability(this, core::mem::transmute_copy(&hardwareassistedscanning), core::mem::transmute_copy(&numstandardssupported), core::mem::transmute_copy(&broadcaststandards)).into()
        }
        unsafe extern "system" fn GetTunerStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, secondsleft: *mut i32, currentlocktype: *mut i32, autodetect: *mut i32, currentfreq: *mut i32) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::GetTunerStatus(this, core::mem::transmute_copy(&secondsleft), core::mem::transmute_copy(&currentlocktype), core::mem::transmute_copy(&autodetect), core::mem::transmute_copy(&currentfreq)).into()
        }
        unsafe extern "system" fn GetCurrentTunerStandardCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentbroadcaststandard: windows_core::GUID, settlingtime: *mut i32, tvstandardssupported: *mut i32) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::GetCurrentTunerStandardCapability(this, core::mem::transmute(&currentbroadcaststandard), core::mem::transmute_copy(&settlingtime), core::mem::transmute_copy(&tvstandardssupported)).into()
        }
        unsafe extern "system" fn SetScanSignalTypeFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, scanmodulationtypes: i32, analogvideostandard: i32) -> windows_core::HRESULT
        where
            Identity: IScanningTunerEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IScanningTunerEx_Impl::SetScanSignalTypeFilter(this, core::mem::transmute_copy(&scanmodulationtypes), core::mem::transmute_copy(&analogvideostandard)).into()
        }
        Self {
            base__: IScanningTuner_Vtbl::new::<Identity, OFFSET>(),
            GetCurrentLocator: GetCurrentLocator::<Identity, OFFSET>,
            PerformExhaustiveScan: PerformExhaustiveScan::<Identity, OFFSET>,
            TerminateCurrentScan: TerminateCurrentScan::<Identity, OFFSET>,
            ResumeCurrentScan: ResumeCurrentScan::<Identity, OFFSET>,
            GetTunerScanningCapability: GetTunerScanningCapability::<Identity, OFFSET>,
            GetTunerStatus: GetTunerStatus::<Identity, OFFSET>,
            GetCurrentTunerStandardCapability: GetCurrentTunerStandardCapability::<Identity, OFFSET>,
            SetScanSignalTypeFilter: SetScanSignalTypeFilter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IScanningTunerEx as windows_core::Interface>::IID || iid == &<ITuner as windows_core::Interface>::IID || iid == &<IScanningTuner as windows_core::Interface>::IID
    }
}
pub trait ISectionList_Impl: Sized {
    fn Initialize(&self, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: Option<&IMpeg2Data>, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, timeout: u32, hdoneevent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn InitializeWithRawSections(&self, pmplsections: *const MPEG_PACKET_LIST) -> windows_core::Result<()>;
    fn CancelPendingRequest(&self) -> windows_core::Result<()>;
    fn GetNumberOfSections(&self) -> windows_core::Result<u16>;
    fn GetSectionData(&self, sectionnumber: u16, pdwrawpacketlength: *mut u32, ppsection: *mut *mut SECTION) -> windows_core::Result<()>;
    fn GetProgramIdentifier(&self, ppid: *const u16) -> windows_core::Result<()>;
    fn GetTableIdentifier(&self, ptableid: *const u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISectionList {}
impl ISectionList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISectionList_Vtbl
    where
        Identity: ISectionList_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, requesttype: MPEG_REQUEST_TYPE, pmpeg2data: *mut core::ffi::c_void, pcontext: *const MPEG_CONTEXT, pid: u16, tid: u8, pfilter: *const MPEG2_FILTER, timeout: u32, hdoneevent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISectionList_Impl::Initialize(this, core::mem::transmute_copy(&requesttype), windows_core::from_raw_borrowed(&pmpeg2data), core::mem::transmute_copy(&pcontext), core::mem::transmute_copy(&pid), core::mem::transmute_copy(&tid), core::mem::transmute_copy(&pfilter), core::mem::transmute_copy(&timeout), core::mem::transmute_copy(&hdoneevent)).into()
        }
        unsafe extern "system" fn InitializeWithRawSections<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmplsections: *const MPEG_PACKET_LIST) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISectionList_Impl::InitializeWithRawSections(this, core::mem::transmute_copy(&pmplsections)).into()
        }
        unsafe extern "system" fn CancelPendingRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISectionList_Impl::CancelPendingRequest(this).into()
        }
        unsafe extern "system" fn GetNumberOfSections<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u16) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISectionList_Impl::GetNumberOfSections(this) {
                Ok(ok__) => {
                    pcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSectionData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sectionnumber: u16, pdwrawpacketlength: *mut u32, ppsection: *mut *mut SECTION) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISectionList_Impl::GetSectionData(this, core::mem::transmute_copy(&sectionnumber), core::mem::transmute_copy(&pdwrawpacketlength), core::mem::transmute_copy(&ppsection)).into()
        }
        unsafe extern "system" fn GetProgramIdentifier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *const u16) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISectionList_Impl::GetProgramIdentifier(this, core::mem::transmute_copy(&ppid)).into()
        }
        unsafe extern "system" fn GetTableIdentifier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptableid: *const u8) -> windows_core::HRESULT
        where
            Identity: ISectionList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISectionList_Impl::GetTableIdentifier(this, core::mem::transmute_copy(&ptableid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            InitializeWithRawSections: InitializeWithRawSections::<Identity, OFFSET>,
            CancelPendingRequest: CancelPendingRequest::<Identity, OFFSET>,
            GetNumberOfSections: GetNumberOfSections::<Identity, OFFSET>,
            GetSectionData: GetSectionData::<Identity, OFFSET>,
            GetProgramIdentifier: GetProgramIdentifier::<Identity, OFFSET>,
            GetTableIdentifier: GetTableIdentifier::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISectionList as windows_core::Interface>::IID
    }
}
pub trait IServiceLocationDescriptor_Impl: Sized {
    fn GetPCR_PID(&self) -> windows_core::Result<u16>;
    fn GetNumberOfElements(&self) -> windows_core::Result<u8>;
    fn GetElementStreamType(&self, bindex: u8) -> windows_core::Result<u8>;
    fn GetElementPID(&self, bindex: u8) -> windows_core::Result<u16>;
    fn GetElementLanguageCode(&self, bindex: u8, langcode: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IServiceLocationDescriptor {}
impl IServiceLocationDescriptor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IServiceLocationDescriptor_Vtbl
    where
        Identity: IServiceLocationDescriptor_Impl,
    {
        unsafe extern "system" fn GetPCR_PID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IServiceLocationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IServiceLocationDescriptor_Impl::GetPCR_PID(this) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumberOfElements<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IServiceLocationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IServiceLocationDescriptor_Impl::GetNumberOfElements(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetElementStreamType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: IServiceLocationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IServiceLocationDescriptor_Impl::GetElementStreamType(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetElementPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, pwval: *mut u16) -> windows_core::HRESULT
        where
            Identity: IServiceLocationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IServiceLocationDescriptor_Impl::GetElementPID(this, core::mem::transmute_copy(&bindex)) {
                Ok(ok__) => {
                    pwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetElementLanguageCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindex: u8, langcode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IServiceLocationDescriptor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IServiceLocationDescriptor_Impl::GetElementLanguageCode(this, core::mem::transmute_copy(&bindex), core::mem::transmute_copy(&langcode)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPCR_PID: GetPCR_PID::<Identity, OFFSET>,
            GetNumberOfElements: GetNumberOfElements::<Identity, OFFSET>,
            GetElementStreamType: GetElementStreamType::<Identity, OFFSET>,
            GetElementPID: GetElementPID::<Identity, OFFSET>,
            GetElementLanguageCode: GetElementLanguageCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IServiceLocationDescriptor as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferConfigure_Impl: Sized {
    fn SetDirectory(&self, pszdirectoryname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetDirectory(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn SetBackingFileCount(&self, dwmin: u32, dwmax: u32) -> windows_core::Result<()>;
    fn GetBackingFileCount(&self, pdwmin: *mut u32, pdwmax: *mut u32) -> windows_core::Result<()>;
    fn SetBackingFileDuration(&self, dwseconds: u32) -> windows_core::Result<()>;
    fn GetBackingFileDuration(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IStreamBufferConfigure {}
impl IStreamBufferConfigure_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferConfigure_Vtbl
    where
        Identity: IStreamBufferConfigure_Impl,
    {
        unsafe extern "system" fn SetDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdirectoryname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure_Impl::SetDirectory(this, core::mem::transmute(&pszdirectoryname)).into()
        }
        unsafe extern "system" fn GetDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszdirectoryname: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferConfigure_Impl::GetDirectory(this) {
                Ok(ok__) => {
                    ppszdirectoryname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackingFileCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmin: u32, dwmax: u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure_Impl::SetBackingFileCount(this, core::mem::transmute_copy(&dwmin), core::mem::transmute_copy(&dwmax)).into()
        }
        unsafe extern "system" fn GetBackingFileCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmin: *mut u32, pdwmax: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure_Impl::GetBackingFileCount(this, core::mem::transmute_copy(&pdwmin), core::mem::transmute_copy(&pdwmax)).into()
        }
        unsafe extern "system" fn SetBackingFileDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwseconds: u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure_Impl::SetBackingFileDuration(this, core::mem::transmute_copy(&dwseconds)).into()
        }
        unsafe extern "system" fn GetBackingFileDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwseconds: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferConfigure_Impl::GetBackingFileDuration(this) {
                Ok(ok__) => {
                    pdwseconds.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDirectory: SetDirectory::<Identity, OFFSET>,
            GetDirectory: GetDirectory::<Identity, OFFSET>,
            SetBackingFileCount: SetBackingFileCount::<Identity, OFFSET>,
            GetBackingFileCount: GetBackingFileCount::<Identity, OFFSET>,
            SetBackingFileDuration: SetBackingFileDuration::<Identity, OFFSET>,
            GetBackingFileDuration: GetBackingFileDuration::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferConfigure as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferConfigure2_Impl: Sized + IStreamBufferConfigure_Impl {
    fn SetMultiplexedPacketSize(&self, cbbytesperpacket: u32) -> windows_core::Result<()>;
    fn GetMultiplexedPacketSize(&self) -> windows_core::Result<u32>;
    fn SetFFTransitionRates(&self, dwmaxfullframerate: u32, dwmaxnonskippingrate: u32) -> windows_core::Result<()>;
    fn GetFFTransitionRates(&self, pdwmaxfullframerate: *mut u32, pdwmaxnonskippingrate: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferConfigure2 {}
impl IStreamBufferConfigure2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferConfigure2_Vtbl
    where
        Identity: IStreamBufferConfigure2_Impl,
    {
        unsafe extern "system" fn SetMultiplexedPacketSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbbytesperpacket: u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure2_Impl::SetMultiplexedPacketSize(this, core::mem::transmute_copy(&cbbytesperpacket)).into()
        }
        unsafe extern "system" fn GetMultiplexedPacketSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcbbytesperpacket: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferConfigure2_Impl::GetMultiplexedPacketSize(this) {
                Ok(ok__) => {
                    pcbbytesperpacket.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFFTransitionRates<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmaxfullframerate: u32, dwmaxnonskippingrate: u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure2_Impl::SetFFTransitionRates(this, core::mem::transmute_copy(&dwmaxfullframerate), core::mem::transmute_copy(&dwmaxnonskippingrate)).into()
        }
        unsafe extern "system" fn GetFFTransitionRates<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmaxfullframerate: *mut u32, pdwmaxnonskippingrate: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure2_Impl::GetFFTransitionRates(this, core::mem::transmute_copy(&pdwmaxfullframerate), core::mem::transmute_copy(&pdwmaxnonskippingrate)).into()
        }
        Self {
            base__: IStreamBufferConfigure_Vtbl::new::<Identity, OFFSET>(),
            SetMultiplexedPacketSize: SetMultiplexedPacketSize::<Identity, OFFSET>,
            GetMultiplexedPacketSize: GetMultiplexedPacketSize::<Identity, OFFSET>,
            SetFFTransitionRates: SetFFTransitionRates::<Identity, OFFSET>,
            GetFFTransitionRates: GetFFTransitionRates::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferConfigure2 as windows_core::Interface>::IID || iid == &<IStreamBufferConfigure as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferConfigure3_Impl: Sized + IStreamBufferConfigure2_Impl {
    fn SetStartRecConfig(&self, fstartstopscur: super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetStartRecConfig(&self) -> windows_core::Result<super::super::super::Foundation::BOOL>;
    fn SetNamespace(&self, psznamespace: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetNamespace(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl windows_core::RuntimeName for IStreamBufferConfigure3 {}
impl IStreamBufferConfigure3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferConfigure3_Vtbl
    where
        Identity: IStreamBufferConfigure3_Impl,
    {
        unsafe extern "system" fn SetStartRecConfig<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fstartstopscur: super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure3_Impl::SetStartRecConfig(this, core::mem::transmute_copy(&fstartstopscur)).into()
        }
        unsafe extern "system" fn GetStartRecConfig<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfstartstopscur: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferConfigure3_Impl::GetStartRecConfig(this) {
                Ok(ok__) => {
                    pfstartstopscur.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNamespace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psznamespace: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferConfigure3_Impl::SetNamespace(this, core::mem::transmute(&psznamespace)).into()
        }
        unsafe extern "system" fn GetNamespace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsznamespace: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferConfigure3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferConfigure3_Impl::GetNamespace(this) {
                Ok(ok__) => {
                    ppsznamespace.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IStreamBufferConfigure2_Vtbl::new::<Identity, OFFSET>(),
            SetStartRecConfig: SetStartRecConfig::<Identity, OFFSET>,
            GetStartRecConfig: GetStartRecConfig::<Identity, OFFSET>,
            SetNamespace: SetNamespace::<Identity, OFFSET>,
            GetNamespace: GetNamespace::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferConfigure3 as windows_core::Interface>::IID || iid == &<IStreamBufferConfigure as windows_core::Interface>::IID || iid == &<IStreamBufferConfigure2 as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferDataCounters_Impl: Sized {
    fn GetData(&self, ppindata: *mut SBE_PIN_DATA) -> windows_core::Result<()>;
    fn ResetData(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferDataCounters {}
impl IStreamBufferDataCounters_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferDataCounters_Vtbl
    where
        Identity: IStreamBufferDataCounters_Impl,
    {
        unsafe extern "system" fn GetData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppindata: *mut SBE_PIN_DATA) -> windows_core::HRESULT
        where
            Identity: IStreamBufferDataCounters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferDataCounters_Impl::GetData(this, core::mem::transmute_copy(&ppindata)).into()
        }
        unsafe extern "system" fn ResetData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBufferDataCounters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferDataCounters_Impl::ResetData(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetData: GetData::<Identity, OFFSET>, ResetData: ResetData::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferDataCounters as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Registry"))]
pub trait IStreamBufferInitialize_Impl: Sized {
    fn SetHKEY(&self, hkeyroot: super::super::super::System::Registry::HKEY) -> windows_core::Result<()>;
    fn SetSIDs(&self, csids: u32, ppsid: *mut super::super::super::Security::PSID) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Registry"))]
impl windows_core::RuntimeName for IStreamBufferInitialize {}
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Registry"))]
impl IStreamBufferInitialize_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferInitialize_Vtbl
    where
        Identity: IStreamBufferInitialize_Impl,
    {
        unsafe extern "system" fn SetHKEY<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hkeyroot: super::super::super::System::Registry::HKEY) -> windows_core::HRESULT
        where
            Identity: IStreamBufferInitialize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferInitialize_Impl::SetHKEY(this, core::mem::transmute_copy(&hkeyroot)).into()
        }
        unsafe extern "system" fn SetSIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, csids: u32, ppsid: *mut super::super::super::Security::PSID) -> windows_core::HRESULT
        where
            Identity: IStreamBufferInitialize_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferInitialize_Impl::SetSIDs(this, core::mem::transmute_copy(&csids), core::mem::transmute_copy(&ppsid)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetHKEY: SetHKEY::<Identity, OFFSET>, SetSIDs: SetSIDs::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferInitialize as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferMediaSeeking_Impl: Sized + super::IMediaSeeking_Impl {}
impl windows_core::RuntimeName for IStreamBufferMediaSeeking {}
impl IStreamBufferMediaSeeking_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferMediaSeeking_Vtbl
    where
        Identity: IStreamBufferMediaSeeking_Impl,
    {
        Self { base__: super::IMediaSeeking_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferMediaSeeking as windows_core::Interface>::IID || iid == &<super::IMediaSeeking as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferMediaSeeking2_Impl: Sized + IStreamBufferMediaSeeking_Impl {
    fn SetRateEx(&self, drate: f64, dwframespersec: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferMediaSeeking2 {}
impl IStreamBufferMediaSeeking2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferMediaSeeking2_Vtbl
    where
        Identity: IStreamBufferMediaSeeking2_Impl,
    {
        unsafe extern "system" fn SetRateEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, drate: f64, dwframespersec: u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferMediaSeeking2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferMediaSeeking2_Impl::SetRateEx(this, core::mem::transmute_copy(&drate), core::mem::transmute_copy(&dwframespersec)).into()
        }
        Self { base__: IStreamBufferMediaSeeking_Vtbl::new::<Identity, OFFSET>(), SetRateEx: SetRateEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferMediaSeeking2 as windows_core::Interface>::IID || iid == &<super::IMediaSeeking as windows_core::Interface>::IID || iid == &<IStreamBufferMediaSeeking as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferRecComp_Impl: Sized {
    fn Initialize(&self, psztargetfilename: &windows_core::PCWSTR, pszsbrecprofileref: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Append(&self, pszsbrecording: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendEx(&self, pszsbrecording: &windows_core::PCWSTR, rtstart: i64, rtstop: i64) -> windows_core::Result<()>;
    fn GetCurrentLength(&self) -> windows_core::Result<u32>;
    fn Close(&self) -> windows_core::Result<()>;
    fn Cancel(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferRecComp {}
impl IStreamBufferRecComp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferRecComp_Vtbl
    where
        Identity: IStreamBufferRecComp_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztargetfilename: windows_core::PCWSTR, pszsbrecprofileref: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecComp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecComp_Impl::Initialize(this, core::mem::transmute(&psztargetfilename), core::mem::transmute(&pszsbrecprofileref)).into()
        }
        unsafe extern "system" fn Append<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsbrecording: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecComp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecComp_Impl::Append(this, core::mem::transmute(&pszsbrecording)).into()
        }
        unsafe extern "system" fn AppendEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsbrecording: windows_core::PCWSTR, rtstart: i64, rtstop: i64) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecComp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecComp_Impl::AppendEx(this, core::mem::transmute(&pszsbrecording), core::mem::transmute_copy(&rtstart), core::mem::transmute_copy(&rtstop)).into()
        }
        unsafe extern "system" fn GetCurrentLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcseconds: *mut u32) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecComp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferRecComp_Impl::GetCurrentLength(this) {
                Ok(ok__) => {
                    pcseconds.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) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecComp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecComp_Impl::Close(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: IStreamBufferRecComp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecComp_Impl::Cancel(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            Append: Append::<Identity, OFFSET>,
            AppendEx: AppendEx::<Identity, OFFSET>,
            GetCurrentLength: GetCurrentLength::<Identity, OFFSET>,
            Close: Close::<Identity, OFFSET>,
            Cancel: Cancel::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferRecComp as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferRecordControl_Impl: Sized {
    fn Start(&self, prtstart: *mut i64) -> windows_core::Result<()>;
    fn Stop(&self, rtstop: i64) -> windows_core::Result<()>;
    fn GetRecordingStatus(&self, phresult: *mut windows_core::HRESULT, pbstarted: *mut super::super::super::Foundation::BOOL, pbstopped: *mut super::super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferRecordControl {}
impl IStreamBufferRecordControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferRecordControl_Vtbl
    where
        Identity: IStreamBufferRecordControl_Impl,
    {
        unsafe extern "system" fn Start<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtstart: *mut i64) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecordControl_Impl::Start(this, core::mem::transmute_copy(&prtstart)).into()
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtstop: i64) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecordControl_Impl::Stop(this, core::mem::transmute_copy(&rtstop)).into()
        }
        unsafe extern "system" fn GetRecordingStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phresult: *mut windows_core::HRESULT, pbstarted: *mut super::super::super::Foundation::BOOL, pbstopped: *mut super::super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecordControl_Impl::GetRecordingStatus(this, core::mem::transmute_copy(&phresult), core::mem::transmute_copy(&pbstarted), core::mem::transmute_copy(&pbstopped)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Start: Start::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            GetRecordingStatus: GetRecordingStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferRecordControl as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferRecordingAttribute_Impl: Sized {
    fn SetAttribute(&self, ulreserved: u32, pszattributename: &windows_core::PCWSTR, streambufferattributetype: STREAMBUFFER_ATTR_DATATYPE, pbattribute: *const u8, cbattributelength: u16) -> windows_core::Result<()>;
    fn GetAttributeCount(&self, ulreserved: u32) -> windows_core::Result<u16>;
    fn GetAttributeByName(&self, pszattributename: &windows_core::PCWSTR, pulreserved: *const u32, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> windows_core::Result<()>;
    fn GetAttributeByIndex(&self, windex: u16, pulreserved: *const u32, pszattributename: windows_core::PWSTR, pcchnamelength: *mut u16, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> windows_core::Result<()>;
    fn EnumAttributes(&self) -> windows_core::Result<IEnumStreamBufferRecordingAttrib>;
}
impl windows_core::RuntimeName for IStreamBufferRecordingAttribute {}
impl IStreamBufferRecordingAttribute_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferRecordingAttribute_Vtbl
    where
        Identity: IStreamBufferRecordingAttribute_Impl,
    {
        unsafe extern "system" fn SetAttribute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulreserved: u32, pszattributename: windows_core::PCWSTR, streambufferattributetype: STREAMBUFFER_ATTR_DATATYPE, pbattribute: *const u8, cbattributelength: u16) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordingAttribute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecordingAttribute_Impl::SetAttribute(this, core::mem::transmute_copy(&ulreserved), core::mem::transmute(&pszattributename), core::mem::transmute_copy(&streambufferattributetype), core::mem::transmute_copy(&pbattribute), core::mem::transmute_copy(&cbattributelength)).into()
        }
        unsafe extern "system" fn GetAttributeCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulreserved: u32, pcattributes: *mut u16) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordingAttribute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferRecordingAttribute_Impl::GetAttributeCount(this, core::mem::transmute_copy(&ulreserved)) {
                Ok(ok__) => {
                    pcattributes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAttributeByName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszattributename: windows_core::PCWSTR, pulreserved: *const u32, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordingAttribute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecordingAttribute_Impl::GetAttributeByName(this, core::mem::transmute(&pszattributename), core::mem::transmute_copy(&pulreserved), core::mem::transmute_copy(&pstreambufferattributetype), core::mem::transmute_copy(&pbattribute), core::mem::transmute_copy(&pcblength)).into()
        }
        unsafe extern "system" fn GetAttributeByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windex: u16, pulreserved: *const u32, pszattributename: windows_core::PWSTR, pcchnamelength: *mut u16, pstreambufferattributetype: *mut STREAMBUFFER_ATTR_DATATYPE, pbattribute: *mut u8, pcblength: *mut u16) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordingAttribute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferRecordingAttribute_Impl::GetAttributeByIndex(this, core::mem::transmute_copy(&windex), core::mem::transmute_copy(&pulreserved), core::mem::transmute_copy(&pszattributename), core::mem::transmute_copy(&pcchnamelength), core::mem::transmute_copy(&pstreambufferattributetype), core::mem::transmute_copy(&pbattribute), core::mem::transmute_copy(&pcblength)).into()
        }
        unsafe extern "system" fn EnumAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumstreambufferattrib: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBufferRecordingAttribute_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferRecordingAttribute_Impl::EnumAttributes(this) {
                Ok(ok__) => {
                    ppienumstreambufferattrib.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAttribute: SetAttribute::<Identity, OFFSET>,
            GetAttributeCount: GetAttributeCount::<Identity, OFFSET>,
            GetAttributeByName: GetAttributeByName::<Identity, OFFSET>,
            GetAttributeByIndex: GetAttributeByIndex::<Identity, OFFSET>,
            EnumAttributes: EnumAttributes::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferRecordingAttribute as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferSink_Impl: Sized {
    fn LockProfile(&self, pszstreambufferfilename: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CreateRecorder(&self, pszfilename: &windows_core::PCWSTR, dwrecordtype: u32) -> windows_core::Result<windows_core::IUnknown>;
    fn IsProfileLocked(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferSink {}
impl IStreamBufferSink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferSink_Vtbl
    where
        Identity: IStreamBufferSink_Impl,
    {
        unsafe extern "system" fn LockProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszstreambufferfilename: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferSink_Impl::LockProfile(this, core::mem::transmute(&pszstreambufferfilename)).into()
        }
        unsafe extern "system" fn CreateRecorder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: windows_core::PCWSTR, dwrecordtype: u32, precordingiunknown: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IStreamBufferSink_Impl::CreateRecorder(this, core::mem::transmute(&pszfilename), core::mem::transmute_copy(&dwrecordtype)) {
                Ok(ok__) => {
                    precordingiunknown.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsProfileLocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBufferSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferSink_Impl::IsProfileLocked(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            LockProfile: LockProfile::<Identity, OFFSET>,
            CreateRecorder: CreateRecorder::<Identity, OFFSET>,
            IsProfileLocked: IsProfileLocked::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferSink as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferSink2_Impl: Sized + IStreamBufferSink_Impl {
    fn UnlockProfile(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferSink2 {}
impl IStreamBufferSink2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferSink2_Vtbl
    where
        Identity: IStreamBufferSink2_Impl,
    {
        unsafe extern "system" fn UnlockProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBufferSink2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferSink2_Impl::UnlockProfile(this).into()
        }
        Self { base__: IStreamBufferSink_Vtbl::new::<Identity, OFFSET>(), UnlockProfile: UnlockProfile::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferSink2 as windows_core::Interface>::IID || iid == &<IStreamBufferSink as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferSink3_Impl: Sized + IStreamBufferSink2_Impl {
    fn SetAvailableFilter(&self, prtmin: *mut i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferSink3 {}
impl IStreamBufferSink3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferSink3_Vtbl
    where
        Identity: IStreamBufferSink3_Impl,
    {
        unsafe extern "system" fn SetAvailableFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtmin: *mut i64) -> windows_core::HRESULT
        where
            Identity: IStreamBufferSink3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferSink3_Impl::SetAvailableFilter(this, core::mem::transmute_copy(&prtmin)).into()
        }
        Self { base__: IStreamBufferSink2_Vtbl::new::<Identity, OFFSET>(), SetAvailableFilter: SetAvailableFilter::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferSink3 as windows_core::Interface>::IID || iid == &<IStreamBufferSink as windows_core::Interface>::IID || iid == &<IStreamBufferSink2 as windows_core::Interface>::IID
    }
}
pub trait IStreamBufferSource_Impl: Sized {
    fn SetStreamSink(&self, pistreambuffersink: Option<&IStreamBufferSink>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBufferSource {}
impl IStreamBufferSource_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBufferSource_Vtbl
    where
        Identity: IStreamBufferSource_Impl,
    {
        unsafe extern "system" fn SetStreamSink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pistreambuffersink: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBufferSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBufferSource_Impl::SetStreamSink(this, windows_core::from_raw_borrowed(&pistreambuffersink)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetStreamSink: SetStreamSink::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBufferSource as windows_core::Interface>::IID
    }
}
pub trait ITSDT_Impl: Sized {
    fn Initialize(&self, psectionlist: Option<&ISectionList>, pmpegdata: Option<&IMpeg2Data>) -> windows_core::Result<()>;
    fn GetVersionNumber(&self) -> windows_core::Result<u8>;
    fn GetCountOfTableDescriptors(&self) -> windows_core::Result<u32>;
    fn GetTableDescriptorByIndex(&self, dwindex: u32) -> windows_core::Result<IGenericDescriptor>;
    fn GetTableDescriptorByTag(&self, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut Option<IGenericDescriptor>) -> windows_core::Result<()>;
    fn RegisterForNextTable(&self, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GetNextTable(&self) -> windows_core::Result<ITSDT>;
    fn RegisterForWhenCurrent(&self, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn ConvertNextToCurrent(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ITSDT {}
impl ITSDT_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITSDT_Vtbl
    where
        Identity: ITSDT_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psectionlist: *mut core::ffi::c_void, pmpegdata: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITSDT_Impl::Initialize(this, windows_core::from_raw_borrowed(&psectionlist), windows_core::from_raw_borrowed(&pmpegdata)).into()
        }
        unsafe extern "system" fn GetVersionNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbval: *mut u8) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITSDT_Impl::GetVersionNumber(this) {
                Ok(ok__) => {
                    pbval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCountOfTableDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwval: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITSDT_Impl::GetCountOfTableDescriptors(this) {
                Ok(ok__) => {
                    pdwval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITSDT_Impl::GetTableDescriptorByIndex(this, core::mem::transmute_copy(&dwindex)) {
                Ok(ok__) => {
                    ppdescriptor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTableDescriptorByTag<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, btag: u8, pdwcookie: *mut u32, ppdescriptor: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITSDT_Impl::GetTableDescriptorByTag(this, core::mem::transmute_copy(&btag), core::mem::transmute_copy(&pdwcookie), core::mem::transmute_copy(&ppdescriptor)).into()
        }
        unsafe extern "system" fn RegisterForNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableavailable: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITSDT_Impl::RegisterForNextTable(this, core::mem::transmute_copy(&hnexttableavailable)).into()
        }
        unsafe extern "system" fn GetNextTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptsdt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITSDT_Impl::GetNextTable(this) {
                Ok(ok__) => {
                    pptsdt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterForWhenCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnexttableiscurrent: super::super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITSDT_Impl::RegisterForWhenCurrent(this, core::mem::transmute_copy(&hnexttableiscurrent)).into()
        }
        unsafe extern "system" fn ConvertNextToCurrent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITSDT_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITSDT_Impl::ConvertNextToCurrent(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetVersionNumber: GetVersionNumber::<Identity, OFFSET>,
            GetCountOfTableDescriptors: GetCountOfTableDescriptors::<Identity, OFFSET>,
            GetTableDescriptorByIndex: GetTableDescriptorByIndex::<Identity, OFFSET>,
            GetTableDescriptorByTag: GetTableDescriptorByTag::<Identity, OFFSET>,
            RegisterForNextTable: RegisterForNextTable::<Identity, OFFSET>,
            GetNextTable: GetNextTable::<Identity, OFFSET>,
            RegisterForWhenCurrent: RegisterForWhenCurrent::<Identity, OFFSET>,
            ConvertNextToCurrent: ConvertNextToCurrent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITSDT as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuneRequest_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn TuningSpace(&self) -> windows_core::Result<ITuningSpace>;
    fn Components(&self) -> windows_core::Result<IComponents>;
    fn Clone(&self) -> windows_core::Result<ITuneRequest>;
    fn Locator(&self) -> windows_core::Result<ILocator>;
    fn SetLocator(&self, locator: Option<&ILocator>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITuneRequest {}
#[cfg(feature = "Win32_System_Com")]
impl ITuneRequest_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuneRequest_Vtbl
    where
        Identity: ITuneRequest_Impl,
    {
        unsafe extern "system" fn TuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tuningspace: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequest_Impl::TuningSpace(this) {
                Ok(ok__) => {
                    tuningspace.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Components<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, components: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequest_Impl::Components(this) {
                Ok(ok__) => {
                    components.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newtunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequest_Impl::Clone(this) {
                Ok(ok__) => {
                    newtunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Locator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequest_Impl::Locator(this) {
                Ok(ok__) => {
                    locator.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locator: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequest_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuneRequest_Impl::SetLocator(this, windows_core::from_raw_borrowed(&locator)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            TuningSpace: TuningSpace::<Identity, OFFSET>,
            Components: Components::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
            Locator: Locator::<Identity, OFFSET>,
            SetLocator: SetLocator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuneRequest as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuneRequestInfo_Impl: Sized {
    fn GetLocatorData(&self, request: Option<&ITuneRequest>) -> windows_core::Result<()>;
    fn GetComponentData(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<()>;
    fn CreateComponentList(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<()>;
    fn GetNextProgram(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<ITuneRequest>;
    fn GetPreviousProgram(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<ITuneRequest>;
    fn GetNextLocator(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<ITuneRequest>;
    fn GetPreviousLocator(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<ITuneRequest>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITuneRequestInfo {}
#[cfg(feature = "Win32_System_Com")]
impl ITuneRequestInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuneRequestInfo_Vtbl
    where
        Identity: ITuneRequestInfo_Impl,
    {
        unsafe extern "system" fn GetLocatorData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, request: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuneRequestInfo_Impl::GetLocatorData(this, windows_core::from_raw_borrowed(&request)).into()
        }
        unsafe extern "system" fn GetComponentData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuneRequestInfo_Impl::GetComponentData(this, windows_core::from_raw_borrowed(&currentrequest)).into()
        }
        unsafe extern "system" fn CreateComponentList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuneRequestInfo_Impl::CreateComponentList(this, windows_core::from_raw_borrowed(&currentrequest)).into()
        }
        unsafe extern "system" fn GetNextProgram<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequestInfo_Impl::GetNextProgram(this, windows_core::from_raw_borrowed(&currentrequest)) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreviousProgram<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequestInfo_Impl::GetPreviousProgram(this, windows_core::from_raw_borrowed(&currentrequest)) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNextLocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequestInfo_Impl::GetNextLocator(this, windows_core::from_raw_borrowed(&currentrequest)) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreviousLocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequestInfo_Impl::GetPreviousLocator(this, windows_core::from_raw_borrowed(&currentrequest)) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetLocatorData: GetLocatorData::<Identity, OFFSET>,
            GetComponentData: GetComponentData::<Identity, OFFSET>,
            CreateComponentList: CreateComponentList::<Identity, OFFSET>,
            GetNextProgram: GetNextProgram::<Identity, OFFSET>,
            GetPreviousProgram: GetPreviousProgram::<Identity, OFFSET>,
            GetNextLocator: GetNextLocator::<Identity, OFFSET>,
            GetPreviousLocator: GetPreviousLocator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuneRequestInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuneRequestInfoEx_Impl: Sized + ITuneRequestInfo_Impl {
    fn CreateComponentListEx(&self, currentrequest: Option<&ITuneRequest>) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITuneRequestInfoEx {}
#[cfg(feature = "Win32_System_Com")]
impl ITuneRequestInfoEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuneRequestInfoEx_Vtbl
    where
        Identity: ITuneRequestInfoEx_Impl,
    {
        unsafe extern "system" fn CreateComponentListEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentrequest: *mut core::ffi::c_void, ppcurpmt: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuneRequestInfoEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuneRequestInfoEx_Impl::CreateComponentListEx(this, windows_core::from_raw_borrowed(&currentrequest)) {
                Ok(ok__) => {
                    ppcurpmt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: ITuneRequestInfo_Vtbl::new::<Identity, OFFSET>(), CreateComponentListEx: CreateComponentListEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuneRequestInfoEx as windows_core::Interface>::IID || iid == &<ITuneRequestInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuner_Impl: Sized {
    fn TuningSpace(&self) -> windows_core::Result<ITuningSpace>;
    fn SetTuningSpace(&self, tuningspace: Option<&ITuningSpace>) -> windows_core::Result<()>;
    fn EnumTuningSpaces(&self) -> windows_core::Result<IEnumTuningSpaces>;
    fn TuneRequest(&self) -> windows_core::Result<ITuneRequest>;
    fn SetTuneRequest(&self, tunerequest: Option<&ITuneRequest>) -> windows_core::Result<()>;
    fn Validate(&self, tunerequest: Option<&ITuneRequest>) -> windows_core::Result<()>;
    fn PreferredComponentTypes(&self) -> windows_core::Result<IComponentTypes>;
    fn SetPreferredComponentTypes(&self, componenttypes: Option<&IComponentTypes>) -> windows_core::Result<()>;
    fn SignalStrength(&self) -> windows_core::Result<i32>;
    fn TriggerSignalEvents(&self, interval: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITuner {}
#[cfg(feature = "Win32_System_Com")]
impl ITuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuner_Vtbl
    where
        Identity: ITuner_Impl,
    {
        unsafe extern "system" fn TuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tuningspace: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuner_Impl::TuningSpace(this) {
                Ok(ok__) => {
                    tuningspace.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tuningspace: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuner_Impl::SetTuningSpace(this, windows_core::from_raw_borrowed(&tuningspace)).into()
        }
        unsafe extern "system" fn EnumTuningSpaces<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: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuner_Impl::EnumTuningSpaces(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TuneRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuner_Impl::TuneRequest(this) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTuneRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tunerequest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuner_Impl::SetTuneRequest(this, windows_core::from_raw_borrowed(&tunerequest)).into()
        }
        unsafe extern "system" fn Validate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tunerequest: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuner_Impl::Validate(this, windows_core::from_raw_borrowed(&tunerequest)).into()
        }
        unsafe extern "system" fn PreferredComponentTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, componenttypes: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuner_Impl::PreferredComponentTypes(this) {
                Ok(ok__) => {
                    componenttypes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPreferredComponentTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, componenttypes: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuner_Impl::SetPreferredComponentTypes(this, windows_core::from_raw_borrowed(&componenttypes)).into()
        }
        unsafe extern "system" fn SignalStrength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strength: *mut i32) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuner_Impl::SignalStrength(this) {
                Ok(ok__) => {
                    strength.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TriggerSignalEvents<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, interval: i32) -> windows_core::HRESULT
        where
            Identity: ITuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuner_Impl::TriggerSignalEvents(this, core::mem::transmute_copy(&interval)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            TuningSpace: TuningSpace::<Identity, OFFSET>,
            SetTuningSpace: SetTuningSpace::<Identity, OFFSET>,
            EnumTuningSpaces: EnumTuningSpaces::<Identity, OFFSET>,
            TuneRequest: TuneRequest::<Identity, OFFSET>,
            SetTuneRequest: SetTuneRequest::<Identity, OFFSET>,
            Validate: Validate::<Identity, OFFSET>,
            PreferredComponentTypes: PreferredComponentTypes::<Identity, OFFSET>,
            SetPreferredComponentTypes: SetPreferredComponentTypes::<Identity, OFFSET>,
            SignalStrength: SignalStrength::<Identity, OFFSET>,
            TriggerSignalEvents: TriggerSignalEvents::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuner as windows_core::Interface>::IID
    }
}
pub trait ITunerCap_Impl: Sized {
    fn get_SupportedNetworkTypes(&self, ulcnetworktypesmax: u32, pulcnetworktypes: *mut u32, pguidnetworktypes: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn get_SupportedVideoFormats(&self, pulamtunermodetype: *mut u32, pulanalogvideostandard: *mut u32) -> windows_core::Result<()>;
    fn get_AuxInputCount(&self, pulcompositecount: *mut u32, pulsvideocount: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ITunerCap {}
impl ITunerCap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITunerCap_Vtbl
    where
        Identity: ITunerCap_Impl,
    {
        unsafe extern "system" fn get_SupportedNetworkTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcnetworktypesmax: u32, pulcnetworktypes: *mut u32, pguidnetworktypes: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ITunerCap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITunerCap_Impl::get_SupportedNetworkTypes(this, core::mem::transmute_copy(&ulcnetworktypesmax), core::mem::transmute_copy(&pulcnetworktypes), core::mem::transmute_copy(&pguidnetworktypes)).into()
        }
        unsafe extern "system" fn get_SupportedVideoFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulamtunermodetype: *mut u32, pulanalogvideostandard: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITunerCap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITunerCap_Impl::get_SupportedVideoFormats(this, core::mem::transmute_copy(&pulamtunermodetype), core::mem::transmute_copy(&pulanalogvideostandard)).into()
        }
        unsafe extern "system" fn get_AuxInputCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcompositecount: *mut u32, pulsvideocount: *mut u32) -> windows_core::HRESULT
        where
            Identity: ITunerCap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITunerCap_Impl::get_AuxInputCount(this, core::mem::transmute_copy(&pulcompositecount), core::mem::transmute_copy(&pulsvideocount)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_SupportedNetworkTypes: get_SupportedNetworkTypes::<Identity, OFFSET>,
            get_SupportedVideoFormats: get_SupportedVideoFormats::<Identity, OFFSET>,
            get_AuxInputCount: get_AuxInputCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITunerCap as windows_core::Interface>::IID
    }
}
pub trait ITunerCapEx_Impl: Sized {
    fn Has608_708Caption(&self) -> windows_core::Result<super::super::super::Foundation::VARIANT_BOOL>;
}
impl windows_core::RuntimeName for ITunerCapEx {}
impl ITunerCapEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITunerCapEx_Vtbl
    where
        Identity: ITunerCapEx_Impl,
    {
        unsafe extern "system" fn Has608_708Caption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbhascaption: *mut super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: ITunerCapEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITunerCapEx_Impl::Has608_708Caption(this) {
                Ok(ok__) => {
                    pbhascaption.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Has608_708Caption: Has608_708Caption::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITunerCapEx as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITuningSpace_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn UniqueName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetUniqueName(&self, name: &windows_core::BSTR) -> windows_core::Result<()>;
    fn FriendlyName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetFriendlyName(&self, name: &windows_core::BSTR) -> windows_core::Result<()>;
    fn CLSID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn NetworkType(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetNetworkType(&self, networktypeguid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn _NetworkType(&self) -> windows_core::Result<windows_core::GUID>;
    fn Set_NetworkType(&self, networktypeguid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn CreateTuneRequest(&self) -> windows_core::Result<ITuneRequest>;
    fn EnumCategoryGUIDs(&self) -> windows_core::Result<super::super::super::System::Com::IEnumGUID>;
    fn EnumDeviceMonikers(&self) -> windows_core::Result<super::super::super::System::Com::IEnumMoniker>;
    fn DefaultPreferredComponentTypes(&self) -> windows_core::Result<IComponentTypes>;
    fn SetDefaultPreferredComponentTypes(&self, newcomponenttypes: Option<&IComponentTypes>) -> windows_core::Result<()>;
    fn FrequencyMapping(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetFrequencyMapping(&self, mapping: &windows_core::BSTR) -> windows_core::Result<()>;
    fn DefaultLocator(&self) -> windows_core::Result<ILocator>;
    fn SetDefaultLocator(&self, locatorval: Option<&ILocator>) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ITuningSpace>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITuningSpace {}
#[cfg(feature = "Win32_System_Com")]
impl ITuningSpace_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuningSpace_Vtbl
    where
        Identity: ITuningSpace_Impl,
    {
        unsafe extern "system" fn UniqueName<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: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::UniqueName(this) {
                Ok(ok__) => {
                    name.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUniqueName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::SetUniqueName(this, core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn FriendlyName<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: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::FriendlyName(this) {
                Ok(ok__) => {
                    name.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFriendlyName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::SetFriendlyName(this, core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn CLSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, spaceclsid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::CLSID(this) {
                Ok(ok__) => {
                    spaceclsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, networktypeguid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::NetworkType(this) {
                Ok(ok__) => {
                    networktypeguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetNetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, networktypeguid: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::SetNetworkType(this, core::mem::transmute(&networktypeguid)).into()
        }
        unsafe extern "system" fn _NetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, networktypeguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::_NetworkType(this) {
                Ok(ok__) => {
                    networktypeguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Set_NetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, networktypeguid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::Set_NetworkType(this, core::mem::transmute_copy(&networktypeguid)).into()
        }
        unsafe extern "system" fn CreateTuneRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tunerequest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::CreateTuneRequest(this) {
                Ok(ok__) => {
                    tunerequest.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumCategoryGUIDs<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: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::EnumCategoryGUIDs(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumDeviceMonikers<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: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::EnumDeviceMonikers(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DefaultPreferredComponentTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, componenttypes: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::DefaultPreferredComponentTypes(this) {
                Ok(ok__) => {
                    componenttypes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultPreferredComponentTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newcomponenttypes: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::SetDefaultPreferredComponentTypes(this, windows_core::from_raw_borrowed(&newcomponenttypes)).into()
        }
        unsafe extern "system" fn FrequencyMapping<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmapping: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::FrequencyMapping(this) {
                Ok(ok__) => {
                    pmapping.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFrequencyMapping<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mapping: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::SetFrequencyMapping(this, core::mem::transmute(&mapping)).into()
        }
        unsafe extern "system" fn DefaultLocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locatorval: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::DefaultLocator(this) {
                Ok(ok__) => {
                    locatorval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultLocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, locatorval: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpace_Impl::SetDefaultLocator(this, windows_core::from_raw_borrowed(&locatorval)).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newts: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpace_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpace_Impl::Clone(this) {
                Ok(ok__) => {
                    newts.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            UniqueName: UniqueName::<Identity, OFFSET>,
            SetUniqueName: SetUniqueName::<Identity, OFFSET>,
            FriendlyName: FriendlyName::<Identity, OFFSET>,
            SetFriendlyName: SetFriendlyName::<Identity, OFFSET>,
            CLSID: CLSID::<Identity, OFFSET>,
            NetworkType: NetworkType::<Identity, OFFSET>,
            SetNetworkType: SetNetworkType::<Identity, OFFSET>,
            _NetworkType: _NetworkType::<Identity, OFFSET>,
            Set_NetworkType: Set_NetworkType::<Identity, OFFSET>,
            CreateTuneRequest: CreateTuneRequest::<Identity, OFFSET>,
            EnumCategoryGUIDs: EnumCategoryGUIDs::<Identity, OFFSET>,
            EnumDeviceMonikers: EnumDeviceMonikers::<Identity, OFFSET>,
            DefaultPreferredComponentTypes: DefaultPreferredComponentTypes::<Identity, OFFSET>,
            SetDefaultPreferredComponentTypes: SetDefaultPreferredComponentTypes::<Identity, OFFSET>,
            FrequencyMapping: FrequencyMapping::<Identity, OFFSET>,
            SetFrequencyMapping: SetFrequencyMapping::<Identity, OFFSET>,
            DefaultLocator: DefaultLocator::<Identity, OFFSET>,
            SetDefaultLocator: SetDefaultLocator::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuningSpace as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ITuningSpaceContainer_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, varindex: &windows_core::VARIANT) -> windows_core::Result<ITuningSpace>;
    fn put_Item(&self, varindex: &windows_core::VARIANT, tuningspace: Option<&ITuningSpace>) -> windows_core::Result<()>;
    fn TuningSpacesForCLSID(&self, spaceclsid: &windows_core::BSTR) -> windows_core::Result<ITuningSpaces>;
    fn _TuningSpacesForCLSID2(&self, spaceclsid: *const windows_core::GUID) -> windows_core::Result<ITuningSpaces>;
    fn TuningSpacesForName(&self, name: &windows_core::BSTR) -> windows_core::Result<ITuningSpaces>;
    fn FindID(&self, tuningspace: Option<&ITuningSpace>) -> windows_core::Result<i32>;
    fn Add(&self, tuningspace: Option<&ITuningSpace>) -> windows_core::Result<windows_core::VARIANT>;
    fn EnumTuningSpaces(&self) -> windows_core::Result<IEnumTuningSpaces>;
    fn Remove(&self, index: &windows_core::VARIANT) -> windows_core::Result<()>;
    fn MaxCount(&self) -> windows_core::Result<i32>;
    fn SetMaxCount(&self, maxcount: i32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for ITuningSpaceContainer {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ITuningSpaceContainer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuningSpaceContainer_Vtbl
    where
        Identity: ITuningSpaceContainer_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: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::Count(this) {
                Ok(ok__) => {
                    count.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, newenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    newenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varindex: core::mem::MaybeUninit<windows_core::VARIANT>, tuningspace: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::get_Item(this, core::mem::transmute(&varindex)) {
                Ok(ok__) => {
                    tuningspace.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varindex: core::mem::MaybeUninit<windows_core::VARIANT>, tuningspace: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpaceContainer_Impl::put_Item(this, core::mem::transmute(&varindex), windows_core::from_raw_borrowed(&tuningspace)).into()
        }
        unsafe extern "system" fn TuningSpacesForCLSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, spaceclsid: core::mem::MaybeUninit<windows_core::BSTR>, newcoll: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::TuningSpacesForCLSID(this, core::mem::transmute(&spaceclsid)) {
                Ok(ok__) => {
                    newcoll.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _TuningSpacesForCLSID2<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, spaceclsid: *const windows_core::GUID, newcoll: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::_TuningSpacesForCLSID2(this, core::mem::transmute_copy(&spaceclsid)) {
                Ok(ok__) => {
                    newcoll.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TuningSpacesForName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: core::mem::MaybeUninit<windows_core::BSTR>, newcoll: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::TuningSpacesForName(this, core::mem::transmute(&name)) {
                Ok(ok__) => {
                    newcoll.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tuningspace: *mut core::ffi::c_void, id: *mut i32) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::FindID(this, windows_core::from_raw_borrowed(&tuningspace)) {
                Ok(ok__) => {
                    id.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Add<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tuningspace: *mut core::ffi::c_void, newindex: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::Add(this, windows_core::from_raw_borrowed(&tuningspace)) {
                Ok(ok__) => {
                    newindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumTuningSpaces<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: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::EnumTuningSpaces(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Remove<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpaceContainer_Impl::Remove(this, core::mem::transmute(&index)).into()
        }
        unsafe extern "system" fn MaxCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaceContainer_Impl::MaxCount(this) {
                Ok(ok__) => {
                    maxcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxcount: i32) -> windows_core::HRESULT
        where
            Identity: ITuningSpaceContainer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ITuningSpaceContainer_Impl::SetMaxCount(this, core::mem::transmute_copy(&maxcount)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            put_Item: put_Item::<Identity, OFFSET>,
            TuningSpacesForCLSID: TuningSpacesForCLSID::<Identity, OFFSET>,
            _TuningSpacesForCLSID2: _TuningSpacesForCLSID2::<Identity, OFFSET>,
            TuningSpacesForName: TuningSpacesForName::<Identity, OFFSET>,
            FindID: FindID::<Identity, OFFSET>,
            Add: Add::<Identity, OFFSET>,
            EnumTuningSpaces: EnumTuningSpaces::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
            MaxCount: MaxCount::<Identity, OFFSET>,
            SetMaxCount: SetMaxCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuningSpaceContainer as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait ITuningSpaces_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn _NewEnum(&self) -> windows_core::Result<super::super::super::System::Ole::IEnumVARIANT>;
    fn get_Item(&self, varindex: &windows_core::VARIANT) -> windows_core::Result<ITuningSpace>;
    fn EnumTuningSpaces(&self) -> windows_core::Result<IEnumTuningSpaces>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for ITuningSpaces {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl ITuningSpaces_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ITuningSpaces_Vtbl
    where
        Identity: ITuningSpaces_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: ITuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaces_Impl::Count(this) {
                Ok(ok__) => {
                    count.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, newenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaces_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    newenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, varindex: core::mem::MaybeUninit<windows_core::VARIANT>, tuningspace: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaces_Impl::get_Item(this, core::mem::transmute(&varindex)) {
                Ok(ok__) => {
                    tuningspace.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumTuningSpaces<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ITuningSpaces_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ITuningSpaces_Impl::EnumTuningSpaces(this) {
                Ok(ok__) => {
                    newenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            get_Item: get_Item::<Identity, OFFSET>,
            EnumTuningSpaces: EnumTuningSpaces::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITuningSpaces as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IXDSCodec_Impl: Sized {
    fn XDSToRatObjOK(&self) -> windows_core::Result<windows_core::HRESULT>;
    fn SetCCSubstreamService(&self, substreammask: i32) -> windows_core::Result<()>;
    fn CCSubstreamService(&self) -> windows_core::Result<i32>;
    fn GetContentAdvisoryRating(&self, prat: *mut i32, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()>;
    fn GetXDSPacket(&self, pxdsclasspkt: *mut i32, pxdstypepkt: *mut i32, pbstrxdspkt: *mut windows_core::BSTR, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()>;
    fn GetCurrLicenseExpDate(&self, prottype: *const ProtType) -> windows_core::Result<i32>;
    fn GetLastErrorCode(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IXDSCodec {}
impl IXDSCodec_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IXDSCodec_Vtbl
    where
        Identity: IXDSCodec_Impl,
    {
        unsafe extern "system" fn XDSToRatObjOK<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phrcocreateretval: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IXDSCodec_Impl::XDSToRatObjOK(this) {
                Ok(ok__) => {
                    phrcocreateretval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCCSubstreamService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, substreammask: i32) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSCodec_Impl::SetCCSubstreamService(this, core::mem::transmute_copy(&substreammask)).into()
        }
        unsafe extern "system" fn CCSubstreamService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psubstreammask: *mut i32) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IXDSCodec_Impl::CCSubstreamService(this) {
                Ok(ok__) => {
                    psubstreammask.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetContentAdvisoryRating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prat: *mut i32, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSCodec_Impl::GetContentAdvisoryRating(this, core::mem::transmute_copy(&prat), core::mem::transmute_copy(&ppktseqid), core::mem::transmute_copy(&pcallseqid), core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn GetXDSPacket<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pxdsclasspkt: *mut i32, pxdstypepkt: *mut i32, pbstrxdspkt: *mut core::mem::MaybeUninit<windows_core::BSTR>, ppktseqid: *mut i32, pcallseqid: *mut i32, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSCodec_Impl::GetXDSPacket(this, core::mem::transmute_copy(&pxdsclasspkt), core::mem::transmute_copy(&pxdstypepkt), core::mem::transmute_copy(&pbstrxdspkt), core::mem::transmute_copy(&ppktseqid), core::mem::transmute_copy(&pcallseqid), core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn GetCurrLicenseExpDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prottype: *const ProtType, lpdatetime: *mut i32) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IXDSCodec_Impl::GetCurrLicenseExpDate(this, core::mem::transmute_copy(&prottype)) {
                Ok(ok__) => {
                    lpdatetime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLastErrorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IXDSCodec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSCodec_Impl::GetLastErrorCode(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            XDSToRatObjOK: XDSToRatObjOK::<Identity, OFFSET>,
            SetCCSubstreamService: SetCCSubstreamService::<Identity, OFFSET>,
            CCSubstreamService: CCSubstreamService::<Identity, OFFSET>,
            GetContentAdvisoryRating: GetContentAdvisoryRating::<Identity, OFFSET>,
            GetXDSPacket: GetXDSPacket::<Identity, OFFSET>,
            GetCurrLicenseExpDate: GetCurrLicenseExpDate::<Identity, OFFSET>,
            GetLastErrorCode: GetLastErrorCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IXDSCodec as windows_core::Interface>::IID
    }
}
pub trait IXDSCodecConfig_Impl: Sized {
    fn GetSecureChannelObject(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn SetPauseBufferTime(&self, dwpausebuffertime: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IXDSCodecConfig {}
impl IXDSCodecConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IXDSCodecConfig_Vtbl
    where
        Identity: IXDSCodecConfig_Impl,
    {
        unsafe extern "system" fn GetSecureChannelObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunkdrmsecurechannel: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IXDSCodecConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IXDSCodecConfig_Impl::GetSecureChannelObject(this) {
                Ok(ok__) => {
                    ppunkdrmsecurechannel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPauseBufferTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwpausebuffertime: u32) -> windows_core::HRESULT
        where
            Identity: IXDSCodecConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSCodecConfig_Impl::SetPauseBufferTime(this, core::mem::transmute_copy(&dwpausebuffertime)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSecureChannelObject: GetSecureChannelObject::<Identity, OFFSET>,
            SetPauseBufferTime: SetPauseBufferTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IXDSCodecConfig as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IXDSCodecEvents_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IXDSCodecEvents {}
#[cfg(feature = "Win32_System_Com")]
impl IXDSCodecEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IXDSCodecEvents_Vtbl
    where
        Identity: IXDSCodecEvents_Impl,
    {
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IXDSCodecEvents as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IXDSToRat_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {
    fn Init(&self) -> windows_core::Result<()>;
    fn ParseXDSBytePair(&self, byte1: u8, byte2: u8, pensystem: *mut EnTvRat_System, penlevel: *mut EnTvRat_GenericLevel, plbfenattributes: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IXDSToRat {}
#[cfg(feature = "Win32_System_Com")]
impl IXDSToRat_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IXDSToRat_Vtbl
    where
        Identity: IXDSToRat_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IXDSToRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSToRat_Impl::Init(this).into()
        }
        unsafe extern "system" fn ParseXDSBytePair<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, byte1: u8, byte2: u8, pensystem: *mut EnTvRat_System, penlevel: *mut EnTvRat_GenericLevel, plbfenattributes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IXDSToRat_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IXDSToRat_Impl::ParseXDSBytePair(this, core::mem::transmute_copy(&byte1), core::mem::transmute_copy(&byte2), core::mem::transmute_copy(&pensystem), core::mem::transmute_copy(&penlevel), core::mem::transmute_copy(&plbfenattributes)).into()
        }
        Self {
            base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Init: Init::<Identity, OFFSET>,
            ParseXDSBytePair: ParseXDSBytePair::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IXDSToRat as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait _IMSVidCtlEvents_Impl: Sized + super::super::super::System::Com::IDispatch_Impl {}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for _IMSVidCtlEvents {}
#[cfg(feature = "Win32_System_Com")]
impl _IMSVidCtlEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> _IMSVidCtlEvents_Vtbl
    where
        Identity: _IMSVidCtlEvents_Impl,
    {
        Self { base__: super::super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<_IMSVidCtlEvents as windows_core::Interface>::IID || iid == &<super::super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
