pub trait IAMAnalogVideoDecoder_Impl: Sized {
    fn AvailableTVFormats(&self) -> windows_core::Result<i32>;
    fn SetTVFormat(&self, lanalogvideostandard: i32) -> windows_core::Result<()>;
    fn TVFormat(&self) -> windows_core::Result<i32>;
    fn HorizontalLocked(&self) -> windows_core::Result<i32>;
    fn SetVCRHorizontalLocking(&self, lvcrhorizontallocking: i32) -> windows_core::Result<()>;
    fn VCRHorizontalLocking(&self) -> windows_core::Result<i32>;
    fn NumberOfLines(&self) -> windows_core::Result<i32>;
    fn SetOutputEnable(&self, loutputenable: i32) -> windows_core::Result<()>;
    fn OutputEnable(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IAMAnalogVideoDecoder {}
impl IAMAnalogVideoDecoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMAnalogVideoDecoder_Vtbl
    where
        Identity: IAMAnalogVideoDecoder_Impl,
    {
        unsafe extern "system" fn AvailableTVFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lanalogvideostandard: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoDecoder_Impl::AvailableTVFormats(this) {
                Ok(ok__) => {
                    lanalogvideostandard.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTVFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lanalogvideostandard: i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAnalogVideoDecoder_Impl::SetTVFormat(this, core::mem::transmute_copy(&lanalogvideostandard)).into()
        }
        unsafe extern "system" fn TVFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planalogvideostandard: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoDecoder_Impl::TVFormat(this) {
                Ok(ok__) => {
                    planalogvideostandard.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HorizontalLocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pllocked: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoDecoder_Impl::HorizontalLocked(this) {
                Ok(ok__) => {
                    pllocked.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetVCRHorizontalLocking<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lvcrhorizontallocking: i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAnalogVideoDecoder_Impl::SetVCRHorizontalLocking(this, core::mem::transmute_copy(&lvcrhorizontallocking)).into()
        }
        unsafe extern "system" fn VCRHorizontalLocking<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plvcrhorizontallocking: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoDecoder_Impl::VCRHorizontalLocking(this) {
                Ok(ok__) => {
                    plvcrhorizontallocking.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NumberOfLines<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plnumberoflines: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoDecoder_Impl::NumberOfLines(this) {
                Ok(ok__) => {
                    plnumberoflines.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, loutputenable: i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAnalogVideoDecoder_Impl::SetOutputEnable(this, core::mem::transmute_copy(&loutputenable)).into()
        }
        unsafe extern "system" fn OutputEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ploutputenable: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoDecoder_Impl::OutputEnable(this) {
                Ok(ok__) => {
                    ploutputenable.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AvailableTVFormats: AvailableTVFormats::<Identity, OFFSET>,
            SetTVFormat: SetTVFormat::<Identity, OFFSET>,
            TVFormat: TVFormat::<Identity, OFFSET>,
            HorizontalLocked: HorizontalLocked::<Identity, OFFSET>,
            SetVCRHorizontalLocking: SetVCRHorizontalLocking::<Identity, OFFSET>,
            VCRHorizontalLocking: VCRHorizontalLocking::<Identity, OFFSET>,
            NumberOfLines: NumberOfLines::<Identity, OFFSET>,
            SetOutputEnable: SetOutputEnable::<Identity, OFFSET>,
            OutputEnable: OutputEnable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMAnalogVideoDecoder as windows_core::Interface>::IID
    }
}
pub trait IAMAnalogVideoEncoder_Impl: Sized {
    fn AvailableTVFormats(&self) -> windows_core::Result<i32>;
    fn SetTVFormat(&self, lanalogvideostandard: i32) -> windows_core::Result<()>;
    fn TVFormat(&self) -> windows_core::Result<i32>;
    fn SetCopyProtection(&self, lvideocopyprotection: i32) -> windows_core::Result<()>;
    fn CopyProtection(&self) -> windows_core::Result<i32>;
    fn SetCCEnable(&self, lccenable: i32) -> windows_core::Result<()>;
    fn CCEnable(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IAMAnalogVideoEncoder {}
impl IAMAnalogVideoEncoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMAnalogVideoEncoder_Vtbl
    where
        Identity: IAMAnalogVideoEncoder_Impl,
    {
        unsafe extern "system" fn AvailableTVFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lanalogvideostandard: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoEncoder_Impl::AvailableTVFormats(this) {
                Ok(ok__) => {
                    lanalogvideostandard.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTVFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lanalogvideostandard: i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAnalogVideoEncoder_Impl::SetTVFormat(this, core::mem::transmute_copy(&lanalogvideostandard)).into()
        }
        unsafe extern "system" fn TVFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planalogvideostandard: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoEncoder_Impl::TVFormat(this) {
                Ok(ok__) => {
                    planalogvideostandard.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCopyProtection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lvideocopyprotection: i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAnalogVideoEncoder_Impl::SetCopyProtection(this, core::mem::transmute_copy(&lvideocopyprotection)).into()
        }
        unsafe extern "system" fn CopyProtection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lvideocopyprotection: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoEncoder_Impl::CopyProtection(this) {
                Ok(ok__) => {
                    lvideocopyprotection.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCCEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lccenable: i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAnalogVideoEncoder_Impl::SetCCEnable(this, core::mem::transmute_copy(&lccenable)).into()
        }
        unsafe extern "system" fn CCEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lccenable: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMAnalogVideoEncoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAnalogVideoEncoder_Impl::CCEnable(this) {
                Ok(ok__) => {
                    lccenable.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AvailableTVFormats: AvailableTVFormats::<Identity, OFFSET>,
            SetTVFormat: SetTVFormat::<Identity, OFFSET>,
            TVFormat: TVFormat::<Identity, OFFSET>,
            SetCopyProtection: SetCopyProtection::<Identity, OFFSET>,
            CopyProtection: CopyProtection::<Identity, OFFSET>,
            SetCCEnable: SetCCEnable::<Identity, OFFSET>,
            CCEnable: CCEnable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMAnalogVideoEncoder as windows_core::Interface>::IID
    }
}
pub trait IAMAsyncReaderTimestampScaling_Impl: Sized {
    fn GetTimestampMode(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetTimestampMode(&self, fraw: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMAsyncReaderTimestampScaling {}
impl IAMAsyncReaderTimestampScaling_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMAsyncReaderTimestampScaling_Vtbl
    where
        Identity: IAMAsyncReaderTimestampScaling_Impl,
    {
        unsafe extern "system" fn GetTimestampMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfraw: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAsyncReaderTimestampScaling_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAsyncReaderTimestampScaling_Impl::GetTimestampMode(this) {
                Ok(ok__) => {
                    pfraw.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTimestampMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fraw: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAsyncReaderTimestampScaling_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAsyncReaderTimestampScaling_Impl::SetTimestampMode(this, core::mem::transmute_copy(&fraw)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTimestampMode: GetTimestampMode::<Identity, OFFSET>,
            SetTimestampMode: SetTimestampMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMAsyncReaderTimestampScaling as windows_core::Interface>::IID
    }
}
pub trait IAMAudioInputMixer_Impl: Sized {
    fn SetEnable(&self, fenable: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Enable(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetMono(&self, fmono: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Mono(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetMixLevel(&self, level: f64) -> windows_core::Result<()>;
    fn MixLevel(&self) -> windows_core::Result<f64>;
    fn SetPan(&self, pan: f64) -> windows_core::Result<()>;
    fn Pan(&self) -> windows_core::Result<f64>;
    fn SetLoudness(&self, floudness: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn Loudness(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn SetTreble(&self, treble: f64) -> windows_core::Result<()>;
    fn Treble(&self) -> windows_core::Result<f64>;
    fn TrebleRange(&self) -> windows_core::Result<f64>;
    fn SetBass(&self, bass: f64) -> windows_core::Result<()>;
    fn Bass(&self) -> windows_core::Result<f64>;
    fn BassRange(&self) -> windows_core::Result<f64>;
}
impl windows_core::RuntimeName for IAMAudioInputMixer {}
impl IAMAudioInputMixer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMAudioInputMixer_Vtbl
    where
        Identity: IAMAudioInputMixer_Impl,
    {
        unsafe extern "system" fn SetEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetEnable(this, core::mem::transmute_copy(&fenable)).into()
        }
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenable: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::Enable(this) {
                Ok(ok__) => {
                    pfenable.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMono<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fmono: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetMono(this, core::mem::transmute_copy(&fmono)).into()
        }
        unsafe extern "system" fn Mono<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfmono: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::Mono(this) {
                Ok(ok__) => {
                    pfmono.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMixLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetMixLevel(this, core::mem::transmute_copy(&level)).into()
        }
        unsafe extern "system" fn MixLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plevel: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::MixLevel(this) {
                Ok(ok__) => {
                    plevel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pan: f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetPan(this, core::mem::transmute_copy(&pan)).into()
        }
        unsafe extern "system" fn Pan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppan: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::Pan(this) {
                Ok(ok__) => {
                    ppan.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLoudness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, floudness: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetLoudness(this, core::mem::transmute_copy(&floudness)).into()
        }
        unsafe extern "system" fn Loudness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfloudness: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::Loudness(this) {
                Ok(ok__) => {
                    pfloudness.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTreble<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, treble: f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetTreble(this, core::mem::transmute_copy(&treble)).into()
        }
        unsafe extern "system" fn Treble<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptreble: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::Treble(this) {
                Ok(ok__) => {
                    ptreble.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TrebleRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prange: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::TrebleRange(this) {
                Ok(ok__) => {
                    prange.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBass<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bass: f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioInputMixer_Impl::SetBass(this, core::mem::transmute_copy(&bass)).into()
        }
        unsafe extern "system" fn Bass<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbass: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::Bass(this) {
                Ok(ok__) => {
                    pbass.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BassRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prange: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMAudioInputMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMAudioInputMixer_Impl::BassRange(this) {
                Ok(ok__) => {
                    prange.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetEnable: SetEnable::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
            SetMono: SetMono::<Identity, OFFSET>,
            Mono: Mono::<Identity, OFFSET>,
            SetMixLevel: SetMixLevel::<Identity, OFFSET>,
            MixLevel: MixLevel::<Identity, OFFSET>,
            SetPan: SetPan::<Identity, OFFSET>,
            Pan: Pan::<Identity, OFFSET>,
            SetLoudness: SetLoudness::<Identity, OFFSET>,
            Loudness: Loudness::<Identity, OFFSET>,
            SetTreble: SetTreble::<Identity, OFFSET>,
            Treble: Treble::<Identity, OFFSET>,
            TrebleRange: TrebleRange::<Identity, OFFSET>,
            SetBass: SetBass::<Identity, OFFSET>,
            Bass: Bass::<Identity, OFFSET>,
            BassRange: BassRange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMAudioInputMixer as windows_core::Interface>::IID
    }
}
pub trait IAMAudioRendererStats_Impl: Sized {
    fn GetStatParam(&self, dwparam: u32, pdwparam1: *mut u32, pdwparam2: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMAudioRendererStats {}
impl IAMAudioRendererStats_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMAudioRendererStats_Vtbl
    where
        Identity: IAMAudioRendererStats_Impl,
    {
        unsafe extern "system" fn GetStatParam<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparam: u32, pdwparam1: *mut u32, pdwparam2: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMAudioRendererStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMAudioRendererStats_Impl::GetStatParam(this, core::mem::transmute_copy(&dwparam), core::mem::transmute_copy(&pdwparam1), core::mem::transmute_copy(&pdwparam2)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetStatParam: GetStatParam::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMAudioRendererStats as windows_core::Interface>::IID
    }
}
pub trait IAMBufferNegotiation_Impl: Sized {
    fn SuggestAllocatorProperties(&self, pprop: *const ALLOCATOR_PROPERTIES) -> windows_core::Result<()>;
    fn GetAllocatorProperties(&self) -> windows_core::Result<ALLOCATOR_PROPERTIES>;
}
impl windows_core::RuntimeName for IAMBufferNegotiation {}
impl IAMBufferNegotiation_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMBufferNegotiation_Vtbl
    where
        Identity: IAMBufferNegotiation_Impl,
    {
        unsafe extern "system" fn SuggestAllocatorProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprop: *const ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IAMBufferNegotiation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMBufferNegotiation_Impl::SuggestAllocatorProperties(this, core::mem::transmute_copy(&pprop)).into()
        }
        unsafe extern "system" fn GetAllocatorProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprop: *mut ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IAMBufferNegotiation_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMBufferNegotiation_Impl::GetAllocatorProperties(this) {
                Ok(ok__) => {
                    pprop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SuggestAllocatorProperties: SuggestAllocatorProperties::<Identity, OFFSET>,
            GetAllocatorProperties: GetAllocatorProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMBufferNegotiation as windows_core::Interface>::IID
    }
}
pub trait IAMCameraControl_Impl: Sized {
    fn GetRange(&self, property: i32, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflags: *mut i32) -> windows_core::Result<()>;
    fn Set(&self, property: i32, lvalue: i32, flags: i32) -> windows_core::Result<()>;
    fn Get(&self, property: i32, lvalue: *mut i32, flags: *mut i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMCameraControl {}
impl IAMCameraControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMCameraControl_Vtbl
    where
        Identity: IAMCameraControl_Impl,
    {
        unsafe extern "system" fn GetRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: i32, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMCameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCameraControl_Impl::GetRange(this, core::mem::transmute_copy(&property), core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflags)).into()
        }
        unsafe extern "system" fn Set<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: i32, lvalue: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IAMCameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCameraControl_Impl::Set(this, core::mem::transmute_copy(&property), core::mem::transmute_copy(&lvalue), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn Get<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: i32, lvalue: *mut i32, flags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMCameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCameraControl_Impl::Get(this, core::mem::transmute_copy(&property), core::mem::transmute_copy(&lvalue), core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetRange: GetRange::<Identity, OFFSET>,
            Set: Set::<Identity, OFFSET>,
            Get: Get::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMCameraControl as windows_core::Interface>::IID
    }
}
pub trait IAMCertifiedOutputProtection_Impl: Sized {
    fn KeyExchange(&self, prandom: *mut windows_core::GUID, varlencertgh: *mut *mut u8, pdwlengthcertgh: *mut u32) -> windows_core::Result<()>;
    fn SessionSequenceStart(&self, psig: *const AMCOPPSignature) -> windows_core::Result<()>;
    fn ProtectionCommand(&self, cmd: *const AMCOPPCommand) -> windows_core::Result<()>;
    fn ProtectionStatus(&self, pstatusinput: *const AMCOPPStatusInput, pstatusoutput: *mut AMCOPPStatusOutput) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMCertifiedOutputProtection {}
impl IAMCertifiedOutputProtection_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMCertifiedOutputProtection_Vtbl
    where
        Identity: IAMCertifiedOutputProtection_Impl,
    {
        unsafe extern "system" fn KeyExchange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prandom: *mut windows_core::GUID, varlencertgh: *mut *mut u8, pdwlengthcertgh: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMCertifiedOutputProtection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCertifiedOutputProtection_Impl::KeyExchange(this, core::mem::transmute_copy(&prandom), core::mem::transmute_copy(&varlencertgh), core::mem::transmute_copy(&pdwlengthcertgh)).into()
        }
        unsafe extern "system" fn SessionSequenceStart<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psig: *const AMCOPPSignature) -> windows_core::HRESULT
        where
            Identity: IAMCertifiedOutputProtection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCertifiedOutputProtection_Impl::SessionSequenceStart(this, core::mem::transmute_copy(&psig)).into()
        }
        unsafe extern "system" fn ProtectionCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmd: *const AMCOPPCommand) -> windows_core::HRESULT
        where
            Identity: IAMCertifiedOutputProtection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCertifiedOutputProtection_Impl::ProtectionCommand(this, core::mem::transmute_copy(&cmd)).into()
        }
        unsafe extern "system" fn ProtectionStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstatusinput: *const AMCOPPStatusInput, pstatusoutput: *mut AMCOPPStatusOutput) -> windows_core::HRESULT
        where
            Identity: IAMCertifiedOutputProtection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCertifiedOutputProtection_Impl::ProtectionStatus(this, core::mem::transmute_copy(&pstatusinput), core::mem::transmute_copy(&pstatusoutput)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            KeyExchange: KeyExchange::<Identity, OFFSET>,
            SessionSequenceStart: SessionSequenceStart::<Identity, OFFSET>,
            ProtectionCommand: ProtectionCommand::<Identity, OFFSET>,
            ProtectionStatus: ProtectionStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMCertifiedOutputProtection as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMChannelInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn ChannelName(&self, pbstrchannelname: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn ChannelDescription(&self, pbstrchanneldescription: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn ChannelURL(&self, pbstrchannelurl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn ContactAddress(&self, pbstrcontactaddress: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn ContactPhone(&self, pbstrcontactphone: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn ContactEmail(&self, pbstrcontactemail: *mut windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMChannelInfo {}
#[cfg(feature = "Win32_System_Com")]
impl IAMChannelInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMChannelInfo_Vtbl
    where
        Identity: IAMChannelInfo_Impl,
    {
        unsafe extern "system" fn ChannelName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrchannelname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMChannelInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMChannelInfo_Impl::ChannelName(this, core::mem::transmute_copy(&pbstrchannelname)).into()
        }
        unsafe extern "system" fn ChannelDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrchanneldescription: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMChannelInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMChannelInfo_Impl::ChannelDescription(this, core::mem::transmute_copy(&pbstrchanneldescription)).into()
        }
        unsafe extern "system" fn ChannelURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrchannelurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMChannelInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMChannelInfo_Impl::ChannelURL(this, core::mem::transmute_copy(&pbstrchannelurl)).into()
        }
        unsafe extern "system" fn ContactAddress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcontactaddress: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMChannelInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMChannelInfo_Impl::ContactAddress(this, core::mem::transmute_copy(&pbstrcontactaddress)).into()
        }
        unsafe extern "system" fn ContactPhone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcontactphone: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMChannelInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMChannelInfo_Impl::ContactPhone(this, core::mem::transmute_copy(&pbstrcontactphone)).into()
        }
        unsafe extern "system" fn ContactEmail<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcontactemail: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMChannelInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMChannelInfo_Impl::ContactEmail(this, core::mem::transmute_copy(&pbstrcontactemail)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            ChannelName: ChannelName::<Identity, OFFSET>,
            ChannelDescription: ChannelDescription::<Identity, OFFSET>,
            ChannelURL: ChannelURL::<Identity, OFFSET>,
            ContactAddress: ContactAddress::<Identity, OFFSET>,
            ContactPhone: ContactPhone::<Identity, OFFSET>,
            ContactEmail: ContactEmail::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMChannelInfo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IAMClockAdjust_Impl: Sized {
    fn SetClockDelta(&self, rtdelta: i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMClockAdjust {}
impl IAMClockAdjust_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMClockAdjust_Vtbl
    where
        Identity: IAMClockAdjust_Impl,
    {
        unsafe extern "system" fn SetClockDelta<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtdelta: i64) -> windows_core::HRESULT
        where
            Identity: IAMClockAdjust_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMClockAdjust_Impl::SetClockDelta(this, core::mem::transmute_copy(&rtdelta)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetClockDelta: SetClockDelta::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMClockAdjust as windows_core::Interface>::IID
    }
}
pub trait IAMClockSlave_Impl: Sized {
    fn SetErrorTolerance(&self, dwtolerance: u32) -> windows_core::Result<()>;
    fn GetErrorTolerance(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IAMClockSlave {}
impl IAMClockSlave_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMClockSlave_Vtbl
    where
        Identity: IAMClockSlave_Impl,
    {
        unsafe extern "system" fn SetErrorTolerance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtolerance: u32) -> windows_core::HRESULT
        where
            Identity: IAMClockSlave_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMClockSlave_Impl::SetErrorTolerance(this, core::mem::transmute_copy(&dwtolerance)).into()
        }
        unsafe extern "system" fn GetErrorTolerance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwtolerance: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMClockSlave_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMClockSlave_Impl::GetErrorTolerance(this) {
                Ok(ok__) => {
                    pdwtolerance.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetErrorTolerance: SetErrorTolerance::<Identity, OFFSET>,
            GetErrorTolerance: GetErrorTolerance::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMClockSlave as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMCollection_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Item(&self, litem: i32) -> windows_core::Result<windows_core::IUnknown>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMCollection {}
#[cfg(feature = "Win32_System_Com")]
impl IAMCollection_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMCollection_Vtbl
    where
        Identity: IAMCollection_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMCollection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMCollection_Impl::Count(this) {
                Ok(ok__) => {
                    plcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Item<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, litem: i32, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMCollection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMCollection_Impl::Item(this, core::mem::transmute_copy(&litem)) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMCollection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMCollection_Impl::_NewEnum(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMCollection as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IAMCopyCaptureFileProgress_Impl: Sized {
    fn Progress(&self, iprogress: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMCopyCaptureFileProgress {}
impl IAMCopyCaptureFileProgress_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMCopyCaptureFileProgress_Vtbl
    where
        Identity: IAMCopyCaptureFileProgress_Impl,
    {
        unsafe extern "system" fn Progress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iprogress: i32) -> windows_core::HRESULT
        where
            Identity: IAMCopyCaptureFileProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCopyCaptureFileProgress_Impl::Progress(this, core::mem::transmute_copy(&iprogress)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Progress: Progress::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMCopyCaptureFileProgress as windows_core::Interface>::IID
    }
}
pub trait IAMCrossbar_Impl: Sized {
    fn get_PinCounts(&self, outputpincount: *mut i32, inputpincount: *mut i32) -> windows_core::Result<()>;
    fn CanRoute(&self, outputpinindex: i32, inputpinindex: i32) -> windows_core::Result<()>;
    fn Route(&self, outputpinindex: i32, inputpinindex: i32) -> windows_core::Result<()>;
    fn get_IsRoutedTo(&self, outputpinindex: i32) -> windows_core::Result<i32>;
    fn get_CrossbarPinInfo(&self, isinputpin: super::super::Foundation::BOOL, pinindex: i32, pinindexrelated: *mut i32, physicaltype: *mut i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMCrossbar {}
impl IAMCrossbar_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMCrossbar_Vtbl
    where
        Identity: IAMCrossbar_Impl,
    {
        unsafe extern "system" fn get_PinCounts<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputpincount: *mut i32, inputpincount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMCrossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCrossbar_Impl::get_PinCounts(this, core::mem::transmute_copy(&outputpincount), core::mem::transmute_copy(&inputpincount)).into()
        }
        unsafe extern "system" fn CanRoute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputpinindex: i32, inputpinindex: i32) -> windows_core::HRESULT
        where
            Identity: IAMCrossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCrossbar_Impl::CanRoute(this, core::mem::transmute_copy(&outputpinindex), core::mem::transmute_copy(&inputpinindex)).into()
        }
        unsafe extern "system" fn Route<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputpinindex: i32, inputpinindex: i32) -> windows_core::HRESULT
        where
            Identity: IAMCrossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCrossbar_Impl::Route(this, core::mem::transmute_copy(&outputpinindex), core::mem::transmute_copy(&inputpinindex)).into()
        }
        unsafe extern "system" fn get_IsRoutedTo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputpinindex: i32, inputpinindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMCrossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMCrossbar_Impl::get_IsRoutedTo(this, core::mem::transmute_copy(&outputpinindex)) {
                Ok(ok__) => {
                    inputpinindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn get_CrossbarPinInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, isinputpin: super::super::Foundation::BOOL, pinindex: i32, pinindexrelated: *mut i32, physicaltype: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMCrossbar_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMCrossbar_Impl::get_CrossbarPinInfo(this, core::mem::transmute_copy(&isinputpin), core::mem::transmute_copy(&pinindex), core::mem::transmute_copy(&pinindexrelated), core::mem::transmute_copy(&physicaltype)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_PinCounts: get_PinCounts::<Identity, OFFSET>,
            CanRoute: CanRoute::<Identity, OFFSET>,
            Route: Route::<Identity, OFFSET>,
            get_IsRoutedTo: get_IsRoutedTo::<Identity, OFFSET>,
            get_CrossbarPinInfo: get_CrossbarPinInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMCrossbar as windows_core::Interface>::IID
    }
}
pub trait IAMDecoderCaps_Impl: Sized {
    fn GetDecoderCaps(&self, dwcapindex: u32) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IAMDecoderCaps {}
impl IAMDecoderCaps_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMDecoderCaps_Vtbl
    where
        Identity: IAMDecoderCaps_Impl,
    {
        unsafe extern "system" fn GetDecoderCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcapindex: u32, lpdwcap: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMDecoderCaps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDecoderCaps_Impl::GetDecoderCaps(this, core::mem::transmute_copy(&dwcapindex)) {
                Ok(ok__) => {
                    lpdwcap.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDecoderCaps: GetDecoderCaps::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMDecoderCaps as windows_core::Interface>::IID
    }
}
pub trait IAMDevMemoryAllocator_Impl: Sized {
    fn GetInfo(&self, pdwcbtotalfree: *mut u32, pdwcblargestfree: *mut u32, pdwcbtotalmemory: *mut u32, pdwcbminimumchunk: *mut u32) -> windows_core::Result<()>;
    fn CheckMemory(&self, pbuffer: *const u8) -> windows_core::Result<()>;
    fn Alloc(&self, ppbuffer: *mut *mut u8, pdwcbbuffer: *mut u32) -> windows_core::Result<()>;
    fn Free(&self, pbuffer: *const u8) -> windows_core::Result<()>;
    fn GetDevMemoryObject(&self, ppunkinnner: *mut Option<windows_core::IUnknown>, punkouter: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMDevMemoryAllocator {}
impl IAMDevMemoryAllocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMDevMemoryAllocator_Vtbl
    where
        Identity: IAMDevMemoryAllocator_Impl,
    {
        unsafe extern "system" fn GetInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcbtotalfree: *mut u32, pdwcblargestfree: *mut u32, pdwcbtotalmemory: *mut u32, pdwcbminimumchunk: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryAllocator_Impl::GetInfo(this, core::mem::transmute_copy(&pdwcbtotalfree), core::mem::transmute_copy(&pdwcblargestfree), core::mem::transmute_copy(&pdwcbtotalmemory), core::mem::transmute_copy(&pdwcbminimumchunk)).into()
        }
        unsafe extern "system" fn CheckMemory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbuffer: *const u8) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryAllocator_Impl::CheckMemory(this, core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn Alloc<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbuffer: *mut *mut u8, pdwcbbuffer: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryAllocator_Impl::Alloc(this, core::mem::transmute_copy(&ppbuffer), core::mem::transmute_copy(&pdwcbbuffer)).into()
        }
        unsafe extern "system" fn Free<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbuffer: *const u8) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryAllocator_Impl::Free(this, core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn GetDevMemoryObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunkinnner: *mut *mut core::ffi::c_void, punkouter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryAllocator_Impl::GetDevMemoryObject(this, core::mem::transmute_copy(&ppunkinnner), windows_core::from_raw_borrowed(&punkouter)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInfo: GetInfo::<Identity, OFFSET>,
            CheckMemory: CheckMemory::<Identity, OFFSET>,
            Alloc: Alloc::<Identity, OFFSET>,
            Free: Free::<Identity, OFFSET>,
            GetDevMemoryObject: GetDevMemoryObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMDevMemoryAllocator as windows_core::Interface>::IID
    }
}
pub trait IAMDevMemoryControl_Impl: Sized {
    fn QueryWriteSync(&self) -> windows_core::Result<()>;
    fn WriteSync(&self) -> windows_core::Result<()>;
    fn GetDevId(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IAMDevMemoryControl {}
impl IAMDevMemoryControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMDevMemoryControl_Vtbl
    where
        Identity: IAMDevMemoryControl_Impl,
    {
        unsafe extern "system" fn QueryWriteSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryControl_Impl::QueryWriteSync(this).into()
        }
        unsafe extern "system" fn WriteSync<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDevMemoryControl_Impl::WriteSync(this).into()
        }
        unsafe extern "system" fn GetDevId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwdevid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMDevMemoryControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDevMemoryControl_Impl::GetDevId(this) {
                Ok(ok__) => {
                    pdwdevid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryWriteSync: QueryWriteSync::<Identity, OFFSET>,
            WriteSync: WriteSync::<Identity, OFFSET>,
            GetDevId: GetDevId::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMDevMemoryControl as windows_core::Interface>::IID
    }
}
pub trait IAMDeviceRemoval_Impl: Sized {
    fn DeviceInfo(&self, pclsidinterfaceclass: *mut windows_core::GUID, pwszsymboliclink: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn Reassociate(&self) -> windows_core::Result<()>;
    fn Disassociate(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMDeviceRemoval {}
impl IAMDeviceRemoval_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMDeviceRemoval_Vtbl
    where
        Identity: IAMDeviceRemoval_Impl,
    {
        unsafe extern "system" fn DeviceInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclsidinterfaceclass: *mut windows_core::GUID, pwszsymboliclink: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAMDeviceRemoval_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDeviceRemoval_Impl::DeviceInfo(this, core::mem::transmute_copy(&pclsidinterfaceclass), core::mem::transmute_copy(&pwszsymboliclink)).into()
        }
        unsafe extern "system" fn Reassociate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDeviceRemoval_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDeviceRemoval_Impl::Reassociate(this).into()
        }
        unsafe extern "system" fn Disassociate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDeviceRemoval_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDeviceRemoval_Impl::Disassociate(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DeviceInfo: DeviceInfo::<Identity, OFFSET>,
            Reassociate: Reassociate::<Identity, OFFSET>,
            Disassociate: Disassociate::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMDeviceRemoval as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_Audio_DirectSound")]
pub trait IAMDirectSound_Impl: Sized {
    fn GetDirectSoundInterface(&self) -> windows_core::Result<super::Audio::DirectSound::IDirectSound>;
    fn GetPrimaryBufferInterface(&self) -> windows_core::Result<super::Audio::DirectSound::IDirectSoundBuffer>;
    fn GetSecondaryBufferInterface(&self) -> windows_core::Result<super::Audio::DirectSound::IDirectSoundBuffer>;
    fn ReleaseDirectSoundInterface(&self, lpds: Option<&super::Audio::DirectSound::IDirectSound>) -> windows_core::Result<()>;
    fn ReleasePrimaryBufferInterface(&self, lpdsb: Option<&super::Audio::DirectSound::IDirectSoundBuffer>) -> windows_core::Result<()>;
    fn ReleaseSecondaryBufferInterface(&self, lpdsb: Option<&super::Audio::DirectSound::IDirectSoundBuffer>) -> windows_core::Result<()>;
    fn SetFocusWindow(&self, param0: super::super::Foundation::HWND, param1: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetFocusWindow(&self, param0: *mut super::super::Foundation::HWND, param1: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_Audio_DirectSound")]
impl windows_core::RuntimeName for IAMDirectSound {}
#[cfg(feature = "Win32_Media_Audio_DirectSound")]
impl IAMDirectSound_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMDirectSound_Vtbl
    where
        Identity: IAMDirectSound_Impl,
    {
        unsafe extern "system" fn GetDirectSoundInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplpds: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDirectSound_Impl::GetDirectSoundInterface(this) {
                Ok(ok__) => {
                    lplpds.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPrimaryBufferInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplpdsb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDirectSound_Impl::GetPrimaryBufferInterface(this) {
                Ok(ok__) => {
                    lplpdsb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSecondaryBufferInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplpdsb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDirectSound_Impl::GetSecondaryBufferInterface(this) {
                Ok(ok__) => {
                    lplpdsb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReleaseDirectSoundInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpds: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDirectSound_Impl::ReleaseDirectSoundInterface(this, windows_core::from_raw_borrowed(&lpds)).into()
        }
        unsafe extern "system" fn ReleasePrimaryBufferInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdsb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDirectSound_Impl::ReleasePrimaryBufferInterface(this, windows_core::from_raw_borrowed(&lpdsb)).into()
        }
        unsafe extern "system" fn ReleaseSecondaryBufferInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdsb: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDirectSound_Impl::ReleaseSecondaryBufferInterface(this, windows_core::from_raw_borrowed(&lpdsb)).into()
        }
        unsafe extern "system" fn SetFocusWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param0: super::super::Foundation::HWND, param1: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDirectSound_Impl::SetFocusWindow(this, core::mem::transmute_copy(&param0), core::mem::transmute_copy(&param1)).into()
        }
        unsafe extern "system" fn GetFocusWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param0: *mut super::super::Foundation::HWND, param1: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMDirectSound_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDirectSound_Impl::GetFocusWindow(this, core::mem::transmute_copy(&param0), core::mem::transmute_copy(&param1)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDirectSoundInterface: GetDirectSoundInterface::<Identity, OFFSET>,
            GetPrimaryBufferInterface: GetPrimaryBufferInterface::<Identity, OFFSET>,
            GetSecondaryBufferInterface: GetSecondaryBufferInterface::<Identity, OFFSET>,
            ReleaseDirectSoundInterface: ReleaseDirectSoundInterface::<Identity, OFFSET>,
            ReleasePrimaryBufferInterface: ReleasePrimaryBufferInterface::<Identity, OFFSET>,
            ReleaseSecondaryBufferInterface: ReleaseSecondaryBufferInterface::<Identity, OFFSET>,
            SetFocusWindow: SetFocusWindow::<Identity, OFFSET>,
            GetFocusWindow: GetFocusWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMDirectSound as windows_core::Interface>::IID
    }
}
pub trait IAMDroppedFrames_Impl: Sized {
    fn GetNumDropped(&self) -> windows_core::Result<i32>;
    fn GetNumNotDropped(&self) -> windows_core::Result<i32>;
    fn GetDroppedInfo(&self, lsize: i32, plarray: *mut i32, plnumcopied: *mut i32) -> windows_core::Result<()>;
    fn GetAverageFrameSize(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IAMDroppedFrames {}
impl IAMDroppedFrames_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMDroppedFrames_Vtbl
    where
        Identity: IAMDroppedFrames_Impl,
    {
        unsafe extern "system" fn GetNumDropped<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pldropped: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMDroppedFrames_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDroppedFrames_Impl::GetNumDropped(this) {
                Ok(ok__) => {
                    pldropped.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumNotDropped<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plnotdropped: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMDroppedFrames_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDroppedFrames_Impl::GetNumNotDropped(this) {
                Ok(ok__) => {
                    plnotdropped.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDroppedInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lsize: i32, plarray: *mut i32, plnumcopied: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMDroppedFrames_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMDroppedFrames_Impl::GetDroppedInfo(this, core::mem::transmute_copy(&lsize), core::mem::transmute_copy(&plarray), core::mem::transmute_copy(&plnumcopied)).into()
        }
        unsafe extern "system" fn GetAverageFrameSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plaveragesize: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMDroppedFrames_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMDroppedFrames_Impl::GetAverageFrameSize(this) {
                Ok(ok__) => {
                    plaveragesize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumDropped: GetNumDropped::<Identity, OFFSET>,
            GetNumNotDropped: GetNumNotDropped::<Identity, OFFSET>,
            GetDroppedInfo: GetDroppedInfo::<Identity, OFFSET>,
            GetAverageFrameSize: GetAverageFrameSize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMDroppedFrames as windows_core::Interface>::IID
    }
}
pub trait IAMExtDevice_Impl: Sized {
    fn GetCapability(&self, capability: i32, pvalue: *mut i32, pdblvalue: *mut f64) -> windows_core::Result<()>;
    fn ExternalDeviceID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn ExternalDeviceVersion(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn SetDevicePower(&self, powermode: i32) -> windows_core::Result<()>;
    fn DevicePower(&self) -> windows_core::Result<i32>;
    fn Calibrate(&self, hevent: usize, mode: i32) -> windows_core::Result<i32>;
    fn SetDevicePort(&self, deviceport: i32) -> windows_core::Result<()>;
    fn DevicePort(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IAMExtDevice {}
impl IAMExtDevice_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMExtDevice_Vtbl
    where
        Identity: IAMExtDevice_Impl,
    {
        unsafe extern "system" fn GetCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, capability: i32, pvalue: *mut i32, pdblvalue: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtDevice_Impl::GetCapability(this, core::mem::transmute_copy(&capability), core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pdblvalue)).into()
        }
        unsafe extern "system" fn ExternalDeviceID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszdata: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtDevice_Impl::ExternalDeviceID(this) {
                Ok(ok__) => {
                    ppszdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ExternalDeviceVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszdata: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtDevice_Impl::ExternalDeviceVersion(this) {
                Ok(ok__) => {
                    ppszdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDevicePower<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, powermode: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtDevice_Impl::SetDevicePower(this, core::mem::transmute_copy(&powermode)).into()
        }
        unsafe extern "system" fn DevicePower<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppowermode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtDevice_Impl::DevicePower(this) {
                Ok(ok__) => {
                    ppowermode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Calibrate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hevent: usize, mode: i32, pstatus: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtDevice_Impl::Calibrate(this, core::mem::transmute_copy(&hevent), core::mem::transmute_copy(&mode)) {
                Ok(ok__) => {
                    pstatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDevicePort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, deviceport: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtDevice_Impl::SetDevicePort(this, core::mem::transmute_copy(&deviceport)).into()
        }
        unsafe extern "system" fn DevicePort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdeviceport: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtDevice_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtDevice_Impl::DevicePort(this) {
                Ok(ok__) => {
                    pdeviceport.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCapability: GetCapability::<Identity, OFFSET>,
            ExternalDeviceID: ExternalDeviceID::<Identity, OFFSET>,
            ExternalDeviceVersion: ExternalDeviceVersion::<Identity, OFFSET>,
            SetDevicePower: SetDevicePower::<Identity, OFFSET>,
            DevicePower: DevicePower::<Identity, OFFSET>,
            Calibrate: Calibrate::<Identity, OFFSET>,
            SetDevicePort: SetDevicePort::<Identity, OFFSET>,
            DevicePort: DevicePort::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMExtDevice as windows_core::Interface>::IID
    }
}
pub trait IAMExtTransport_Impl: Sized {
    fn GetCapability(&self, capability: i32, pvalue: *mut i32, pdblvalue: *mut f64) -> windows_core::Result<()>;
    fn SetMediaState(&self, state: i32) -> windows_core::Result<()>;
    fn MediaState(&self) -> windows_core::Result<i32>;
    fn SetLocalControl(&self, state: i32) -> windows_core::Result<()>;
    fn LocalControl(&self) -> windows_core::Result<i32>;
    fn GetStatus(&self, statusitem: i32) -> windows_core::Result<i32>;
    fn GetTransportBasicParameters(&self, param: i32, pvalue: *mut i32, ppszdata: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn SetTransportBasicParameters(&self, param: i32, value: i32, pszdata: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTransportVideoParameters(&self, param: i32) -> windows_core::Result<i32>;
    fn SetTransportVideoParameters(&self, param: i32, value: i32) -> windows_core::Result<()>;
    fn GetTransportAudioParameters(&self, param: i32) -> windows_core::Result<i32>;
    fn SetTransportAudioParameters(&self, param: i32, value: i32) -> windows_core::Result<()>;
    fn SetMode(&self, mode: i32) -> windows_core::Result<()>;
    fn Mode(&self) -> windows_core::Result<i32>;
    fn SetRate(&self, dblrate: f64) -> windows_core::Result<()>;
    fn Rate(&self) -> windows_core::Result<f64>;
    fn GetChase(&self, penabled: *mut i32, poffset: *mut i32, phevent: *mut usize) -> windows_core::Result<()>;
    fn SetChase(&self, enable: i32, offset: i32, hevent: usize) -> windows_core::Result<()>;
    fn GetBump(&self, pspeed: *mut i32, pduration: *mut i32) -> windows_core::Result<()>;
    fn SetBump(&self, speed: i32, duration: i32) -> windows_core::Result<()>;
    fn AntiClogControl(&self) -> windows_core::Result<i32>;
    fn SetAntiClogControl(&self, enable: i32) -> windows_core::Result<()>;
    fn GetEditPropertySet(&self, editid: i32) -> windows_core::Result<i32>;
    fn SetEditPropertySet(&self, peditid: *mut i32, state: i32) -> windows_core::Result<()>;
    fn GetEditProperty(&self, editid: i32, param: i32) -> windows_core::Result<i32>;
    fn SetEditProperty(&self, editid: i32, param: i32, value: i32) -> windows_core::Result<()>;
    fn EditStart(&self) -> windows_core::Result<i32>;
    fn SetEditStart(&self, value: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMExtTransport {}
impl IAMExtTransport_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMExtTransport_Vtbl
    where
        Identity: IAMExtTransport_Impl,
    {
        unsafe extern "system" fn GetCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, capability: i32, pvalue: *mut i32, pdblvalue: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::GetCapability(this, core::mem::transmute_copy(&capability), core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pdblvalue)).into()
        }
        unsafe extern "system" fn SetMediaState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetMediaState(this, core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn MediaState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::MediaState(this) {
                Ok(ok__) => {
                    pstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLocalControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetLocalControl(this, core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn LocalControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::LocalControl(this) {
                Ok(ok__) => {
                    pstate.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, statusitem: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::GetStatus(this, core::mem::transmute_copy(&statusitem)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTransportBasicParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, pvalue: *mut i32, ppszdata: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::GetTransportBasicParameters(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&ppszdata)).into()
        }
        unsafe extern "system" fn SetTransportBasicParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, value: i32, pszdata: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetTransportBasicParameters(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&value), core::mem::transmute(&pszdata)).into()
        }
        unsafe extern "system" fn GetTransportVideoParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::GetTransportVideoParameters(this, core::mem::transmute_copy(&param)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTransportVideoParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetTransportVideoParameters(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn GetTransportAudioParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::GetTransportAudioParameters(this, core::mem::transmute_copy(&param)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTransportAudioParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetTransportAudioParameters(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn Mode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::Mode(this) {
                Ok(ok__) => {
                    pmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dblrate: f64) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetRate(this, core::mem::transmute_copy(&dblrate)).into()
        }
        unsafe extern "system" fn Rate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdblrate: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::Rate(this) {
                Ok(ok__) => {
                    pdblrate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetChase<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penabled: *mut i32, poffset: *mut i32, phevent: *mut usize) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::GetChase(this, core::mem::transmute_copy(&penabled), core::mem::transmute_copy(&poffset), core::mem::transmute_copy(&phevent)).into()
        }
        unsafe extern "system" fn SetChase<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enable: i32, offset: i32, hevent: usize) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetChase(this, core::mem::transmute_copy(&enable), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&hevent)).into()
        }
        unsafe extern "system" fn GetBump<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pspeed: *mut i32, pduration: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::GetBump(this, core::mem::transmute_copy(&pspeed), core::mem::transmute_copy(&pduration)).into()
        }
        unsafe extern "system" fn SetBump<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, speed: i32, duration: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetBump(this, core::mem::transmute_copy(&speed), core::mem::transmute_copy(&duration)).into()
        }
        unsafe extern "system" fn AntiClogControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penabled: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::AntiClogControl(this) {
                Ok(ok__) => {
                    penabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAntiClogControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enable: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetAntiClogControl(this, core::mem::transmute_copy(&enable)).into()
        }
        unsafe extern "system" fn GetEditPropertySet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, editid: i32, pstate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::GetEditPropertySet(this, core::mem::transmute_copy(&editid)) {
                Ok(ok__) => {
                    pstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditPropertySet<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, peditid: *mut i32, state: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetEditPropertySet(this, core::mem::transmute_copy(&peditid), core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetEditProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, editid: i32, param: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::GetEditProperty(this, core::mem::transmute_copy(&editid), core::mem::transmute_copy(&param)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, editid: i32, param: i32, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetEditProperty(this, core::mem::transmute_copy(&editid), core::mem::transmute_copy(&param), core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn EditStart<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMExtTransport_Impl::EditStart(this) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetEditStart<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMExtTransport_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtTransport_Impl::SetEditStart(this, core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCapability: GetCapability::<Identity, OFFSET>,
            SetMediaState: SetMediaState::<Identity, OFFSET>,
            MediaState: MediaState::<Identity, OFFSET>,
            SetLocalControl: SetLocalControl::<Identity, OFFSET>,
            LocalControl: LocalControl::<Identity, OFFSET>,
            GetStatus: GetStatus::<Identity, OFFSET>,
            GetTransportBasicParameters: GetTransportBasicParameters::<Identity, OFFSET>,
            SetTransportBasicParameters: SetTransportBasicParameters::<Identity, OFFSET>,
            GetTransportVideoParameters: GetTransportVideoParameters::<Identity, OFFSET>,
            SetTransportVideoParameters: SetTransportVideoParameters::<Identity, OFFSET>,
            GetTransportAudioParameters: GetTransportAudioParameters::<Identity, OFFSET>,
            SetTransportAudioParameters: SetTransportAudioParameters::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            Mode: Mode::<Identity, OFFSET>,
            SetRate: SetRate::<Identity, OFFSET>,
            Rate: Rate::<Identity, OFFSET>,
            GetChase: GetChase::<Identity, OFFSET>,
            SetChase: SetChase::<Identity, OFFSET>,
            GetBump: GetBump::<Identity, OFFSET>,
            SetBump: SetBump::<Identity, OFFSET>,
            AntiClogControl: AntiClogControl::<Identity, OFFSET>,
            SetAntiClogControl: SetAntiClogControl::<Identity, OFFSET>,
            GetEditPropertySet: GetEditPropertySet::<Identity, OFFSET>,
            SetEditPropertySet: SetEditPropertySet::<Identity, OFFSET>,
            GetEditProperty: GetEditProperty::<Identity, OFFSET>,
            SetEditProperty: SetEditProperty::<Identity, OFFSET>,
            EditStart: EditStart::<Identity, OFFSET>,
            SetEditStart: SetEditStart::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMExtTransport as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMExtendedErrorInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn HasError(&self, phaserror: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ErrorDescription(&self, pbstrerrordescription: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn ErrorCode(&self, perrorcode: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMExtendedErrorInfo {}
#[cfg(feature = "Win32_System_Com")]
impl IAMExtendedErrorInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMExtendedErrorInfo_Vtbl
    where
        Identity: IAMExtendedErrorInfo_Impl,
    {
        unsafe extern "system" fn HasError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phaserror: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMExtendedErrorInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedErrorInfo_Impl::HasError(this, core::mem::transmute_copy(&phaserror)).into()
        }
        unsafe extern "system" fn ErrorDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrerrordescription: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMExtendedErrorInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedErrorInfo_Impl::ErrorDescription(this, core::mem::transmute_copy(&pbstrerrordescription)).into()
        }
        unsafe extern "system" fn ErrorCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, perrorcode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtendedErrorInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedErrorInfo_Impl::ErrorCode(this, core::mem::transmute_copy(&perrorcode)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            HasError: HasError::<Identity, OFFSET>,
            ErrorDescription: ErrorDescription::<Identity, OFFSET>,
            ErrorCode: ErrorCode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMExtendedErrorInfo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMExtendedSeeking_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn ExSeekCapabilities(&self, pexcapabilities: *mut i32) -> windows_core::Result<()>;
    fn MarkerCount(&self, pmarkercount: *mut i32) -> windows_core::Result<()>;
    fn CurrentMarker(&self, pcurrentmarker: *mut i32) -> windows_core::Result<()>;
    fn GetMarkerTime(&self, markernum: i32, pmarkertime: *mut f64) -> windows_core::Result<()>;
    fn GetMarkerName(&self, markernum: i32, pbstrmarkername: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn SetPlaybackSpeed(&self, speed: f64) -> windows_core::Result<()>;
    fn PlaybackSpeed(&self, pspeed: *mut f64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMExtendedSeeking {}
#[cfg(feature = "Win32_System_Com")]
impl IAMExtendedSeeking_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMExtendedSeeking_Vtbl
    where
        Identity: IAMExtendedSeeking_Impl,
    {
        unsafe extern "system" fn ExSeekCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pexcapabilities: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::ExSeekCapabilities(this, core::mem::transmute_copy(&pexcapabilities)).into()
        }
        unsafe extern "system" fn MarkerCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmarkercount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::MarkerCount(this, core::mem::transmute_copy(&pmarkercount)).into()
        }
        unsafe extern "system" fn CurrentMarker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrentmarker: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::CurrentMarker(this, core::mem::transmute_copy(&pcurrentmarker)).into()
        }
        unsafe extern "system" fn GetMarkerTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, markernum: i32, pmarkertime: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::GetMarkerTime(this, core::mem::transmute_copy(&markernum), core::mem::transmute_copy(&pmarkertime)).into()
        }
        unsafe extern "system" fn GetMarkerName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, markernum: i32, pbstrmarkername: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::GetMarkerName(this, core::mem::transmute_copy(&markernum), core::mem::transmute_copy(&pbstrmarkername)).into()
        }
        unsafe extern "system" fn SetPlaybackSpeed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, speed: f64) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::SetPlaybackSpeed(this, core::mem::transmute_copy(&speed)).into()
        }
        unsafe extern "system" fn PlaybackSpeed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pspeed: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMExtendedSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMExtendedSeeking_Impl::PlaybackSpeed(this, core::mem::transmute_copy(&pspeed)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            ExSeekCapabilities: ExSeekCapabilities::<Identity, OFFSET>,
            MarkerCount: MarkerCount::<Identity, OFFSET>,
            CurrentMarker: CurrentMarker::<Identity, OFFSET>,
            GetMarkerTime: GetMarkerTime::<Identity, OFFSET>,
            GetMarkerName: GetMarkerName::<Identity, OFFSET>,
            SetPlaybackSpeed: SetPlaybackSpeed::<Identity, OFFSET>,
            PlaybackSpeed: PlaybackSpeed::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMExtendedSeeking as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IAMFilterGraphCallback_Impl: Sized {
    fn UnableToRender(&self, ppin: Option<&IPin>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMFilterGraphCallback {}
impl IAMFilterGraphCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMFilterGraphCallback_Vtbl
    where
        Identity: IAMFilterGraphCallback_Impl,
    {
        unsafe extern "system" fn UnableToRender<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMFilterGraphCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMFilterGraphCallback_Impl::UnableToRender(this, windows_core::from_raw_borrowed(&ppin)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), UnableToRender: UnableToRender::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMFilterGraphCallback as windows_core::Interface>::IID
    }
}
pub trait IAMFilterMiscFlags_Impl: Sized {
    fn GetMiscFlags(&self) -> u32;
}
impl windows_core::RuntimeName for IAMFilterMiscFlags {}
impl IAMFilterMiscFlags_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMFilterMiscFlags_Vtbl
    where
        Identity: IAMFilterMiscFlags_Impl,
    {
        unsafe extern "system" fn GetMiscFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32
        where
            Identity: IAMFilterMiscFlags_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMFilterMiscFlags_Impl::GetMiscFlags(this)
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetMiscFlags: GetMiscFlags::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMFilterMiscFlags as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMGraphBuilderCallback_Impl: Sized {
    fn SelectedFilter(&self, pmon: Option<&super::super::System::Com::IMoniker>) -> windows_core::Result<()>;
    fn CreatedFilter(&self, pfil: Option<&IBaseFilter>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMGraphBuilderCallback {}
#[cfg(feature = "Win32_System_Com")]
impl IAMGraphBuilderCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMGraphBuilderCallback_Vtbl
    where
        Identity: IAMGraphBuilderCallback_Impl,
    {
        unsafe extern "system" fn SelectedFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmon: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMGraphBuilderCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMGraphBuilderCallback_Impl::SelectedFilter(this, windows_core::from_raw_borrowed(&pmon)).into()
        }
        unsafe extern "system" fn CreatedFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfil: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMGraphBuilderCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMGraphBuilderCallback_Impl::CreatedFilter(this, windows_core::from_raw_borrowed(&pfil)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SelectedFilter: SelectedFilter::<Identity, OFFSET>,
            CreatedFilter: CreatedFilter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMGraphBuilderCallback as windows_core::Interface>::IID
    }
}
pub trait IAMGraphStreams_Impl: Sized {
    fn FindUpstreamInterface(&self, ppin: Option<&IPin>, riid: *const windows_core::GUID, ppvinterface: *mut *mut core::ffi::c_void, dwflags: u32) -> windows_core::Result<()>;
    fn SyncUsingStreamOffset(&self, busestreamoffset: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetMaxGraphLatency(&self, rtmaxgraphlatency: i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMGraphStreams {}
impl IAMGraphStreams_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMGraphStreams_Vtbl
    where
        Identity: IAMGraphStreams_Impl,
    {
        unsafe extern "system" fn FindUpstreamInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppvinterface: *mut *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMGraphStreams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMGraphStreams_Impl::FindUpstreamInterface(this, windows_core::from_raw_borrowed(&ppin), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvinterface), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SyncUsingStreamOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, busestreamoffset: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMGraphStreams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMGraphStreams_Impl::SyncUsingStreamOffset(this, core::mem::transmute_copy(&busestreamoffset)).into()
        }
        unsafe extern "system" fn SetMaxGraphLatency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtmaxgraphlatency: i64) -> windows_core::HRESULT
        where
            Identity: IAMGraphStreams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMGraphStreams_Impl::SetMaxGraphLatency(this, core::mem::transmute_copy(&rtmaxgraphlatency)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindUpstreamInterface: FindUpstreamInterface::<Identity, OFFSET>,
            SyncUsingStreamOffset: SyncUsingStreamOffset::<Identity, OFFSET>,
            SetMaxGraphLatency: SetMaxGraphLatency::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMGraphStreams as windows_core::Interface>::IID
    }
}
pub trait IAMLatency_Impl: Sized {
    fn GetLatency(&self) -> windows_core::Result<i64>;
}
impl windows_core::RuntimeName for IAMLatency {}
impl IAMLatency_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMLatency_Vtbl
    where
        Identity: IAMLatency_Impl,
    {
        unsafe extern "system" fn GetLatency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtlatency: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMLatency_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMLatency_Impl::GetLatency(this) {
                Ok(ok__) => {
                    prtlatency.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetLatency: GetLatency::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMLatency as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAMLine21Decoder_Impl: Sized {
    fn GetDecoderLevel(&self, lplevel: *mut AM_LINE21_CCLEVEL) -> windows_core::Result<()>;
    fn GetCurrentService(&self, lpservice: *mut AM_LINE21_CCSERVICE) -> windows_core::Result<()>;
    fn SetCurrentService(&self, service: AM_LINE21_CCSERVICE) -> windows_core::Result<()>;
    fn GetServiceState(&self, lpstate: *mut AM_LINE21_CCSTATE) -> windows_core::Result<()>;
    fn SetServiceState(&self, state: AM_LINE21_CCSTATE) -> windows_core::Result<()>;
    fn GetOutputFormat(&self, lpbmih: *mut super::super::Graphics::Gdi::BITMAPINFOHEADER) -> windows_core::Result<()>;
    fn SetOutputFormat(&self, lpbmi: *mut super::super::Graphics::Gdi::BITMAPINFO) -> windows_core::Result<()>;
    fn GetBackgroundColor(&self, pdwphyscolor: *mut u32) -> windows_core::Result<()>;
    fn SetBackgroundColor(&self, dwphyscolor: u32) -> windows_core::Result<()>;
    fn GetRedrawAlways(&self, lpboption: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetRedrawAlways(&self, boption: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetDrawBackgroundMode(&self, lpmode: *mut AM_LINE21_DRAWBGMODE) -> windows_core::Result<()>;
    fn SetDrawBackgroundMode(&self, mode: AM_LINE21_DRAWBGMODE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAMLine21Decoder {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAMLine21Decoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMLine21Decoder_Vtbl
    where
        Identity: IAMLine21Decoder_Impl,
    {
        unsafe extern "system" fn GetDecoderLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplevel: *mut AM_LINE21_CCLEVEL) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetDecoderLevel(this, core::mem::transmute_copy(&lplevel)).into()
        }
        unsafe extern "system" fn GetCurrentService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpservice: *mut AM_LINE21_CCSERVICE) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetCurrentService(this, core::mem::transmute_copy(&lpservice)).into()
        }
        unsafe extern "system" fn SetCurrentService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, service: AM_LINE21_CCSERVICE) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::SetCurrentService(this, core::mem::transmute_copy(&service)).into()
        }
        unsafe extern "system" fn GetServiceState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpstate: *mut AM_LINE21_CCSTATE) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetServiceState(this, core::mem::transmute_copy(&lpstate)).into()
        }
        unsafe extern "system" fn SetServiceState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: AM_LINE21_CCSTATE) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::SetServiceState(this, core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetOutputFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbmih: *mut super::super::Graphics::Gdi::BITMAPINFOHEADER) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetOutputFormat(this, core::mem::transmute_copy(&lpbmih)).into()
        }
        unsafe extern "system" fn SetOutputFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbmi: *mut super::super::Graphics::Gdi::BITMAPINFO) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::SetOutputFormat(this, core::mem::transmute_copy(&lpbmi)).into()
        }
        unsafe extern "system" fn GetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwphyscolor: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetBackgroundColor(this, core::mem::transmute_copy(&pdwphyscolor)).into()
        }
        unsafe extern "system" fn SetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwphyscolor: u32) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::SetBackgroundColor(this, core::mem::transmute_copy(&dwphyscolor)).into()
        }
        unsafe extern "system" fn GetRedrawAlways<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpboption: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetRedrawAlways(this, core::mem::transmute_copy(&lpboption)).into()
        }
        unsafe extern "system" fn SetRedrawAlways<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, boption: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::SetRedrawAlways(this, core::mem::transmute_copy(&boption)).into()
        }
        unsafe extern "system" fn GetDrawBackgroundMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpmode: *mut AM_LINE21_DRAWBGMODE) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::GetDrawBackgroundMode(this, core::mem::transmute_copy(&lpmode)).into()
        }
        unsafe extern "system" fn SetDrawBackgroundMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: AM_LINE21_DRAWBGMODE) -> windows_core::HRESULT
        where
            Identity: IAMLine21Decoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMLine21Decoder_Impl::SetDrawBackgroundMode(this, core::mem::transmute_copy(&mode)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDecoderLevel: GetDecoderLevel::<Identity, OFFSET>,
            GetCurrentService: GetCurrentService::<Identity, OFFSET>,
            SetCurrentService: SetCurrentService::<Identity, OFFSET>,
            GetServiceState: GetServiceState::<Identity, OFFSET>,
            SetServiceState: SetServiceState::<Identity, OFFSET>,
            GetOutputFormat: GetOutputFormat::<Identity, OFFSET>,
            SetOutputFormat: SetOutputFormat::<Identity, OFFSET>,
            GetBackgroundColor: GetBackgroundColor::<Identity, OFFSET>,
            SetBackgroundColor: SetBackgroundColor::<Identity, OFFSET>,
            GetRedrawAlways: GetRedrawAlways::<Identity, OFFSET>,
            SetRedrawAlways: SetRedrawAlways::<Identity, OFFSET>,
            GetDrawBackgroundMode: GetDrawBackgroundMode::<Identity, OFFSET>,
            SetDrawBackgroundMode: SetDrawBackgroundMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMLine21Decoder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMMediaContent_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn AuthorName(&self, pbstrauthorname: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn Title(&self, pbstrtitle: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn Rating(&self, pbstrrating: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn Description(&self, pbstrdescription: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn Copyright(&self, pbstrcopyright: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn BaseURL(&self, pbstrbaseurl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn LogoURL(&self, pbstrlogourl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn LogoIconURL(&self, pbstrlogourl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn WatermarkURL(&self, pbstrwatermarkurl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn MoreInfoURL(&self, pbstrmoreinfourl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn MoreInfoBannerImage(&self, pbstrmoreinfobannerimage: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn MoreInfoBannerURL(&self, pbstrmoreinfobannerurl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn MoreInfoText(&self, pbstrmoreinfotext: *mut windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMMediaContent {}
#[cfg(feature = "Win32_System_Com")]
impl IAMMediaContent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMMediaContent_Vtbl
    where
        Identity: IAMMediaContent_Impl,
    {
        unsafe extern "system" fn AuthorName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrauthorname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::AuthorName(this, core::mem::transmute_copy(&pbstrauthorname)).into()
        }
        unsafe extern "system" fn Title<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrtitle: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::Title(this, core::mem::transmute_copy(&pbstrtitle)).into()
        }
        unsafe extern "system" fn Rating<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrrating: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::Rating(this, core::mem::transmute_copy(&pbstrrating)).into()
        }
        unsafe extern "system" fn Description<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrdescription: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::Description(this, core::mem::transmute_copy(&pbstrdescription)).into()
        }
        unsafe extern "system" fn Copyright<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcopyright: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::Copyright(this, core::mem::transmute_copy(&pbstrcopyright)).into()
        }
        unsafe extern "system" fn BaseURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrbaseurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::BaseURL(this, core::mem::transmute_copy(&pbstrbaseurl)).into()
        }
        unsafe extern "system" fn LogoURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrlogourl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::LogoURL(this, core::mem::transmute_copy(&pbstrlogourl)).into()
        }
        unsafe extern "system" fn LogoIconURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrlogourl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::LogoIconURL(this, core::mem::transmute_copy(&pbstrlogourl)).into()
        }
        unsafe extern "system" fn WatermarkURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrwatermarkurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::WatermarkURL(this, core::mem::transmute_copy(&pbstrwatermarkurl)).into()
        }
        unsafe extern "system" fn MoreInfoURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrmoreinfourl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::MoreInfoURL(this, core::mem::transmute_copy(&pbstrmoreinfourl)).into()
        }
        unsafe extern "system" fn MoreInfoBannerImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrmoreinfobannerimage: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::MoreInfoBannerImage(this, core::mem::transmute_copy(&pbstrmoreinfobannerimage)).into()
        }
        unsafe extern "system" fn MoreInfoBannerURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrmoreinfobannerurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::MoreInfoBannerURL(this, core::mem::transmute_copy(&pbstrmoreinfobannerurl)).into()
        }
        unsafe extern "system" fn MoreInfoText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrmoreinfotext: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent_Impl::MoreInfoText(this, core::mem::transmute_copy(&pbstrmoreinfotext)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            AuthorName: AuthorName::<Identity, OFFSET>,
            Title: Title::<Identity, OFFSET>,
            Rating: Rating::<Identity, OFFSET>,
            Description: Description::<Identity, OFFSET>,
            Copyright: Copyright::<Identity, OFFSET>,
            BaseURL: BaseURL::<Identity, OFFSET>,
            LogoURL: LogoURL::<Identity, OFFSET>,
            LogoIconURL: LogoIconURL::<Identity, OFFSET>,
            WatermarkURL: WatermarkURL::<Identity, OFFSET>,
            MoreInfoURL: MoreInfoURL::<Identity, OFFSET>,
            MoreInfoBannerImage: MoreInfoBannerImage::<Identity, OFFSET>,
            MoreInfoBannerURL: MoreInfoBannerURL::<Identity, OFFSET>,
            MoreInfoText: MoreInfoText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMMediaContent as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMMediaContent2_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn get_MediaParameter(&self, entrynum: i32, bstrname: &windows_core::BSTR, pbstrvalue: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn get_MediaParameterName(&self, entrynum: i32, index: i32, pbstrname: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn PlaylistCount(&self, pnumberentries: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMMediaContent2 {}
#[cfg(feature = "Win32_System_Com")]
impl IAMMediaContent2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMMediaContent2_Vtbl
    where
        Identity: IAMMediaContent2_Impl,
    {
        unsafe extern "system" fn get_MediaParameter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, entrynum: i32, bstrname: core::mem::MaybeUninit<windows_core::BSTR>, pbstrvalue: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent2_Impl::get_MediaParameter(this, core::mem::transmute_copy(&entrynum), core::mem::transmute(&bstrname), core::mem::transmute_copy(&pbstrvalue)).into()
        }
        unsafe extern "system" fn get_MediaParameterName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, entrynum: i32, index: i32, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent2_Impl::get_MediaParameterName(this, core::mem::transmute_copy(&entrynum), core::mem::transmute_copy(&index), core::mem::transmute_copy(&pbstrname)).into()
        }
        unsafe extern "system" fn PlaylistCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnumberentries: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMMediaContent2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaContent2_Impl::PlaylistCount(this, core::mem::transmute_copy(&pnumberentries)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            get_MediaParameter: get_MediaParameter::<Identity, OFFSET>,
            get_MediaParameterName: get_MediaParameterName::<Identity, OFFSET>,
            PlaylistCount: PlaylistCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMMediaContent2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMMediaStream_Impl: Sized + IMediaStream_Impl {
    fn Initialize(&self, psourceobject: Option<&windows_core::IUnknown>, dwflags: u32, purposeid: *const windows_core::GUID, streamtype: STREAM_TYPE) -> windows_core::Result<()>;
    fn SetState(&self, state: FILTER_STATE) -> windows_core::Result<()>;
    fn JoinAMMultiMediaStream(&self, pammultimediastream: Option<&IAMMultiMediaStream>) -> windows_core::Result<()>;
    fn JoinFilter(&self, pmediastreamfilter: Option<&IMediaStreamFilter>) -> windows_core::Result<()>;
    fn JoinFilterGraph(&self, pfiltergraph: Option<&IFilterGraph>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMMediaStream {}
#[cfg(feature = "Win32_System_Com")]
impl IAMMediaStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMMediaStream_Vtbl
    where
        Identity: IAMMediaStream_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourceobject: *mut core::ffi::c_void, dwflags: u32, purposeid: *const windows_core::GUID, streamtype: STREAM_TYPE) -> windows_core::HRESULT
        where
            Identity: IAMMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaStream_Impl::Initialize(this, windows_core::from_raw_borrowed(&psourceobject), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&purposeid), core::mem::transmute_copy(&streamtype)).into()
        }
        unsafe extern "system" fn SetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: FILTER_STATE) -> windows_core::HRESULT
        where
            Identity: IAMMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaStream_Impl::SetState(this, core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn JoinAMMultiMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pammultimediastream: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaStream_Impl::JoinAMMultiMediaStream(this, windows_core::from_raw_borrowed(&pammultimediastream)).into()
        }
        unsafe extern "system" fn JoinFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmediastreamfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaStream_Impl::JoinFilter(this, windows_core::from_raw_borrowed(&pmediastreamfilter)).into()
        }
        unsafe extern "system" fn JoinFilterGraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfiltergraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaStream_Impl::JoinFilterGraph(this, windows_core::from_raw_borrowed(&pfiltergraph)).into()
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            SetState: SetState::<Identity, OFFSET>,
            JoinAMMultiMediaStream: JoinAMMultiMediaStream::<Identity, OFFSET>,
            JoinFilter: JoinFilter::<Identity, OFFSET>,
            JoinFilterGraph: JoinFilterGraph::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMMediaStream as windows_core::Interface>::IID || iid == &<IMediaStream as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IAMMediaTypeSample_Impl: Sized + IStreamSample_Impl {
    fn SetPointer(&self, pbuffer: *const u8, lsize: i32) -> windows_core::Result<()>;
    fn GetPointer(&self) -> windows_core::Result<*mut u8>;
    fn GetSize(&self) -> i32;
    fn GetTime(&self, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()>;
    fn SetTime(&self, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::Result<()>;
    fn IsSyncPoint(&self) -> windows_core::Result<()>;
    fn SetSyncPoint(&self, bissyncpoint: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn IsPreroll(&self) -> windows_core::Result<()>;
    fn SetPreroll(&self, bispreroll: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetActualDataLength(&self) -> i32;
    fn SetActualDataLength(&self, __midl__iammediatypesample0000: i32) -> windows_core::Result<()>;
    fn GetMediaType(&self) -> windows_core::Result<*mut super::MediaFoundation::AM_MEDIA_TYPE>;
    fn SetMediaType(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn IsDiscontinuity(&self) -> windows_core::Result<()>;
    fn SetDiscontinuity(&self, bdiscontinuity: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetMediaTime(&self, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()>;
    fn SetMediaTime(&self, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IAMMediaTypeSample {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IAMMediaTypeSample_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMMediaTypeSample_Vtbl
    where
        Identity: IAMMediaTypeSample_Impl,
    {
        unsafe extern "system" fn SetPointer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbuffer: *const u8, lsize: i32) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetPointer(this, core::mem::transmute_copy(&pbuffer), core::mem::transmute_copy(&lsize)).into()
        }
        unsafe extern "system" fn GetPointer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbuffer: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMediaTypeSample_Impl::GetPointer(this) {
                Ok(ok__) => {
                    ppbuffer.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> i32
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::GetSize(this)
        }
        unsafe extern "system" fn GetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::GetTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn IsSyncPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::IsSyncPoint(this).into()
        }
        unsafe extern "system" fn SetSyncPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bissyncpoint: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetSyncPoint(this, core::mem::transmute_copy(&bissyncpoint)).into()
        }
        unsafe extern "system" fn IsPreroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::IsPreroll(this).into()
        }
        unsafe extern "system" fn SetPreroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bispreroll: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetPreroll(this, core::mem::transmute_copy(&bispreroll)).into()
        }
        unsafe extern "system" fn GetActualDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> i32
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::GetActualDataLength(this)
        }
        unsafe extern "system" fn SetActualDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, __midl__iammediatypesample0000: i32) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetActualDataLength(this, core::mem::transmute_copy(&__midl__iammediatypesample0000)).into()
        }
        unsafe extern "system" fn GetMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmediatype: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMediaTypeSample_Impl::GetMediaType(this) {
                Ok(ok__) => {
                    ppmediatype.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, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetMediaType(this, core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn IsDiscontinuity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::IsDiscontinuity(this).into()
        }
        unsafe extern "system" fn SetDiscontinuity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bdiscontinuity: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetDiscontinuity(this, core::mem::transmute_copy(&bdiscontinuity)).into()
        }
        unsafe extern "system" fn GetMediaTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::GetMediaTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetMediaTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeSample_Impl::SetMediaTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        Self {
            base__: IStreamSample_Vtbl::new::<Identity, OFFSET>(),
            SetPointer: SetPointer::<Identity, OFFSET>,
            GetPointer: GetPointer::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetTime: GetTime::<Identity, OFFSET>,
            SetTime: SetTime::<Identity, OFFSET>,
            IsSyncPoint: IsSyncPoint::<Identity, OFFSET>,
            SetSyncPoint: SetSyncPoint::<Identity, OFFSET>,
            IsPreroll: IsPreroll::<Identity, OFFSET>,
            SetPreroll: SetPreroll::<Identity, OFFSET>,
            GetActualDataLength: GetActualDataLength::<Identity, OFFSET>,
            SetActualDataLength: SetActualDataLength::<Identity, OFFSET>,
            GetMediaType: GetMediaType::<Identity, OFFSET>,
            SetMediaType: SetMediaType::<Identity, OFFSET>,
            IsDiscontinuity: IsDiscontinuity::<Identity, OFFSET>,
            SetDiscontinuity: SetDiscontinuity::<Identity, OFFSET>,
            GetMediaTime: GetMediaTime::<Identity, OFFSET>,
            SetMediaTime: SetMediaTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMMediaTypeSample as windows_core::Interface>::IID || iid == &<IStreamSample as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IAMMediaTypeStream_Impl: Sized + IMediaStream_Impl {
    fn GetFormat(&self, pmediatype: *mut super::MediaFoundation::AM_MEDIA_TYPE, dwflags: u32) -> windows_core::Result<()>;
    fn SetFormat(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE, dwflags: u32) -> windows_core::Result<()>;
    fn CreateSample(&self, lsamplesize: i32, pbbuffer: *const u8, dwflags: u32, punkouter: Option<&windows_core::IUnknown>) -> windows_core::Result<IAMMediaTypeSample>;
    fn GetStreamAllocatorRequirements(&self) -> windows_core::Result<ALLOCATOR_PROPERTIES>;
    fn SetStreamAllocatorRequirements(&self, pprops: *const ALLOCATOR_PROPERTIES) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IAMMediaTypeStream {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IAMMediaTypeStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMMediaTypeStream_Vtbl
    where
        Identity: IAMMediaTypeStream_Impl,
    {
        unsafe extern "system" fn GetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmediatype: *mut super::MediaFoundation::AM_MEDIA_TYPE, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeStream_Impl::GetFormat(this, core::mem::transmute_copy(&pmediatype), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn SetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeStream_Impl::SetFormat(this, core::mem::transmute_copy(&pmediatype), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn CreateSample<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lsamplesize: i32, pbbuffer: *const u8, dwflags: u32, punkouter: *mut core::ffi::c_void, ppammediatypesample: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMediaTypeStream_Impl::CreateSample(this, core::mem::transmute_copy(&lsamplesize), core::mem::transmute_copy(&pbbuffer), core::mem::transmute_copy(&dwflags), windows_core::from_raw_borrowed(&punkouter)) {
                Ok(ok__) => {
                    ppammediatypesample.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStreamAllocatorRequirements<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprops: *mut ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMediaTypeStream_Impl::GetStreamAllocatorRequirements(this) {
                Ok(ok__) => {
                    pprops.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStreamAllocatorRequirements<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprops: *const ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IAMMediaTypeStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMediaTypeStream_Impl::SetStreamAllocatorRequirements(this, core::mem::transmute_copy(&pprops)).into()
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, OFFSET>(),
            GetFormat: GetFormat::<Identity, OFFSET>,
            SetFormat: SetFormat::<Identity, OFFSET>,
            CreateSample: CreateSample::<Identity, OFFSET>,
            GetStreamAllocatorRequirements: GetStreamAllocatorRequirements::<Identity, OFFSET>,
            SetStreamAllocatorRequirements: SetStreamAllocatorRequirements::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMMediaTypeStream as windows_core::Interface>::IID || iid == &<IMediaStream as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMMultiMediaStream_Impl: Sized + IMultiMediaStream_Impl {
    fn Initialize(&self, streamtype: STREAM_TYPE, dwflags: &AMMSF_MMS_INIT_FLAGS, pfiltergraph: Option<&IGraphBuilder>) -> windows_core::Result<()>;
    fn GetFilterGraph(&self) -> windows_core::Result<IGraphBuilder>;
    fn GetFilter(&self) -> windows_core::Result<IMediaStreamFilter>;
    fn AddMediaStream(&self, pstreamobject: Option<&windows_core::IUnknown>, purposeid: *const windows_core::GUID, dwflags: &AMMSF_MS_FLAGS) -> windows_core::Result<IMediaStream>;
    fn OpenFile(&self, pszfilename: &windows_core::PCWSTR, dwflags: u32) -> windows_core::Result<()>;
    fn OpenMoniker(&self, pctx: Option<&super::super::System::Com::IBindCtx>, pmoniker: Option<&super::super::System::Com::IMoniker>, dwflags: u32) -> windows_core::Result<()>;
    fn Render(&self, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMMultiMediaStream {}
#[cfg(feature = "Win32_System_Com")]
impl IAMMultiMediaStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMMultiMediaStream_Vtbl
    where
        Identity: IAMMultiMediaStream_Impl,
    {
        unsafe extern "system" fn Initialize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, streamtype: STREAM_TYPE, dwflags: u32, pfiltergraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMultiMediaStream_Impl::Initialize(this, core::mem::transmute_copy(&streamtype), core::mem::transmute(&dwflags), windows_core::from_raw_borrowed(&pfiltergraph)).into()
        }
        unsafe extern "system" fn GetFilterGraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppgraphbuilder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMultiMediaStream_Impl::GetFilterGraph(this) {
                Ok(ok__) => {
                    ppgraphbuilder.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfilter: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMultiMediaStream_Impl::GetFilter(this) {
                Ok(ok__) => {
                    ppfilter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstreamobject: *mut core::ffi::c_void, purposeid: *const windows_core::GUID, dwflags: u32, ppnewstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMMultiMediaStream_Impl::AddMediaStream(this, windows_core::from_raw_borrowed(&pstreamobject), core::mem::transmute_copy(&purposeid), core::mem::transmute(&dwflags)) {
                Ok(ok__) => {
                    ppnewstream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OpenFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: windows_core::PCWSTR, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMultiMediaStream_Impl::OpenFile(this, core::mem::transmute(&pszfilename), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn OpenMoniker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pctx: *mut core::ffi::c_void, pmoniker: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMultiMediaStream_Impl::OpenMoniker(this, windows_core::from_raw_borrowed(&pctx), windows_core::from_raw_borrowed(&pmoniker), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn Render<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMMultiMediaStream_Impl::Render(this, core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: IMultiMediaStream_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetFilterGraph: GetFilterGraph::<Identity, OFFSET>,
            GetFilter: GetFilter::<Identity, OFFSET>,
            AddMediaStream: AddMediaStream::<Identity, OFFSET>,
            OpenFile: OpenFile::<Identity, OFFSET>,
            OpenMoniker: OpenMoniker::<Identity, OFFSET>,
            Render: Render::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMMultiMediaStream as windows_core::Interface>::IID || iid == &<IMultiMediaStream as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMNetShowConfig_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn BufferingTime(&self, pbufferingtime: *mut f64) -> windows_core::Result<()>;
    fn SetBufferingTime(&self, bufferingtime: f64) -> windows_core::Result<()>;
    fn UseFixedUDPPort(&self, pusefixedudpport: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetUseFixedUDPPort(&self, usefixedudpport: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn FixedUDPPort(&self, pfixedudpport: *mut i32) -> windows_core::Result<()>;
    fn SetFixedUDPPort(&self, fixedudpport: i32) -> windows_core::Result<()>;
    fn UseHTTPProxy(&self, pusehttpproxy: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetUseHTTPProxy(&self, usehttpproxy: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn EnableAutoProxy(&self, penableautoproxy: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetEnableAutoProxy(&self, enableautoproxy: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn HTTPProxyHost(&self, pbstrhttpproxyhost: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn SetHTTPProxyHost(&self, bstrhttpproxyhost: &windows_core::BSTR) -> windows_core::Result<()>;
    fn HTTPProxyPort(&self, phttpproxyport: *mut i32) -> windows_core::Result<()>;
    fn SetHTTPProxyPort(&self, httpproxyport: i32) -> windows_core::Result<()>;
    fn EnableMulticast(&self, penablemulticast: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetEnableMulticast(&self, enablemulticast: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn EnableUDP(&self, penableudp: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetEnableUDP(&self, enableudp: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn EnableTCP(&self, penabletcp: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetEnableTCP(&self, enabletcp: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn EnableHTTP(&self, penablehttp: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetEnableHTTP(&self, enablehttp: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMNetShowConfig {}
#[cfg(feature = "Win32_System_Com")]
impl IAMNetShowConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMNetShowConfig_Vtbl
    where
        Identity: IAMNetShowConfig_Impl,
    {
        unsafe extern "system" fn BufferingTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbufferingtime: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::BufferingTime(this, core::mem::transmute_copy(&pbufferingtime)).into()
        }
        unsafe extern "system" fn SetBufferingTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bufferingtime: f64) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetBufferingTime(this, core::mem::transmute_copy(&bufferingtime)).into()
        }
        unsafe extern "system" fn UseFixedUDPPort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pusefixedudpport: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::UseFixedUDPPort(this, core::mem::transmute_copy(&pusefixedudpport)).into()
        }
        unsafe extern "system" fn SetUseFixedUDPPort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usefixedudpport: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetUseFixedUDPPort(this, core::mem::transmute_copy(&usefixedudpport)).into()
        }
        unsafe extern "system" fn FixedUDPPort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfixedudpport: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::FixedUDPPort(this, core::mem::transmute_copy(&pfixedudpport)).into()
        }
        unsafe extern "system" fn SetFixedUDPPort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fixedudpport: i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetFixedUDPPort(this, core::mem::transmute_copy(&fixedudpport)).into()
        }
        unsafe extern "system" fn UseHTTPProxy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pusehttpproxy: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::UseHTTPProxy(this, core::mem::transmute_copy(&pusehttpproxy)).into()
        }
        unsafe extern "system" fn SetUseHTTPProxy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usehttpproxy: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetUseHTTPProxy(this, core::mem::transmute_copy(&usehttpproxy)).into()
        }
        unsafe extern "system" fn EnableAutoProxy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penableautoproxy: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::EnableAutoProxy(this, core::mem::transmute_copy(&penableautoproxy)).into()
        }
        unsafe extern "system" fn SetEnableAutoProxy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enableautoproxy: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetEnableAutoProxy(this, core::mem::transmute_copy(&enableautoproxy)).into()
        }
        unsafe extern "system" fn HTTPProxyHost<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrhttpproxyhost: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::HTTPProxyHost(this, core::mem::transmute_copy(&pbstrhttpproxyhost)).into()
        }
        unsafe extern "system" fn SetHTTPProxyHost<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrhttpproxyhost: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetHTTPProxyHost(this, core::mem::transmute(&bstrhttpproxyhost)).into()
        }
        unsafe extern "system" fn HTTPProxyPort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phttpproxyport: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::HTTPProxyPort(this, core::mem::transmute_copy(&phttpproxyport)).into()
        }
        unsafe extern "system" fn SetHTTPProxyPort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, httpproxyport: i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetHTTPProxyPort(this, core::mem::transmute_copy(&httpproxyport)).into()
        }
        unsafe extern "system" fn EnableMulticast<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penablemulticast: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::EnableMulticast(this, core::mem::transmute_copy(&penablemulticast)).into()
        }
        unsafe extern "system" fn SetEnableMulticast<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enablemulticast: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetEnableMulticast(this, core::mem::transmute_copy(&enablemulticast)).into()
        }
        unsafe extern "system" fn EnableUDP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penableudp: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::EnableUDP(this, core::mem::transmute_copy(&penableudp)).into()
        }
        unsafe extern "system" fn SetEnableUDP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enableudp: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetEnableUDP(this, core::mem::transmute_copy(&enableudp)).into()
        }
        unsafe extern "system" fn EnableTCP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penabletcp: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::EnableTCP(this, core::mem::transmute_copy(&penabletcp)).into()
        }
        unsafe extern "system" fn SetEnableTCP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enabletcp: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetEnableTCP(this, core::mem::transmute_copy(&enabletcp)).into()
        }
        unsafe extern "system" fn EnableHTTP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penablehttp: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::EnableHTTP(this, core::mem::transmute_copy(&penablehttp)).into()
        }
        unsafe extern "system" fn SetEnableHTTP<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, enablehttp: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowConfig_Impl::SetEnableHTTP(this, core::mem::transmute_copy(&enablehttp)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            BufferingTime: BufferingTime::<Identity, OFFSET>,
            SetBufferingTime: SetBufferingTime::<Identity, OFFSET>,
            UseFixedUDPPort: UseFixedUDPPort::<Identity, OFFSET>,
            SetUseFixedUDPPort: SetUseFixedUDPPort::<Identity, OFFSET>,
            FixedUDPPort: FixedUDPPort::<Identity, OFFSET>,
            SetFixedUDPPort: SetFixedUDPPort::<Identity, OFFSET>,
            UseHTTPProxy: UseHTTPProxy::<Identity, OFFSET>,
            SetUseHTTPProxy: SetUseHTTPProxy::<Identity, OFFSET>,
            EnableAutoProxy: EnableAutoProxy::<Identity, OFFSET>,
            SetEnableAutoProxy: SetEnableAutoProxy::<Identity, OFFSET>,
            HTTPProxyHost: HTTPProxyHost::<Identity, OFFSET>,
            SetHTTPProxyHost: SetHTTPProxyHost::<Identity, OFFSET>,
            HTTPProxyPort: HTTPProxyPort::<Identity, OFFSET>,
            SetHTTPProxyPort: SetHTTPProxyPort::<Identity, OFFSET>,
            EnableMulticast: EnableMulticast::<Identity, OFFSET>,
            SetEnableMulticast: SetEnableMulticast::<Identity, OFFSET>,
            EnableUDP: EnableUDP::<Identity, OFFSET>,
            SetEnableUDP: SetEnableUDP::<Identity, OFFSET>,
            EnableTCP: EnableTCP::<Identity, OFFSET>,
            SetEnableTCP: SetEnableTCP::<Identity, OFFSET>,
            EnableHTTP: EnableHTTP::<Identity, OFFSET>,
            SetEnableHTTP: SetEnableHTTP::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMNetShowConfig as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMNetShowExProps_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SourceProtocol(&self, psourceprotocol: *mut i32) -> windows_core::Result<()>;
    fn Bandwidth(&self, pbandwidth: *mut i32) -> windows_core::Result<()>;
    fn ErrorCorrection(&self, pbstrerrorcorrection: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn CodecCount(&self, pcodeccount: *mut i32) -> windows_core::Result<()>;
    fn GetCodecInstalled(&self, codecnum: i32, pcodecinstalled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn GetCodecDescription(&self, codecnum: i32, pbstrcodecdescription: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn GetCodecURL(&self, codecnum: i32, pbstrcodecurl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn CreationDate(&self, pcreationdate: *mut f64) -> windows_core::Result<()>;
    fn SourceLink(&self, pbstrsourcelink: *mut windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMNetShowExProps {}
#[cfg(feature = "Win32_System_Com")]
impl IAMNetShowExProps_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMNetShowExProps_Vtbl
    where
        Identity: IAMNetShowExProps_Impl,
    {
        unsafe extern "system" fn SourceProtocol<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourceprotocol: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::SourceProtocol(this, core::mem::transmute_copy(&psourceprotocol)).into()
        }
        unsafe extern "system" fn Bandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbandwidth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::Bandwidth(this, core::mem::transmute_copy(&pbandwidth)).into()
        }
        unsafe extern "system" fn ErrorCorrection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrerrorcorrection: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::ErrorCorrection(this, core::mem::transmute_copy(&pbstrerrorcorrection)).into()
        }
        unsafe extern "system" fn CodecCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcodeccount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::CodecCount(this, core::mem::transmute_copy(&pcodeccount)).into()
        }
        unsafe extern "system" fn GetCodecInstalled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, codecnum: i32, pcodecinstalled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::GetCodecInstalled(this, core::mem::transmute_copy(&codecnum), core::mem::transmute_copy(&pcodecinstalled)).into()
        }
        unsafe extern "system" fn GetCodecDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, codecnum: i32, pbstrcodecdescription: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::GetCodecDescription(this, core::mem::transmute_copy(&codecnum), core::mem::transmute_copy(&pbstrcodecdescription)).into()
        }
        unsafe extern "system" fn GetCodecURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, codecnum: i32, pbstrcodecurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::GetCodecURL(this, core::mem::transmute_copy(&codecnum), core::mem::transmute_copy(&pbstrcodecurl)).into()
        }
        unsafe extern "system" fn CreationDate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcreationdate: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::CreationDate(this, core::mem::transmute_copy(&pcreationdate)).into()
        }
        unsafe extern "system" fn SourceLink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsourcelink: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMNetShowExProps_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowExProps_Impl::SourceLink(this, core::mem::transmute_copy(&pbstrsourcelink)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            SourceProtocol: SourceProtocol::<Identity, OFFSET>,
            Bandwidth: Bandwidth::<Identity, OFFSET>,
            ErrorCorrection: ErrorCorrection::<Identity, OFFSET>,
            CodecCount: CodecCount::<Identity, OFFSET>,
            GetCodecInstalled: GetCodecInstalled::<Identity, OFFSET>,
            GetCodecDescription: GetCodecDescription::<Identity, OFFSET>,
            GetCodecURL: GetCodecURL::<Identity, OFFSET>,
            CreationDate: CreationDate::<Identity, OFFSET>,
            SourceLink: SourceLink::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMNetShowExProps as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMNetShowPreroll_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SetPreroll(&self, fpreroll: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Preroll(&self, pfpreroll: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMNetShowPreroll {}
#[cfg(feature = "Win32_System_Com")]
impl IAMNetShowPreroll_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMNetShowPreroll_Vtbl
    where
        Identity: IAMNetShowPreroll_Impl,
    {
        unsafe extern "system" fn SetPreroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpreroll: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowPreroll_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowPreroll_Impl::SetPreroll(this, core::mem::transmute_copy(&fpreroll)).into()
        }
        unsafe extern "system" fn Preroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfpreroll: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetShowPreroll_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetShowPreroll_Impl::Preroll(this, core::mem::transmute_copy(&pfpreroll)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            SetPreroll: SetPreroll::<Identity, OFFSET>,
            Preroll: Preroll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMNetShowPreroll as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMNetworkStatus_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn ReceivedPackets(&self, preceivedpackets: *mut i32) -> windows_core::Result<()>;
    fn RecoveredPackets(&self, precoveredpackets: *mut i32) -> windows_core::Result<()>;
    fn LostPackets(&self, plostpackets: *mut i32) -> windows_core::Result<()>;
    fn ReceptionQuality(&self, preceptionquality: *mut i32) -> windows_core::Result<()>;
    fn BufferingCount(&self, pbufferingcount: *mut i32) -> windows_core::Result<()>;
    fn IsBroadcast(&self, pisbroadcast: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn BufferingProgress(&self, pbufferingprogress: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMNetworkStatus {}
#[cfg(feature = "Win32_System_Com")]
impl IAMNetworkStatus_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMNetworkStatus_Vtbl
    where
        Identity: IAMNetworkStatus_Impl,
    {
        unsafe extern "system" fn ReceivedPackets<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, preceivedpackets: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::ReceivedPackets(this, core::mem::transmute_copy(&preceivedpackets)).into()
        }
        unsafe extern "system" fn RecoveredPackets<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, precoveredpackets: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::RecoveredPackets(this, core::mem::transmute_copy(&precoveredpackets)).into()
        }
        unsafe extern "system" fn LostPackets<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plostpackets: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::LostPackets(this, core::mem::transmute_copy(&plostpackets)).into()
        }
        unsafe extern "system" fn ReceptionQuality<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, preceptionquality: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::ReceptionQuality(this, core::mem::transmute_copy(&preceptionquality)).into()
        }
        unsafe extern "system" fn BufferingCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbufferingcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::BufferingCount(this, core::mem::transmute_copy(&pbufferingcount)).into()
        }
        unsafe extern "system" fn IsBroadcast<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pisbroadcast: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::IsBroadcast(this, core::mem::transmute_copy(&pisbroadcast)).into()
        }
        unsafe extern "system" fn BufferingProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbufferingprogress: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMNetworkStatus_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMNetworkStatus_Impl::BufferingProgress(this, core::mem::transmute_copy(&pbufferingprogress)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            ReceivedPackets: ReceivedPackets::<Identity, OFFSET>,
            RecoveredPackets: RecoveredPackets::<Identity, OFFSET>,
            LostPackets: LostPackets::<Identity, OFFSET>,
            ReceptionQuality: ReceptionQuality::<Identity, OFFSET>,
            BufferingCount: BufferingCount::<Identity, OFFSET>,
            IsBroadcast: IsBroadcast::<Identity, OFFSET>,
            BufferingProgress: BufferingProgress::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMNetworkStatus as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IAMOpenProgress_Impl: Sized {
    fn QueryProgress(&self, plltotal: *mut i64, pllcurrent: *mut i64) -> windows_core::Result<()>;
    fn AbortOperation(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMOpenProgress {}
impl IAMOpenProgress_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMOpenProgress_Vtbl
    where
        Identity: IAMOpenProgress_Impl,
    {
        unsafe extern "system" fn QueryProgress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plltotal: *mut i64, pllcurrent: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMOpenProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMOpenProgress_Impl::QueryProgress(this, core::mem::transmute_copy(&plltotal), core::mem::transmute_copy(&pllcurrent)).into()
        }
        unsafe extern "system" fn AbortOperation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMOpenProgress_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMOpenProgress_Impl::AbortOperation(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryProgress: QueryProgress::<Identity, OFFSET>,
            AbortOperation: AbortOperation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMOpenProgress as windows_core::Interface>::IID
    }
}
pub trait IAMOverlayFX_Impl: Sized {
    fn QueryOverlayFXCaps(&self) -> windows_core::Result<u32>;
    fn SetOverlayFX(&self, dwoverlayfx: u32) -> windows_core::Result<()>;
    fn GetOverlayFX(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IAMOverlayFX {}
impl IAMOverlayFX_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMOverlayFX_Vtbl
    where
        Identity: IAMOverlayFX_Impl,
    {
        unsafe extern "system" fn QueryOverlayFXCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdwoverlayfxcaps: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMOverlayFX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMOverlayFX_Impl::QueryOverlayFXCaps(this) {
                Ok(ok__) => {
                    lpdwoverlayfxcaps.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOverlayFX<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwoverlayfx: u32) -> windows_core::HRESULT
        where
            Identity: IAMOverlayFX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMOverlayFX_Impl::SetOverlayFX(this, core::mem::transmute_copy(&dwoverlayfx)).into()
        }
        unsafe extern "system" fn GetOverlayFX<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdwoverlayfx: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMOverlayFX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMOverlayFX_Impl::GetOverlayFX(this) {
                Ok(ok__) => {
                    lpdwoverlayfx.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryOverlayFXCaps: QueryOverlayFXCaps::<Identity, OFFSET>,
            SetOverlayFX: SetOverlayFX::<Identity, OFFSET>,
            GetOverlayFX: GetOverlayFX::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMOverlayFX as windows_core::Interface>::IID
    }
}
pub trait IAMParse_Impl: Sized {
    fn GetParseTime(&self) -> windows_core::Result<i64>;
    fn SetParseTime(&self, rtcurrent: i64) -> windows_core::Result<()>;
    fn Flush(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMParse {}
impl IAMParse_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMParse_Vtbl
    where
        Identity: IAMParse_Impl,
    {
        unsafe extern "system" fn GetParseTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtcurrent: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMParse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMParse_Impl::GetParseTime(this) {
                Ok(ok__) => {
                    prtcurrent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetParseTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtcurrent: i64) -> windows_core::HRESULT
        where
            Identity: IAMParse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMParse_Impl::SetParseTime(this, core::mem::transmute_copy(&rtcurrent)).into()
        }
        unsafe extern "system" fn Flush<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMParse_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMParse_Impl::Flush(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParseTime: GetParseTime::<Identity, OFFSET>,
            SetParseTime: SetParseTime::<Identity, OFFSET>,
            Flush: Flush::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMParse as windows_core::Interface>::IID
    }
}
pub trait IAMPhysicalPinInfo_Impl: Sized {
    fn GetPhysicalType(&self, ptype: *mut i32, ppsztype: *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMPhysicalPinInfo {}
impl IAMPhysicalPinInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMPhysicalPinInfo_Vtbl
    where
        Identity: IAMPhysicalPinInfo_Impl,
    {
        unsafe extern "system" fn GetPhysicalType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptype: *mut i32, ppsztype: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IAMPhysicalPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPhysicalPinInfo_Impl::GetPhysicalType(this, core::mem::transmute_copy(&ptype), core::mem::transmute_copy(&ppsztype)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetPhysicalType: GetPhysicalType::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMPhysicalPinInfo as windows_core::Interface>::IID
    }
}
pub trait IAMPlayList_Impl: Sized {
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn GetItemCount(&self) -> windows_core::Result<u32>;
    fn GetItem(&self, dwitemindex: u32) -> windows_core::Result<IAMPlayListItem>;
    fn GetNamedEvent(&self, pwszeventname: &windows_core::PCWSTR, dwitemindex: u32, ppitem: *mut Option<IAMPlayListItem>, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn GetRepeatInfo(&self, pdwrepeatcount: *mut u32, pdwrepeatstart: *mut u32, pdwrepeatend: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMPlayList {}
impl IAMPlayList_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMPlayList_Vtbl
    where
        Identity: IAMPlayList_Impl,
    {
        unsafe extern "system" fn GetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayList_Impl::GetFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItemCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwitems: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayList_Impl::GetItemCount(this) {
                Ok(ok__) => {
                    pdwitems.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetItem<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwitemindex: u32, ppitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMPlayList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayList_Impl::GetItem(this, core::mem::transmute_copy(&dwitemindex)) {
                Ok(ok__) => {
                    ppitem.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNamedEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszeventname: windows_core::PCWSTR, dwitemindex: u32, ppitem: *mut *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPlayList_Impl::GetNamedEvent(this, core::mem::transmute(&pwszeventname), core::mem::transmute_copy(&dwitemindex), core::mem::transmute_copy(&ppitem), core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn GetRepeatInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwrepeatcount: *mut u32, pdwrepeatstart: *mut u32, pdwrepeatend: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayList_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPlayList_Impl::GetRepeatInfo(this, core::mem::transmute_copy(&pdwrepeatcount), core::mem::transmute_copy(&pdwrepeatstart), core::mem::transmute_copy(&pdwrepeatend)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFlags: GetFlags::<Identity, OFFSET>,
            GetItemCount: GetItemCount::<Identity, OFFSET>,
            GetItem: GetItem::<Identity, OFFSET>,
            GetNamedEvent: GetNamedEvent::<Identity, OFFSET>,
            GetRepeatInfo: GetRepeatInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMPlayList as windows_core::Interface>::IID
    }
}
pub trait IAMPlayListItem_Impl: Sized {
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn GetSourceCount(&self) -> windows_core::Result<u32>;
    fn GetSourceURL(&self, dwsourceindex: u32) -> windows_core::Result<windows_core::BSTR>;
    fn GetSourceStart(&self, dwsourceindex: u32) -> windows_core::Result<i64>;
    fn GetSourceDuration(&self, dwsourceindex: u32) -> windows_core::Result<i64>;
    fn GetSourceStartMarker(&self, dwsourceindex: u32) -> windows_core::Result<u32>;
    fn GetSourceEndMarker(&self, dwsourceindex: u32) -> windows_core::Result<u32>;
    fn GetSourceStartMarkerName(&self, dwsourceindex: u32) -> windows_core::Result<windows_core::BSTR>;
    fn GetSourceEndMarkerName(&self, dwsourceindex: u32) -> windows_core::Result<windows_core::BSTR>;
    fn GetLinkURL(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetScanDuration(&self, dwsourceindex: u32) -> windows_core::Result<i64>;
}
impl windows_core::RuntimeName for IAMPlayListItem {}
impl IAMPlayListItem_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMPlayListItem_Vtbl
    where
        Identity: IAMPlayListItem_Impl,
    {
        unsafe extern "system" fn GetFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetFlags(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwsources: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceCount(this) {
                Ok(ok__) => {
                    pdwsources.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, pbstrurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceURL(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    pbstrurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceStart<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, prtstart: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceStart(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    prtstart.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, prtduration: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceDuration(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    prtduration.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceStartMarker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, pdwmarker: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceStartMarker(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    pdwmarker.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceEndMarker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, pdwmarker: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceEndMarker(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    pdwmarker.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceStartMarkerName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, pbstrstartmarker: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceStartMarkerName(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    pbstrstartmarker.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSourceEndMarkerName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, pbstrendmarker: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetSourceEndMarkerName(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    pbstrendmarker.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetLinkURL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetLinkURL(this) {
                Ok(ok__) => {
                    pbstrurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetScanDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsourceindex: u32, prtscanduration: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMPlayListItem_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPlayListItem_Impl::GetScanDuration(this, core::mem::transmute_copy(&dwsourceindex)) {
                Ok(ok__) => {
                    prtscanduration.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFlags: GetFlags::<Identity, OFFSET>,
            GetSourceCount: GetSourceCount::<Identity, OFFSET>,
            GetSourceURL: GetSourceURL::<Identity, OFFSET>,
            GetSourceStart: GetSourceStart::<Identity, OFFSET>,
            GetSourceDuration: GetSourceDuration::<Identity, OFFSET>,
            GetSourceStartMarker: GetSourceStartMarker::<Identity, OFFSET>,
            GetSourceEndMarker: GetSourceEndMarker::<Identity, OFFSET>,
            GetSourceStartMarkerName: GetSourceStartMarkerName::<Identity, OFFSET>,
            GetSourceEndMarkerName: GetSourceEndMarkerName::<Identity, OFFSET>,
            GetLinkURL: GetLinkURL::<Identity, OFFSET>,
            GetScanDuration: GetScanDuration::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMPlayListItem as windows_core::Interface>::IID
    }
}
pub trait IAMPluginControl_Impl: Sized {
    fn GetPreferredClsid(&self, subtype: *const windows_core::GUID) -> windows_core::Result<windows_core::GUID>;
    fn GetPreferredClsidByIndex(&self, index: u32, subtype: *mut windows_core::GUID, clsid: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn SetPreferredClsid(&self, subtype: *const windows_core::GUID, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn IsDisabled(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetDisabledByIndex(&self, index: u32) -> windows_core::Result<windows_core::GUID>;
    fn SetDisabled(&self, clsid: *const windows_core::GUID, disabled: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn IsLegacyDisabled(&self, dllname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMPluginControl {}
impl IAMPluginControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMPluginControl_Vtbl
    where
        Identity: IAMPluginControl_Impl,
    {
        unsafe extern "system" fn GetPreferredClsid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, subtype: *const windows_core::GUID, clsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPluginControl_Impl::GetPreferredClsid(this, core::mem::transmute_copy(&subtype)) {
                Ok(ok__) => {
                    clsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreferredClsidByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, subtype: *mut windows_core::GUID, clsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPluginControl_Impl::GetPreferredClsidByIndex(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&subtype), core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn SetPreferredClsid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, subtype: *const windows_core::GUID, clsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPluginControl_Impl::SetPreferredClsid(this, core::mem::transmute_copy(&subtype), core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn IsDisabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPluginControl_Impl::IsDisabled(this, core::mem::transmute_copy(&clsid)).into()
        }
        unsafe extern "system" fn GetDisabledByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, clsid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPluginControl_Impl::GetDisabledByIndex(this, core::mem::transmute_copy(&index)) {
                Ok(ok__) => {
                    clsid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDisabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID, disabled: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPluginControl_Impl::SetDisabled(this, core::mem::transmute_copy(&clsid), core::mem::transmute_copy(&disabled)).into()
        }
        unsafe extern "system" fn IsLegacyDisabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dllname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IAMPluginControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPluginControl_Impl::IsLegacyDisabled(this, core::mem::transmute(&dllname)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPreferredClsid: GetPreferredClsid::<Identity, OFFSET>,
            GetPreferredClsidByIndex: GetPreferredClsidByIndex::<Identity, OFFSET>,
            SetPreferredClsid: SetPreferredClsid::<Identity, OFFSET>,
            IsDisabled: IsDisabled::<Identity, OFFSET>,
            GetDisabledByIndex: GetDisabledByIndex::<Identity, OFFSET>,
            SetDisabled: SetDisabled::<Identity, OFFSET>,
            IsLegacyDisabled: IsLegacyDisabled::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMPluginControl as windows_core::Interface>::IID
    }
}
pub trait IAMPushSource_Impl: Sized + IAMLatency_Impl {
    fn GetPushSourceFlags(&self) -> windows_core::Result<u32>;
    fn SetPushSourceFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn SetStreamOffset(&self, rtoffset: i64) -> windows_core::Result<()>;
    fn GetStreamOffset(&self) -> windows_core::Result<i64>;
    fn GetMaxStreamOffset(&self) -> windows_core::Result<i64>;
    fn SetMaxStreamOffset(&self, rtmaxoffset: i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMPushSource {}
impl IAMPushSource_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMPushSource_Vtbl
    where
        Identity: IAMPushSource_Impl,
    {
        unsafe extern "system" fn GetPushSourceFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMPushSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPushSource_Impl::GetPushSourceFlags(this) {
                Ok(ok__) => {
                    pflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPushSourceFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT
        where
            Identity: IAMPushSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPushSource_Impl::SetPushSourceFlags(this, core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn SetStreamOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtoffset: i64) -> windows_core::HRESULT
        where
            Identity: IAMPushSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPushSource_Impl::SetStreamOffset(this, core::mem::transmute_copy(&rtoffset)).into()
        }
        unsafe extern "system" fn GetStreamOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtoffset: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMPushSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPushSource_Impl::GetStreamOffset(this) {
                Ok(ok__) => {
                    prtoffset.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMaxStreamOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtmaxoffset: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMPushSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMPushSource_Impl::GetMaxStreamOffset(this) {
                Ok(ok__) => {
                    prtmaxoffset.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMaxStreamOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtmaxoffset: i64) -> windows_core::HRESULT
        where
            Identity: IAMPushSource_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMPushSource_Impl::SetMaxStreamOffset(this, core::mem::transmute_copy(&rtmaxoffset)).into()
        }
        Self {
            base__: IAMLatency_Vtbl::new::<Identity, OFFSET>(),
            GetPushSourceFlags: GetPushSourceFlags::<Identity, OFFSET>,
            SetPushSourceFlags: SetPushSourceFlags::<Identity, OFFSET>,
            SetStreamOffset: SetStreamOffset::<Identity, OFFSET>,
            GetStreamOffset: GetStreamOffset::<Identity, OFFSET>,
            GetMaxStreamOffset: GetMaxStreamOffset::<Identity, OFFSET>,
            SetMaxStreamOffset: SetMaxStreamOffset::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMPushSource as windows_core::Interface>::IID || iid == &<IAMLatency as windows_core::Interface>::IID
    }
}
pub trait IAMRebuild_Impl: Sized {
    fn RebuildNow(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMRebuild {}
impl IAMRebuild_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMRebuild_Vtbl
    where
        Identity: IAMRebuild_Impl,
    {
        unsafe extern "system" fn RebuildNow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMRebuild_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMRebuild_Impl::RebuildNow(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RebuildNow: RebuildNow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMRebuild as windows_core::Interface>::IID
    }
}
pub trait IAMResourceControl_Impl: Sized {
    fn Reserve(&self, dwflags: u32, pvreserved: *const core::ffi::c_void) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMResourceControl {}
impl IAMResourceControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMResourceControl_Vtbl
    where
        Identity: IAMResourceControl_Impl,
    {
        unsafe extern "system" fn Reserve<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, pvreserved: *const core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMResourceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMResourceControl_Impl::Reserve(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&pvreserved)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reserve: Reserve::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMResourceControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAMStats_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn Count(&self) -> windows_core::Result<i32>;
    fn GetValueByIndex(&self, lindex: i32, szname: *mut windows_core::BSTR, lcount: *mut i32, dlast: *mut f64, daverage: *mut f64, dstddev: *mut f64, dmin: *mut f64, dmax: *mut f64) -> windows_core::Result<()>;
    fn GetValueByName(&self, szname: &windows_core::BSTR, lindex: *mut i32, lcount: *mut i32, dlast: *mut f64, daverage: *mut f64, dstddev: *mut f64, dmin: *mut f64, dmax: *mut f64) -> windows_core::Result<()>;
    fn GetIndex(&self, szname: &windows_core::BSTR, lcreate: i32) -> windows_core::Result<i32>;
    fn AddValue(&self, lindex: i32, dvalue: f64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAMStats {}
#[cfg(feature = "Win32_System_Com")]
impl IAMStats_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMStats_Vtbl
    where
        Identity: IAMStats_Impl,
    {
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStats_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMStats_Impl::Count(this) {
                Ok(ok__) => {
                    plcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValueByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, szname: *mut core::mem::MaybeUninit<windows_core::BSTR>, lcount: *mut i32, dlast: *mut f64, daverage: *mut f64, dstddev: *mut f64, dmin: *mut f64, dmax: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStats_Impl::GetValueByIndex(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&szname), core::mem::transmute_copy(&lcount), core::mem::transmute_copy(&dlast), core::mem::transmute_copy(&daverage), core::mem::transmute_copy(&dstddev), core::mem::transmute_copy(&dmin), core::mem::transmute_copy(&dmax)).into()
        }
        unsafe extern "system" fn GetValueByName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, szname: core::mem::MaybeUninit<windows_core::BSTR>, lindex: *mut i32, lcount: *mut i32, dlast: *mut f64, daverage: *mut f64, dstddev: *mut f64, dmin: *mut f64, dmax: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStats_Impl::GetValueByName(this, core::mem::transmute(&szname), core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&lcount), core::mem::transmute_copy(&dlast), core::mem::transmute_copy(&daverage), core::mem::transmute_copy(&dstddev), core::mem::transmute_copy(&dmin), core::mem::transmute_copy(&dmax)).into()
        }
        unsafe extern "system" fn GetIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, szname: core::mem::MaybeUninit<windows_core::BSTR>, lcreate: i32, plindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMStats_Impl::GetIndex(this, core::mem::transmute(&szname), core::mem::transmute_copy(&lcreate)) {
                Ok(ok__) => {
                    plindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AddValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, dvalue: f64) -> windows_core::HRESULT
        where
            Identity: IAMStats_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStats_Impl::AddValue(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&dvalue)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Reset: Reset::<Identity, OFFSET>,
            Count: Count::<Identity, OFFSET>,
            GetValueByIndex: GetValueByIndex::<Identity, OFFSET>,
            GetValueByName: GetValueByName::<Identity, OFFSET>,
            GetIndex: GetIndex::<Identity, OFFSET>,
            AddValue: AddValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMStats as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IAMStreamConfig_Impl: Sized {
    fn SetFormat(&self, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn GetFormat(&self) -> windows_core::Result<*mut super::MediaFoundation::AM_MEDIA_TYPE>;
    fn GetNumberOfCapabilities(&self, picount: *mut i32, pisize: *mut i32) -> windows_core::Result<()>;
    fn GetStreamCaps(&self, iindex: i32, ppmt: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE, pscc: *mut u8) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IAMStreamConfig {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IAMStreamConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMStreamConfig_Vtbl
    where
        Identity: IAMStreamConfig_Impl,
    {
        unsafe extern "system" fn SetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IAMStreamConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamConfig_Impl::SetFormat(this, core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn GetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmt: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IAMStreamConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMStreamConfig_Impl::GetFormat(this) {
                Ok(ok__) => {
                    ppmt.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumberOfCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, picount: *mut i32, pisize: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMStreamConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamConfig_Impl::GetNumberOfCapabilities(this, core::mem::transmute_copy(&picount), core::mem::transmute_copy(&pisize)).into()
        }
        unsafe extern "system" fn GetStreamCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: i32, ppmt: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE, pscc: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAMStreamConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamConfig_Impl::GetStreamCaps(this, core::mem::transmute_copy(&iindex), core::mem::transmute_copy(&ppmt), core::mem::transmute_copy(&pscc)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFormat: SetFormat::<Identity, OFFSET>,
            GetFormat: GetFormat::<Identity, OFFSET>,
            GetNumberOfCapabilities: GetNumberOfCapabilities::<Identity, OFFSET>,
            GetStreamCaps: GetStreamCaps::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMStreamConfig as windows_core::Interface>::IID
    }
}
pub trait IAMStreamControl_Impl: Sized {
    fn StartAt(&self, ptstart: *const i64, dwcookie: u32) -> windows_core::Result<()>;
    fn StopAt(&self, ptstop: *const i64, bsendextra: super::super::Foundation::BOOL, dwcookie: u32) -> windows_core::Result<()>;
    fn GetInfo(&self, pinfo: *mut AM_STREAM_INFO) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMStreamControl {}
impl IAMStreamControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMStreamControl_Vtbl
    where
        Identity: IAMStreamControl_Impl,
    {
        unsafe extern "system" fn StartAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptstart: *const i64, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IAMStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamControl_Impl::StartAt(this, core::mem::transmute_copy(&ptstart), core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn StopAt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptstop: *const i64, bsendextra: super::super::Foundation::BOOL, dwcookie: u32) -> windows_core::HRESULT
        where
            Identity: IAMStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamControl_Impl::StopAt(this, core::mem::transmute_copy(&ptstop), core::mem::transmute_copy(&bsendextra), core::mem::transmute_copy(&dwcookie)).into()
        }
        unsafe extern "system" fn GetInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut AM_STREAM_INFO) -> windows_core::HRESULT
        where
            Identity: IAMStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamControl_Impl::GetInfo(this, core::mem::transmute_copy(&pinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartAt: StartAt::<Identity, OFFSET>,
            StopAt: StopAt::<Identity, OFFSET>,
            GetInfo: GetInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMStreamControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IAMStreamSelect_Impl: Sized {
    fn Count(&self) -> windows_core::Result<u32>;
    fn Info(&self, lindex: i32, ppmt: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE, pdwflags: *mut u32, plcid: *mut u32, pdwgroup: *mut u32, ppszname: *mut windows_core::PWSTR, ppobject: *mut Option<windows_core::IUnknown>, ppunk: *mut Option<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Enable(&self, lindex: i32, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IAMStreamSelect {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IAMStreamSelect_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMStreamSelect_Vtbl
    where
        Identity: IAMStreamSelect_Impl,
    {
        unsafe extern "system" fn Count<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcstreams: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMStreamSelect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMStreamSelect_Impl::Count(this) {
                Ok(ok__) => {
                    pcstreams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Info<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, ppmt: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE, pdwflags: *mut u32, plcid: *mut u32, pdwgroup: *mut u32, ppszname: *mut windows_core::PWSTR, ppobject: *mut *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMStreamSelect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamSelect_Impl::Info(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&ppmt), core::mem::transmute_copy(&pdwflags), core::mem::transmute_copy(&plcid), core::mem::transmute_copy(&pdwgroup), core::mem::transmute_copy(&ppszname), core::mem::transmute_copy(&ppobject), core::mem::transmute_copy(&ppunk)).into()
        }
        unsafe extern "system" fn Enable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMStreamSelect_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMStreamSelect_Impl::Enable(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Info: Info::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMStreamSelect as windows_core::Interface>::IID
    }
}
pub trait IAMTVAudio_Impl: Sized {
    fn GetHardwareSupportedTVAudioModes(&self) -> windows_core::Result<i32>;
    fn GetAvailableTVAudioModes(&self) -> windows_core::Result<i32>;
    fn TVAudioMode(&self) -> windows_core::Result<i32>;
    fn SetTVAudioMode(&self, lmode: i32) -> windows_core::Result<()>;
    fn RegisterNotificationCallBack(&self, pnotify: Option<&IAMTunerNotification>, levents: i32) -> windows_core::Result<()>;
    fn UnRegisterNotificationCallBack(&self, pnotify: Option<&IAMTunerNotification>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTVAudio {}
impl IAMTVAudio_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTVAudio_Vtbl
    where
        Identity: IAMTVAudio_Impl,
    {
        unsafe extern "system" fn GetHardwareSupportedTVAudioModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plmodes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVAudio_Impl::GetHardwareSupportedTVAudioModes(this) {
                Ok(ok__) => {
                    plmodes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAvailableTVAudioModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plmodes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVAudio_Impl::GetAvailableTVAudioModes(this) {
                Ok(ok__) => {
                    plmodes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TVAudioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plmode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVAudio_Impl::TVAudioMode(this) {
                Ok(ok__) => {
                    plmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTVAudioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lmode: i32) -> windows_core::HRESULT
        where
            Identity: IAMTVAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVAudio_Impl::SetTVAudioMode(this, core::mem::transmute_copy(&lmode)).into()
        }
        unsafe extern "system" fn RegisterNotificationCallBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnotify: *mut core::ffi::c_void, levents: i32) -> windows_core::HRESULT
        where
            Identity: IAMTVAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVAudio_Impl::RegisterNotificationCallBack(this, windows_core::from_raw_borrowed(&pnotify), core::mem::transmute_copy(&levents)).into()
        }
        unsafe extern "system" fn UnRegisterNotificationCallBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnotify: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMTVAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVAudio_Impl::UnRegisterNotificationCallBack(this, windows_core::from_raw_borrowed(&pnotify)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetHardwareSupportedTVAudioModes: GetHardwareSupportedTVAudioModes::<Identity, OFFSET>,
            GetAvailableTVAudioModes: GetAvailableTVAudioModes::<Identity, OFFSET>,
            TVAudioMode: TVAudioMode::<Identity, OFFSET>,
            SetTVAudioMode: SetTVAudioMode::<Identity, OFFSET>,
            RegisterNotificationCallBack: RegisterNotificationCallBack::<Identity, OFFSET>,
            UnRegisterNotificationCallBack: UnRegisterNotificationCallBack::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTVAudio as windows_core::Interface>::IID
    }
}
pub trait IAMTVAudioNotification_Impl: Sized {
    fn OnEvent(&self, event: AMTVAudioEventType) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTVAudioNotification {}
impl IAMTVAudioNotification_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTVAudioNotification_Vtbl
    where
        Identity: IAMTVAudioNotification_Impl,
    {
        unsafe extern "system" fn OnEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, event: AMTVAudioEventType) -> windows_core::HRESULT
        where
            Identity: IAMTVAudioNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVAudioNotification_Impl::OnEvent(this, core::mem::transmute_copy(&event)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnEvent: OnEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTVAudioNotification as windows_core::Interface>::IID
    }
}
pub trait IAMTVTuner_Impl: Sized + IAMTuner_Impl {
    fn AvailableTVFormats(&self) -> windows_core::Result<i32>;
    fn TVFormat(&self) -> windows_core::Result<i32>;
    fn AutoTune(&self, lchannel: i32) -> windows_core::Result<i32>;
    fn StoreAutoTune(&self) -> windows_core::Result<()>;
    fn NumInputConnections(&self) -> windows_core::Result<i32>;
    fn put_InputType(&self, lindex: i32, inputtype: TunerInputType) -> windows_core::Result<()>;
    fn get_InputType(&self, lindex: i32) -> windows_core::Result<TunerInputType>;
    fn SetConnectInput(&self, lindex: i32) -> windows_core::Result<()>;
    fn ConnectInput(&self) -> windows_core::Result<i32>;
    fn VideoFrequency(&self) -> windows_core::Result<i32>;
    fn AudioFrequency(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IAMTVTuner {}
impl IAMTVTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTVTuner_Vtbl
    where
        Identity: IAMTVTuner_Impl,
    {
        unsafe extern "system" fn AvailableTVFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lanalogvideostandard: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::AvailableTVFormats(this) {
                Ok(ok__) => {
                    lanalogvideostandard.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TVFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planalogvideostandard: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::TVFormat(this) {
                Ok(ok__) => {
                    planalogvideostandard.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AutoTune<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lchannel: i32, plfoundsignal: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::AutoTune(this, core::mem::transmute_copy(&lchannel)) {
                Ok(ok__) => {
                    plfoundsignal.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StoreAutoTune<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVTuner_Impl::StoreAutoTune(this).into()
        }
        unsafe extern "system" fn NumInputConnections<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plnuminputconnections: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::NumInputConnections(this) {
                Ok(ok__) => {
                    plnuminputconnections.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_InputType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, inputtype: TunerInputType) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVTuner_Impl::put_InputType(this, core::mem::transmute_copy(&lindex), core::mem::transmute_copy(&inputtype)).into()
        }
        unsafe extern "system" fn get_InputType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32, pinputtype: *mut TunerInputType) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::get_InputType(this, core::mem::transmute_copy(&lindex)) {
                Ok(ok__) => {
                    pinputtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetConnectInput<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lindex: i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTVTuner_Impl::SetConnectInput(this, core::mem::transmute_copy(&lindex)).into()
        }
        unsafe extern "system" fn ConnectInput<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plindex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::ConnectInput(this) {
                Ok(ok__) => {
                    plindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lfreq: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::VideoFrequency(this) {
                Ok(ok__) => {
                    lfreq.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, lfreq: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTVTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTVTuner_Impl::AudioFrequency(this) {
                Ok(ok__) => {
                    lfreq.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IAMTuner_Vtbl::new::<Identity, OFFSET>(),
            AvailableTVFormats: AvailableTVFormats::<Identity, OFFSET>,
            TVFormat: TVFormat::<Identity, OFFSET>,
            AutoTune: AutoTune::<Identity, OFFSET>,
            StoreAutoTune: StoreAutoTune::<Identity, OFFSET>,
            NumInputConnections: NumInputConnections::<Identity, OFFSET>,
            put_InputType: put_InputType::<Identity, OFFSET>,
            get_InputType: get_InputType::<Identity, OFFSET>,
            SetConnectInput: SetConnectInput::<Identity, OFFSET>,
            ConnectInput: ConnectInput::<Identity, OFFSET>,
            VideoFrequency: VideoFrequency::<Identity, OFFSET>,
            AudioFrequency: AudioFrequency::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTVTuner as windows_core::Interface>::IID || iid == &<IAMTuner as windows_core::Interface>::IID
    }
}
pub trait IAMTimecodeDisplay_Impl: Sized {
    fn GetTCDisplayEnable(&self) -> windows_core::Result<i32>;
    fn SetTCDisplayEnable(&self, state: i32) -> windows_core::Result<()>;
    fn GetTCDisplay(&self, param: i32) -> windows_core::Result<i32>;
    fn SetTCDisplay(&self, param: i32, value: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTimecodeDisplay {}
impl IAMTimecodeDisplay_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTimecodeDisplay_Vtbl
    where
        Identity: IAMTimecodeDisplay_Impl,
    {
        unsafe extern "system" fn GetTCDisplayEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeDisplay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTimecodeDisplay_Impl::GetTCDisplayEnable(this) {
                Ok(ok__) => {
                    pstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCDisplayEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeDisplay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeDisplay_Impl::SetTCDisplayEnable(this, core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetTCDisplay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeDisplay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTimecodeDisplay_Impl::GetTCDisplay(this, core::mem::transmute_copy(&param)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCDisplay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeDisplay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeDisplay_Impl::SetTCDisplay(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTCDisplayEnable: GetTCDisplayEnable::<Identity, OFFSET>,
            SetTCDisplayEnable: SetTCDisplayEnable::<Identity, OFFSET>,
            GetTCDisplay: GetTCDisplay::<Identity, OFFSET>,
            SetTCDisplay: SetTCDisplay::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTimecodeDisplay as windows_core::Interface>::IID
    }
}
pub trait IAMTimecodeGenerator_Impl: Sized {
    fn GetTCGMode(&self, param: i32) -> windows_core::Result<i32>;
    fn SetTCGMode(&self, param: i32, value: i32) -> windows_core::Result<()>;
    fn SetVITCLine(&self, line: i32) -> windows_core::Result<()>;
    fn VITCLine(&self) -> windows_core::Result<i32>;
    fn SetTimecode(&self, ptimecodesample: *const super::TIMECODE_SAMPLE) -> windows_core::Result<()>;
    fn GetTimecode(&self, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTimecodeGenerator {}
impl IAMTimecodeGenerator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTimecodeGenerator_Vtbl
    where
        Identity: IAMTimecodeGenerator_Impl,
    {
        unsafe extern "system" fn GetTCGMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeGenerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTimecodeGenerator_Impl::GetTCGMode(this, core::mem::transmute_copy(&param)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCGMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeGenerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeGenerator_Impl::SetTCGMode(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetVITCLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeGenerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeGenerator_Impl::SetVITCLine(this, core::mem::transmute_copy(&line)).into()
        }
        unsafe extern "system" fn VITCLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pline: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeGenerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTimecodeGenerator_Impl::VITCLine(this) {
                Ok(ok__) => {
                    pline.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTimecode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimecodesample: *const super::TIMECODE_SAMPLE) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeGenerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeGenerator_Impl::SetTimecode(this, core::mem::transmute_copy(&ptimecodesample)).into()
        }
        unsafe extern "system" fn GetTimecode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeGenerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeGenerator_Impl::GetTimecode(this, core::mem::transmute_copy(&ptimecodesample)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTCGMode: GetTCGMode::<Identity, OFFSET>,
            SetTCGMode: SetTCGMode::<Identity, OFFSET>,
            SetVITCLine: SetVITCLine::<Identity, OFFSET>,
            VITCLine: VITCLine::<Identity, OFFSET>,
            SetTimecode: SetTimecode::<Identity, OFFSET>,
            GetTimecode: GetTimecode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTimecodeGenerator as windows_core::Interface>::IID
    }
}
pub trait IAMTimecodeReader_Impl: Sized {
    fn GetTCRMode(&self, param: i32) -> windows_core::Result<i32>;
    fn SetTCRMode(&self, param: i32, value: i32) -> windows_core::Result<()>;
    fn SetVITCLine(&self, line: i32) -> windows_core::Result<()>;
    fn VITCLine(&self) -> windows_core::Result<i32>;
    fn GetTimecode(&self, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTimecodeReader {}
impl IAMTimecodeReader_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTimecodeReader_Vtbl
    where
        Identity: IAMTimecodeReader_Impl,
    {
        unsafe extern "system" fn GetTCRMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, pvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTimecodeReader_Impl::GetTCRMode(this, core::mem::transmute_copy(&param)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTCRMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, param: i32, value: i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeReader_Impl::SetTCRMode(this, core::mem::transmute_copy(&param), core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn SetVITCLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeReader_Impl::SetVITCLine(this, core::mem::transmute_copy(&line)).into()
        }
        unsafe extern "system" fn VITCLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pline: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTimecodeReader_Impl::VITCLine(this) {
                Ok(ok__) => {
                    pline.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimecode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimecodesample: *mut super::TIMECODE_SAMPLE) -> windows_core::HRESULT
        where
            Identity: IAMTimecodeReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTimecodeReader_Impl::GetTimecode(this, core::mem::transmute_copy(&ptimecodesample)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTCRMode: GetTCRMode::<Identity, OFFSET>,
            SetTCRMode: SetTCRMode::<Identity, OFFSET>,
            SetVITCLine: SetVITCLine::<Identity, OFFSET>,
            VITCLine: VITCLine::<Identity, OFFSET>,
            GetTimecode: GetTimecode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTimecodeReader as windows_core::Interface>::IID
    }
}
pub trait IAMTuner_Impl: Sized {
    fn put_Channel(&self, lchannel: i32, lvideosubchannel: i32, laudiosubchannel: i32) -> windows_core::Result<()>;
    fn get_Channel(&self, plchannel: *mut i32, plvideosubchannel: *mut i32, plaudiosubchannel: *mut i32) -> windows_core::Result<()>;
    fn ChannelMinMax(&self, lchannelmin: *mut i32, lchannelmax: *mut i32) -> windows_core::Result<()>;
    fn SetCountryCode(&self, lcountrycode: i32) -> windows_core::Result<()>;
    fn CountryCode(&self) -> windows_core::Result<i32>;
    fn SetTuningSpace(&self, ltuningspace: i32) -> windows_core::Result<()>;
    fn TuningSpace(&self) -> windows_core::Result<i32>;
    fn Logon(&self, hcurrentuser: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn Logout(&self) -> windows_core::Result<()>;
    fn SignalPresent(&self) -> windows_core::Result<i32>;
    fn SetMode(&self, lmode: AMTunerModeType) -> windows_core::Result<()>;
    fn Mode(&self) -> windows_core::Result<AMTunerModeType>;
    fn GetAvailableModes(&self) -> windows_core::Result<i32>;
    fn RegisterNotificationCallBack(&self, pnotify: Option<&IAMTunerNotification>, levents: i32) -> windows_core::Result<()>;
    fn UnRegisterNotificationCallBack(&self, pnotify: Option<&IAMTunerNotification>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTuner {}
impl IAMTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTuner_Vtbl
    where
        Identity: IAMTuner_Impl,
    {
        unsafe extern "system" fn put_Channel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lchannel: i32, lvideosubchannel: i32, laudiosubchannel: i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::put_Channel(this, core::mem::transmute_copy(&lchannel), core::mem::transmute_copy(&lvideosubchannel), core::mem::transmute_copy(&laudiosubchannel)).into()
        }
        unsafe extern "system" fn get_Channel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plchannel: *mut i32, plvideosubchannel: *mut i32, plaudiosubchannel: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::get_Channel(this, core::mem::transmute_copy(&plchannel), core::mem::transmute_copy(&plvideosubchannel), core::mem::transmute_copy(&plaudiosubchannel)).into()
        }
        unsafe extern "system" fn ChannelMinMax<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lchannelmin: *mut i32, lchannelmax: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::ChannelMinMax(this, core::mem::transmute_copy(&lchannelmin), core::mem::transmute_copy(&lchannelmax)).into()
        }
        unsafe extern "system" fn SetCountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcountrycode: i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::SetCountryCode(this, core::mem::transmute_copy(&lcountrycode)).into()
        }
        unsafe extern "system" fn CountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcountrycode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTuner_Impl::CountryCode(this) {
                Ok(ok__) => {
                    plcountrycode.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, ltuningspace: i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::SetTuningSpace(this, core::mem::transmute_copy(&ltuningspace)).into()
        }
        unsafe extern "system" fn TuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pltuningspace: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTuner_Impl::TuningSpace(this) {
                Ok(ok__) => {
                    pltuningspace.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Logon<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hcurrentuser: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::Logon(this, core::mem::transmute_copy(&hcurrentuser)).into()
        }
        unsafe extern "system" fn Logout<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::Logout(this).into()
        }
        unsafe extern "system" fn SignalPresent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plsignalstrength: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTuner_Impl::SignalPresent(this) {
                Ok(ok__) => {
                    plsignalstrength.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, lmode: AMTunerModeType) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::SetMode(this, core::mem::transmute_copy(&lmode)).into()
        }
        unsafe extern "system" fn Mode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plmode: *mut AMTunerModeType) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTuner_Impl::Mode(this) {
                Ok(ok__) => {
                    plmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAvailableModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plmodes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMTuner_Impl::GetAvailableModes(this) {
                Ok(ok__) => {
                    plmodes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterNotificationCallBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnotify: *mut core::ffi::c_void, levents: i32) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::RegisterNotificationCallBack(this, windows_core::from_raw_borrowed(&pnotify), core::mem::transmute_copy(&levents)).into()
        }
        unsafe extern "system" fn UnRegisterNotificationCallBack<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnotify: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTuner_Impl::UnRegisterNotificationCallBack(this, windows_core::from_raw_borrowed(&pnotify)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            put_Channel: put_Channel::<Identity, OFFSET>,
            get_Channel: get_Channel::<Identity, OFFSET>,
            ChannelMinMax: ChannelMinMax::<Identity, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, OFFSET>,
            CountryCode: CountryCode::<Identity, OFFSET>,
            SetTuningSpace: SetTuningSpace::<Identity, OFFSET>,
            TuningSpace: TuningSpace::<Identity, OFFSET>,
            Logon: Logon::<Identity, OFFSET>,
            Logout: Logout::<Identity, OFFSET>,
            SignalPresent: SignalPresent::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            Mode: Mode::<Identity, OFFSET>,
            GetAvailableModes: GetAvailableModes::<Identity, OFFSET>,
            RegisterNotificationCallBack: RegisterNotificationCallBack::<Identity, OFFSET>,
            UnRegisterNotificationCallBack: UnRegisterNotificationCallBack::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTuner as windows_core::Interface>::IID
    }
}
pub trait IAMTunerNotification_Impl: Sized {
    fn OnEvent(&self, event: AMTunerEventType) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMTunerNotification {}
impl IAMTunerNotification_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMTunerNotification_Vtbl
    where
        Identity: IAMTunerNotification_Impl,
    {
        unsafe extern "system" fn OnEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, event: AMTunerEventType) -> windows_core::HRESULT
        where
            Identity: IAMTunerNotification_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMTunerNotification_Impl::OnEvent(this, core::mem::transmute_copy(&event)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnEvent: OnEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMTunerNotification as windows_core::Interface>::IID
    }
}
pub trait IAMVfwCaptureDialogs_Impl: Sized {
    fn HasDialog(&self, idialog: i32) -> windows_core::Result<()>;
    fn ShowDialog(&self, idialog: i32, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SendDriverMessage(&self, idialog: i32, umsg: i32, dw1: i32, dw2: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMVfwCaptureDialogs {}
impl IAMVfwCaptureDialogs_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVfwCaptureDialogs_Vtbl
    where
        Identity: IAMVfwCaptureDialogs_Impl,
    {
        unsafe extern "system" fn HasDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idialog: i32) -> windows_core::HRESULT
        where
            Identity: IAMVfwCaptureDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCaptureDialogs_Impl::HasDialog(this, core::mem::transmute_copy(&idialog)).into()
        }
        unsafe extern "system" fn ShowDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idialog: i32, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IAMVfwCaptureDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCaptureDialogs_Impl::ShowDialog(this, core::mem::transmute_copy(&idialog), core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn SendDriverMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idialog: i32, umsg: i32, dw1: i32, dw2: i32) -> windows_core::HRESULT
        where
            Identity: IAMVfwCaptureDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCaptureDialogs_Impl::SendDriverMessage(this, core::mem::transmute_copy(&idialog), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&dw1), core::mem::transmute_copy(&dw2)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            HasDialog: HasDialog::<Identity, OFFSET>,
            ShowDialog: ShowDialog::<Identity, OFFSET>,
            SendDriverMessage: SendDriverMessage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVfwCaptureDialogs as windows_core::Interface>::IID
    }
}
pub trait IAMVfwCompressDialogs_Impl: Sized {
    fn ShowDialog(&self, idialog: i32, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetState(&self, pstate: *mut core::ffi::c_void, pcbstate: *mut i32) -> windows_core::Result<()>;
    fn SetState(&self, pstate: *const core::ffi::c_void, cbstate: i32) -> windows_core::Result<()>;
    fn SendDriverMessage(&self, umsg: i32, dw1: i32, dw2: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMVfwCompressDialogs {}
impl IAMVfwCompressDialogs_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVfwCompressDialogs_Vtbl
    where
        Identity: IAMVfwCompressDialogs_Impl,
    {
        unsafe extern "system" fn ShowDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idialog: i32, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IAMVfwCompressDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCompressDialogs_Impl::ShowDialog(this, core::mem::transmute_copy(&idialog), core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *mut core::ffi::c_void, pcbstate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVfwCompressDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCompressDialogs_Impl::GetState(this, core::mem::transmute_copy(&pstate), core::mem::transmute_copy(&pcbstate)).into()
        }
        unsafe extern "system" fn SetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *const core::ffi::c_void, cbstate: i32) -> windows_core::HRESULT
        where
            Identity: IAMVfwCompressDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCompressDialogs_Impl::SetState(this, core::mem::transmute_copy(&pstate), core::mem::transmute_copy(&cbstate)).into()
        }
        unsafe extern "system" fn SendDriverMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: i32, dw1: i32, dw2: i32) -> windows_core::HRESULT
        where
            Identity: IAMVfwCompressDialogs_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVfwCompressDialogs_Impl::SendDriverMessage(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&dw1), core::mem::transmute_copy(&dw2)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShowDialog: ShowDialog::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            SetState: SetState::<Identity, OFFSET>,
            SendDriverMessage: SendDriverMessage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVfwCompressDialogs as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IAMVideoAccelerator_Impl: Sized {
    fn GetVideoAcceleratorGUIDs(&self, pdwnumguidssupported: *mut u32, pguidssupported: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetUncompFormatsSupported(&self, pguid: *const windows_core::GUID, pdwnumformatssupported: *mut u32, pformatssupported: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> windows_core::Result<()>;
    fn GetInternalMemInfo(&self, pguid: *const windows_core::GUID, pamvauncompdatainfo: *const AMVAUncompDataInfo, pamvainternalmeminfo: *mut AMVAInternalMemInfo) -> windows_core::Result<()>;
    fn GetCompBufferInfo(&self, pguid: *const windows_core::GUID, pamvauncompdatainfo: *const AMVAUncompDataInfo, pdwnumtypescompbuffers: *mut u32, pamvacompbufferinfo: *mut AMVACompBufferInfo) -> windows_core::Result<()>;
    fn GetInternalCompBufferInfo(&self, pdwnumtypescompbuffers: *mut u32, pamvacompbufferinfo: *mut AMVACompBufferInfo) -> windows_core::Result<()>;
    fn BeginFrame(&self, amvabeginframeinfo: *const AMVABeginFrameInfo) -> windows_core::Result<()>;
    fn EndFrame(&self, pendframeinfo: *const AMVAEndFrameInfo) -> windows_core::Result<()>;
    fn GetBuffer(&self, dwtypeindex: u32, dwbufferindex: u32, breadonly: super::super::Foundation::BOOL, ppbuffer: *mut *mut core::ffi::c_void, lpstride: *mut i32) -> windows_core::Result<()>;
    fn ReleaseBuffer(&self, dwtypeindex: u32, dwbufferindex: u32) -> windows_core::Result<()>;
    fn Execute(&self, dwfunction: u32, lpprivateinputdata: *const core::ffi::c_void, cbprivateinputdata: u32, lpprivateoutputdat: *const core::ffi::c_void, cbprivateoutputdata: u32, dwnumbuffers: u32, pamvabufferinfo: *const AMVABUFFERINFO) -> windows_core::Result<()>;
    fn QueryRenderStatus(&self, dwtypeindex: u32, dwbufferindex: u32, dwflags: u32) -> windows_core::Result<()>;
    fn DisplayFrame(&self, dwfliptoindex: u32, pmediasample: Option<&IMediaSample>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IAMVideoAccelerator {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IAMVideoAccelerator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVideoAccelerator_Vtbl
    where
        Identity: IAMVideoAccelerator_Impl,
    {
        unsafe extern "system" fn GetVideoAcceleratorGUIDs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumguidssupported: *mut u32, pguidssupported: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::GetVideoAcceleratorGUIDs(this, core::mem::transmute_copy(&pdwnumguidssupported), core::mem::transmute_copy(&pguidssupported)).into()
        }
        unsafe extern "system" fn GetUncompFormatsSupported<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, pdwnumformatssupported: *mut u32, pformatssupported: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::GetUncompFormatsSupported(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pdwnumformatssupported), core::mem::transmute_copy(&pformatssupported)).into()
        }
        unsafe extern "system" fn GetInternalMemInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, pamvauncompdatainfo: *const AMVAUncompDataInfo, pamvainternalmeminfo: *mut AMVAInternalMemInfo) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::GetInternalMemInfo(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pamvauncompdatainfo), core::mem::transmute_copy(&pamvainternalmeminfo)).into()
        }
        unsafe extern "system" fn GetCompBufferInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, pamvauncompdatainfo: *const AMVAUncompDataInfo, pdwnumtypescompbuffers: *mut u32, pamvacompbufferinfo: *mut AMVACompBufferInfo) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::GetCompBufferInfo(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pamvauncompdatainfo), core::mem::transmute_copy(&pdwnumtypescompbuffers), core::mem::transmute_copy(&pamvacompbufferinfo)).into()
        }
        unsafe extern "system" fn GetInternalCompBufferInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumtypescompbuffers: *mut u32, pamvacompbufferinfo: *mut AMVACompBufferInfo) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::GetInternalCompBufferInfo(this, core::mem::transmute_copy(&pdwnumtypescompbuffers), core::mem::transmute_copy(&pamvacompbufferinfo)).into()
        }
        unsafe extern "system" fn BeginFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, amvabeginframeinfo: *const AMVABeginFrameInfo) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::BeginFrame(this, core::mem::transmute_copy(&amvabeginframeinfo)).into()
        }
        unsafe extern "system" fn EndFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pendframeinfo: *const AMVAEndFrameInfo) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::EndFrame(this, core::mem::transmute_copy(&pendframeinfo)).into()
        }
        unsafe extern "system" fn GetBuffer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtypeindex: u32, dwbufferindex: u32, breadonly: super::super::Foundation::BOOL, ppbuffer: *mut *mut core::ffi::c_void, lpstride: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::GetBuffer(this, core::mem::transmute_copy(&dwtypeindex), core::mem::transmute_copy(&dwbufferindex), core::mem::transmute_copy(&breadonly), core::mem::transmute_copy(&ppbuffer), core::mem::transmute_copy(&lpstride)).into()
        }
        unsafe extern "system" fn ReleaseBuffer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtypeindex: u32, dwbufferindex: u32) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::ReleaseBuffer(this, core::mem::transmute_copy(&dwtypeindex), core::mem::transmute_copy(&dwbufferindex)).into()
        }
        unsafe extern "system" fn Execute<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfunction: u32, lpprivateinputdata: *const core::ffi::c_void, cbprivateinputdata: u32, lpprivateoutputdat: *const core::ffi::c_void, cbprivateoutputdata: u32, dwnumbuffers: u32, pamvabufferinfo: *const AMVABUFFERINFO) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::Execute(this, core::mem::transmute_copy(&dwfunction), core::mem::transmute_copy(&lpprivateinputdata), core::mem::transmute_copy(&cbprivateinputdata), core::mem::transmute_copy(&lpprivateoutputdat), core::mem::transmute_copy(&cbprivateoutputdata), core::mem::transmute_copy(&dwnumbuffers), core::mem::transmute_copy(&pamvabufferinfo)).into()
        }
        unsafe extern "system" fn QueryRenderStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtypeindex: u32, dwbufferindex: u32, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::QueryRenderStatus(this, core::mem::transmute_copy(&dwtypeindex), core::mem::transmute_copy(&dwbufferindex), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn DisplayFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfliptoindex: u32, pmediasample: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAccelerator_Impl::DisplayFrame(this, core::mem::transmute_copy(&dwfliptoindex), windows_core::from_raw_borrowed(&pmediasample)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetVideoAcceleratorGUIDs: GetVideoAcceleratorGUIDs::<Identity, OFFSET>,
            GetUncompFormatsSupported: GetUncompFormatsSupported::<Identity, OFFSET>,
            GetInternalMemInfo: GetInternalMemInfo::<Identity, OFFSET>,
            GetCompBufferInfo: GetCompBufferInfo::<Identity, OFFSET>,
            GetInternalCompBufferInfo: GetInternalCompBufferInfo::<Identity, OFFSET>,
            BeginFrame: BeginFrame::<Identity, OFFSET>,
            EndFrame: EndFrame::<Identity, OFFSET>,
            GetBuffer: GetBuffer::<Identity, OFFSET>,
            ReleaseBuffer: ReleaseBuffer::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            QueryRenderStatus: QueryRenderStatus::<Identity, OFFSET>,
            DisplayFrame: DisplayFrame::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVideoAccelerator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IAMVideoAcceleratorNotify_Impl: Sized {
    fn GetUncompSurfacesInfo(&self, pguid: *const windows_core::GUID, puncompbufferinfo: *mut AMVAUncompBufferInfo) -> windows_core::Result<()>;
    fn SetUncompSurfacesInfo(&self, dwactualuncompsurfacesallocated: u32) -> windows_core::Result<()>;
    fn GetCreateVideoAcceleratorData(&self, pguid: *const windows_core::GUID, pdwsizemiscdata: *mut u32, ppmiscdata: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IAMVideoAcceleratorNotify {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IAMVideoAcceleratorNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVideoAcceleratorNotify_Vtbl
    where
        Identity: IAMVideoAcceleratorNotify_Impl,
    {
        unsafe extern "system" fn GetUncompSurfacesInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, puncompbufferinfo: *mut AMVAUncompBufferInfo) -> windows_core::HRESULT
        where
            Identity: IAMVideoAcceleratorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAcceleratorNotify_Impl::GetUncompSurfacesInfo(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&puncompbufferinfo)).into()
        }
        unsafe extern "system" fn SetUncompSurfacesInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwactualuncompsurfacesallocated: u32) -> windows_core::HRESULT
        where
            Identity: IAMVideoAcceleratorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAcceleratorNotify_Impl::SetUncompSurfacesInfo(this, core::mem::transmute_copy(&dwactualuncompsurfacesallocated)).into()
        }
        unsafe extern "system" fn GetCreateVideoAcceleratorData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, pdwsizemiscdata: *mut u32, ppmiscdata: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMVideoAcceleratorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoAcceleratorNotify_Impl::GetCreateVideoAcceleratorData(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pdwsizemiscdata), core::mem::transmute_copy(&ppmiscdata)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetUncompSurfacesInfo: GetUncompSurfacesInfo::<Identity, OFFSET>,
            SetUncompSurfacesInfo: SetUncompSurfacesInfo::<Identity, OFFSET>,
            GetCreateVideoAcceleratorData: GetCreateVideoAcceleratorData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVideoAcceleratorNotify as windows_core::Interface>::IID
    }
}
pub trait IAMVideoCompression_Impl: Sized {
    fn SetKeyFrameRate(&self, keyframerate: i32) -> windows_core::Result<()>;
    fn KeyFrameRate(&self) -> windows_core::Result<i32>;
    fn SetPFramesPerKeyFrame(&self, pframesperkeyframe: i32) -> windows_core::Result<()>;
    fn PFramesPerKeyFrame(&self) -> windows_core::Result<i32>;
    fn SetQuality(&self, quality: f64) -> windows_core::Result<()>;
    fn Quality(&self) -> windows_core::Result<f64>;
    fn SetWindowSize(&self, windowsize: u64) -> windows_core::Result<()>;
    fn WindowSize(&self) -> windows_core::Result<u64>;
    fn GetInfo(&self, pszversion: windows_core::PWSTR, pcbversion: *mut i32, pszdescription: windows_core::PWSTR, pcbdescription: *mut i32, pdefaultkeyframerate: *mut i32, pdefaultpframesperkey: *mut i32, pdefaultquality: *mut f64, pcapabilities: *mut i32) -> windows_core::Result<()>;
    fn OverrideKeyFrame(&self, framenumber: i32) -> windows_core::Result<()>;
    fn OverrideFrameSize(&self, framenumber: i32, size: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMVideoCompression {}
impl IAMVideoCompression_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVideoCompression_Vtbl
    where
        Identity: IAMVideoCompression_Impl,
    {
        unsafe extern "system" fn SetKeyFrameRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keyframerate: i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::SetKeyFrameRate(this, core::mem::transmute_copy(&keyframerate)).into()
        }
        unsafe extern "system" fn KeyFrameRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkeyframerate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoCompression_Impl::KeyFrameRate(this) {
                Ok(ok__) => {
                    pkeyframerate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPFramesPerKeyFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pframesperkeyframe: i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::SetPFramesPerKeyFrame(this, core::mem::transmute_copy(&pframesperkeyframe)).into()
        }
        unsafe extern "system" fn PFramesPerKeyFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppframesperkeyframe: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoCompression_Impl::PFramesPerKeyFrame(this) {
                Ok(ok__) => {
                    ppframesperkeyframe.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetQuality<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, quality: f64) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::SetQuality(this, core::mem::transmute_copy(&quality)).into()
        }
        unsafe extern "system" fn Quality<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pquality: *mut f64) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoCompression_Impl::Quality(this) {
                Ok(ok__) => {
                    pquality.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowsize: u64) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::SetWindowSize(this, core::mem::transmute_copy(&windowsize)).into()
        }
        unsafe extern "system" fn WindowSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwindowsize: *mut u64) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoCompression_Impl::WindowSize(this) {
                Ok(ok__) => {
                    pwindowsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszversion: windows_core::PWSTR, pcbversion: *mut i32, pszdescription: windows_core::PWSTR, pcbdescription: *mut i32, pdefaultkeyframerate: *mut i32, pdefaultpframesperkey: *mut i32, pdefaultquality: *mut f64, pcapabilities: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::GetInfo(this, core::mem::transmute_copy(&pszversion), core::mem::transmute_copy(&pcbversion), core::mem::transmute_copy(&pszdescription), core::mem::transmute_copy(&pcbdescription), core::mem::transmute_copy(&pdefaultkeyframerate), core::mem::transmute_copy(&pdefaultpframesperkey), core::mem::transmute_copy(&pdefaultquality), core::mem::transmute_copy(&pcapabilities)).into()
        }
        unsafe extern "system" fn OverrideKeyFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, framenumber: i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::OverrideKeyFrame(this, core::mem::transmute_copy(&framenumber)).into()
        }
        unsafe extern "system" fn OverrideFrameSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, framenumber: i32, size: i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoCompression_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoCompression_Impl::OverrideFrameSize(this, core::mem::transmute_copy(&framenumber), core::mem::transmute_copy(&size)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetKeyFrameRate: SetKeyFrameRate::<Identity, OFFSET>,
            KeyFrameRate: KeyFrameRate::<Identity, OFFSET>,
            SetPFramesPerKeyFrame: SetPFramesPerKeyFrame::<Identity, OFFSET>,
            PFramesPerKeyFrame: PFramesPerKeyFrame::<Identity, OFFSET>,
            SetQuality: SetQuality::<Identity, OFFSET>,
            Quality: Quality::<Identity, OFFSET>,
            SetWindowSize: SetWindowSize::<Identity, OFFSET>,
            WindowSize: WindowSize::<Identity, OFFSET>,
            GetInfo: GetInfo::<Identity, OFFSET>,
            OverrideKeyFrame: OverrideKeyFrame::<Identity, OFFSET>,
            OverrideFrameSize: OverrideFrameSize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVideoCompression as windows_core::Interface>::IID
    }
}
pub trait IAMVideoControl_Impl: Sized {
    fn GetCaps(&self, ppin: Option<&IPin>) -> windows_core::Result<i32>;
    fn SetMode(&self, ppin: Option<&IPin>, mode: i32) -> windows_core::Result<()>;
    fn GetMode(&self, ppin: Option<&IPin>) -> windows_core::Result<i32>;
    fn GetCurrentActualFrameRate(&self, ppin: Option<&IPin>) -> windows_core::Result<i64>;
    fn GetMaxAvailableFrameRate(&self, ppin: Option<&IPin>, iindex: i32, dimensions: &super::super::Foundation::SIZE) -> windows_core::Result<i64>;
    fn GetFrameRateList(&self, ppin: Option<&IPin>, iindex: i32, dimensions: &super::super::Foundation::SIZE, listsize: *mut i32, framerates: *mut *mut i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMVideoControl {}
impl IAMVideoControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVideoControl_Vtbl
    where
        Identity: IAMVideoControl_Impl,
    {
        unsafe extern "system" fn GetCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, pcapsflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoControl_Impl::GetCaps(this, windows_core::from_raw_borrowed(&ppin)) {
                Ok(ok__) => {
                    pcapsflags.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, ppin: *mut core::ffi::c_void, mode: i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoControl_Impl::SetMode(this, windows_core::from_raw_borrowed(&ppin), core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, mode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoControl_Impl::GetMode(this, windows_core::from_raw_borrowed(&ppin)) {
                Ok(ok__) => {
                    mode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentActualFrameRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, actualframerate: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMVideoControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoControl_Impl::GetCurrentActualFrameRate(this, windows_core::from_raw_borrowed(&ppin)) {
                Ok(ok__) => {
                    actualframerate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMaxAvailableFrameRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, iindex: i32, dimensions: super::super::Foundation::SIZE, maxavailableframerate: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMVideoControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoControl_Impl::GetMaxAvailableFrameRate(this, windows_core::from_raw_borrowed(&ppin), core::mem::transmute_copy(&iindex), core::mem::transmute(&dimensions)) {
                Ok(ok__) => {
                    maxavailableframerate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetFrameRateList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, iindex: i32, dimensions: super::super::Foundation::SIZE, listsize: *mut i32, framerates: *mut *mut i64) -> windows_core::HRESULT
        where
            Identity: IAMVideoControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoControl_Impl::GetFrameRateList(this, windows_core::from_raw_borrowed(&ppin), core::mem::transmute_copy(&iindex), core::mem::transmute(&dimensions), core::mem::transmute_copy(&listsize), core::mem::transmute_copy(&framerates)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCaps: GetCaps::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            GetMode: GetMode::<Identity, OFFSET>,
            GetCurrentActualFrameRate: GetCurrentActualFrameRate::<Identity, OFFSET>,
            GetMaxAvailableFrameRate: GetMaxAvailableFrameRate::<Identity, OFFSET>,
            GetFrameRateList: GetFrameRateList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVideoControl as windows_core::Interface>::IID
    }
}
pub trait IAMVideoDecimationProperties_Impl: Sized {
    fn QueryDecimationUsage(&self) -> windows_core::Result<DECIMATION_USAGE>;
    fn SetDecimationUsage(&self, usage: DECIMATION_USAGE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMVideoDecimationProperties {}
impl IAMVideoDecimationProperties_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVideoDecimationProperties_Vtbl
    where
        Identity: IAMVideoDecimationProperties_Impl,
    {
        unsafe extern "system" fn QueryDecimationUsage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpusage: *mut DECIMATION_USAGE) -> windows_core::HRESULT
        where
            Identity: IAMVideoDecimationProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAMVideoDecimationProperties_Impl::QueryDecimationUsage(this) {
                Ok(ok__) => {
                    lpusage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecimationUsage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usage: DECIMATION_USAGE) -> windows_core::HRESULT
        where
            Identity: IAMVideoDecimationProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoDecimationProperties_Impl::SetDecimationUsage(this, core::mem::transmute_copy(&usage)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryDecimationUsage: QueryDecimationUsage::<Identity, OFFSET>,
            SetDecimationUsage: SetDecimationUsage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVideoDecimationProperties as windows_core::Interface>::IID
    }
}
pub trait IAMVideoProcAmp_Impl: Sized {
    fn GetRange(&self, property: i32, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflags: *mut i32) -> windows_core::Result<()>;
    fn Set(&self, property: i32, lvalue: i32, flags: i32) -> windows_core::Result<()>;
    fn Get(&self, property: i32, lvalue: *mut i32, flags: *mut i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMVideoProcAmp {}
impl IAMVideoProcAmp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMVideoProcAmp_Vtbl
    where
        Identity: IAMVideoProcAmp_Impl,
    {
        unsafe extern "system" fn GetRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: i32, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoProcAmp_Impl::GetRange(this, core::mem::transmute_copy(&property), core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflags)).into()
        }
        unsafe extern "system" fn Set<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: i32, lvalue: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoProcAmp_Impl::Set(this, core::mem::transmute_copy(&property), core::mem::transmute_copy(&lvalue), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn Get<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: i32, lvalue: *mut i32, flags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IAMVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMVideoProcAmp_Impl::Get(this, core::mem::transmute_copy(&property), core::mem::transmute_copy(&lvalue), core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetRange: GetRange::<Identity, OFFSET>,
            Set: Set::<Identity, OFFSET>,
            Get: Get::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMVideoProcAmp as windows_core::Interface>::IID
    }
}
pub trait IAMWMBufferPass_Impl: Sized {
    fn SetNotify(&self, pcallback: Option<&IAMWMBufferPassCallback>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMWMBufferPass {}
impl IAMWMBufferPass_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMWMBufferPass_Vtbl
    where
        Identity: IAMWMBufferPass_Impl,
    {
        unsafe extern "system" fn SetNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcallback: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMWMBufferPass_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWMBufferPass_Impl::SetNotify(this, windows_core::from_raw_borrowed(&pcallback)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetNotify: SetNotify::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMWMBufferPass as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
pub trait IAMWMBufferPassCallback_Impl: Sized {
    fn Notify(&self, pnssbuffer3: Option<&super::WindowsMediaFormat::INSSBuffer3>, ppin: Option<&IPin>, prtstart: *const i64, prtend: *const i64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
impl windows_core::RuntimeName for IAMWMBufferPassCallback {}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
impl IAMWMBufferPassCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMWMBufferPassCallback_Vtbl
    where
        Identity: IAMWMBufferPassCallback_Impl,
    {
        unsafe extern "system" fn Notify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnssbuffer3: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, prtstart: *const i64, prtend: *const i64) -> windows_core::HRESULT
        where
            Identity: IAMWMBufferPassCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWMBufferPassCallback_Impl::Notify(this, windows_core::from_raw_borrowed(&pnssbuffer3), windows_core::from_raw_borrowed(&ppin), core::mem::transmute_copy(&prtstart), core::mem::transmute_copy(&prtend)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Notify: Notify::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMWMBufferPassCallback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAMWstDecoder_Impl: Sized {
    fn GetDecoderLevel(&self, lplevel: *mut AM_WST_LEVEL) -> windows_core::Result<()>;
    fn GetCurrentService(&self, lpservice: *mut AM_WST_SERVICE) -> windows_core::Result<()>;
    fn GetServiceState(&self, lpstate: *mut AM_WST_STATE) -> windows_core::Result<()>;
    fn SetServiceState(&self, state: AM_WST_STATE) -> windows_core::Result<()>;
    fn GetOutputFormat(&self, lpbmih: *mut super::super::Graphics::Gdi::BITMAPINFOHEADER) -> windows_core::Result<()>;
    fn SetOutputFormat(&self, lpbmi: *mut super::super::Graphics::Gdi::BITMAPINFO) -> windows_core::Result<()>;
    fn GetBackgroundColor(&self, pdwphyscolor: *mut u32) -> windows_core::Result<()>;
    fn SetBackgroundColor(&self, dwphyscolor: u32) -> windows_core::Result<()>;
    fn GetRedrawAlways(&self, lpboption: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetRedrawAlways(&self, boption: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetDrawBackgroundMode(&self, lpmode: *mut AM_WST_DRAWBGMODE) -> windows_core::Result<()>;
    fn SetDrawBackgroundMode(&self, mode: AM_WST_DRAWBGMODE) -> windows_core::Result<()>;
    fn SetAnswerMode(&self, banswer: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetAnswerMode(&self, pbanswer: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetHoldPage(&self, bholdpage: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetHoldPage(&self, pbholdpage: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetCurrentPage(&self, pwstpage: *mut AM_WST_PAGE) -> windows_core::Result<()>;
    fn SetCurrentPage(&self, wstpage: &AM_WST_PAGE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAMWstDecoder {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAMWstDecoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMWstDecoder_Vtbl
    where
        Identity: IAMWstDecoder_Impl,
    {
        unsafe extern "system" fn GetDecoderLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplevel: *mut AM_WST_LEVEL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetDecoderLevel(this, core::mem::transmute_copy(&lplevel)).into()
        }
        unsafe extern "system" fn GetCurrentService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpservice: *mut AM_WST_SERVICE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetCurrentService(this, core::mem::transmute_copy(&lpservice)).into()
        }
        unsafe extern "system" fn GetServiceState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpstate: *mut AM_WST_STATE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetServiceState(this, core::mem::transmute_copy(&lpstate)).into()
        }
        unsafe extern "system" fn SetServiceState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: AM_WST_STATE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetServiceState(this, core::mem::transmute_copy(&state)).into()
        }
        unsafe extern "system" fn GetOutputFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbmih: *mut super::super::Graphics::Gdi::BITMAPINFOHEADER) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetOutputFormat(this, core::mem::transmute_copy(&lpbmih)).into()
        }
        unsafe extern "system" fn SetOutputFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbmi: *mut super::super::Graphics::Gdi::BITMAPINFO) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetOutputFormat(this, core::mem::transmute_copy(&lpbmi)).into()
        }
        unsafe extern "system" fn GetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwphyscolor: *mut u32) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetBackgroundColor(this, core::mem::transmute_copy(&pdwphyscolor)).into()
        }
        unsafe extern "system" fn SetBackgroundColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwphyscolor: u32) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetBackgroundColor(this, core::mem::transmute_copy(&dwphyscolor)).into()
        }
        unsafe extern "system" fn GetRedrawAlways<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpboption: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetRedrawAlways(this, core::mem::transmute_copy(&lpboption)).into()
        }
        unsafe extern "system" fn SetRedrawAlways<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, boption: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetRedrawAlways(this, core::mem::transmute_copy(&boption)).into()
        }
        unsafe extern "system" fn GetDrawBackgroundMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpmode: *mut AM_WST_DRAWBGMODE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetDrawBackgroundMode(this, core::mem::transmute_copy(&lpmode)).into()
        }
        unsafe extern "system" fn SetDrawBackgroundMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: AM_WST_DRAWBGMODE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetDrawBackgroundMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn SetAnswerMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, banswer: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetAnswerMode(this, core::mem::transmute_copy(&banswer)).into()
        }
        unsafe extern "system" fn GetAnswerMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbanswer: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetAnswerMode(this, core::mem::transmute_copy(&pbanswer)).into()
        }
        unsafe extern "system" fn SetHoldPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bholdpage: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetHoldPage(this, core::mem::transmute_copy(&bholdpage)).into()
        }
        unsafe extern "system" fn GetHoldPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbholdpage: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetHoldPage(this, core::mem::transmute_copy(&pbholdpage)).into()
        }
        unsafe extern "system" fn GetCurrentPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwstpage: *mut AM_WST_PAGE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::GetCurrentPage(this, core::mem::transmute_copy(&pwstpage)).into()
        }
        unsafe extern "system" fn SetCurrentPage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wstpage: AM_WST_PAGE) -> windows_core::HRESULT
        where
            Identity: IAMWstDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMWstDecoder_Impl::SetCurrentPage(this, core::mem::transmute(&wstpage)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDecoderLevel: GetDecoderLevel::<Identity, OFFSET>,
            GetCurrentService: GetCurrentService::<Identity, OFFSET>,
            GetServiceState: GetServiceState::<Identity, OFFSET>,
            SetServiceState: SetServiceState::<Identity, OFFSET>,
            GetOutputFormat: GetOutputFormat::<Identity, OFFSET>,
            SetOutputFormat: SetOutputFormat::<Identity, OFFSET>,
            GetBackgroundColor: GetBackgroundColor::<Identity, OFFSET>,
            SetBackgroundColor: SetBackgroundColor::<Identity, OFFSET>,
            GetRedrawAlways: GetRedrawAlways::<Identity, OFFSET>,
            SetRedrawAlways: SetRedrawAlways::<Identity, OFFSET>,
            GetDrawBackgroundMode: GetDrawBackgroundMode::<Identity, OFFSET>,
            SetDrawBackgroundMode: SetDrawBackgroundMode::<Identity, OFFSET>,
            SetAnswerMode: SetAnswerMode::<Identity, OFFSET>,
            GetAnswerMode: GetAnswerMode::<Identity, OFFSET>,
            SetHoldPage: SetHoldPage::<Identity, OFFSET>,
            GetHoldPage: GetHoldPage::<Identity, OFFSET>,
            GetCurrentPage: GetCurrentPage::<Identity, OFFSET>,
            SetCurrentPage: SetCurrentPage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAMWstDecoder as windows_core::Interface>::IID
    }
}
pub trait IAMovieSetup_Impl: Sized {
    fn Register(&self) -> windows_core::Result<()>;
    fn Unregister(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAMovieSetup {}
impl IAMovieSetup_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAMovieSetup_Vtbl
    where
        Identity: IAMovieSetup_Impl,
    {
        unsafe extern "system" fn Register<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMovieSetup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMovieSetup_Impl::Register(this).into()
        }
        unsafe extern "system" fn Unregister<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAMovieSetup_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAMovieSetup_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 == &<IAMovieSetup as windows_core::Interface>::IID
    }
}
pub trait IAsyncReader_Impl: Sized {
    fn RequestAllocator(&self, ppreferred: Option<&IMemAllocator>, pprops: *const ALLOCATOR_PROPERTIES) -> windows_core::Result<IMemAllocator>;
    fn Request(&self, psample: Option<&IMediaSample>, dwuser: usize) -> windows_core::Result<()>;
    fn WaitForNext(&self, dwtimeout: u32, ppsample: *mut Option<IMediaSample>, pdwuser: *mut usize) -> windows_core::Result<()>;
    fn SyncReadAligned(&self, psample: Option<&IMediaSample>) -> windows_core::Result<()>;
    fn SyncRead(&self, llposition: i64, llength: i32, pbuffer: *mut u8) -> windows_core::Result<()>;
    fn Length(&self, ptotal: *mut i64, pavailable: *mut i64) -> windows_core::Result<()>;
    fn BeginFlush(&self) -> windows_core::Result<()>;
    fn EndFlush(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IAsyncReader {}
impl IAsyncReader_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAsyncReader_Vtbl
    where
        Identity: IAsyncReader_Impl,
    {
        unsafe extern "system" fn RequestAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppreferred: *mut core::ffi::c_void, pprops: *const ALLOCATOR_PROPERTIES, ppactual: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAsyncReader_Impl::RequestAllocator(this, windows_core::from_raw_borrowed(&ppreferred), core::mem::transmute_copy(&pprops)) {
                Ok(ok__) => {
                    ppactual.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Request<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psample: *mut core::ffi::c_void, dwuser: usize) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::Request(this, windows_core::from_raw_borrowed(&psample), core::mem::transmute_copy(&dwuser)).into()
        }
        unsafe extern "system" fn WaitForNext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeout: u32, ppsample: *mut *mut core::ffi::c_void, pdwuser: *mut usize) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::WaitForNext(this, core::mem::transmute_copy(&dwtimeout), core::mem::transmute_copy(&ppsample), core::mem::transmute_copy(&pdwuser)).into()
        }
        unsafe extern "system" fn SyncReadAligned<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psample: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::SyncReadAligned(this, windows_core::from_raw_borrowed(&psample)).into()
        }
        unsafe extern "system" fn SyncRead<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, llposition: i64, llength: i32, pbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::SyncRead(this, core::mem::transmute_copy(&llposition), core::mem::transmute_copy(&llength), core::mem::transmute_copy(&pbuffer)).into()
        }
        unsafe extern "system" fn Length<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptotal: *mut i64, pavailable: *mut i64) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::Length(this, core::mem::transmute_copy(&ptotal), core::mem::transmute_copy(&pavailable)).into()
        }
        unsafe extern "system" fn BeginFlush<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::BeginFlush(this).into()
        }
        unsafe extern "system" fn EndFlush<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAsyncReader_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAsyncReader_Impl::EndFlush(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RequestAllocator: RequestAllocator::<Identity, OFFSET>,
            Request: Request::<Identity, OFFSET>,
            WaitForNext: WaitForNext::<Identity, OFFSET>,
            SyncReadAligned: SyncReadAligned::<Identity, OFFSET>,
            SyncRead: SyncRead::<Identity, OFFSET>,
            Length: Length::<Identity, OFFSET>,
            BeginFlush: BeginFlush::<Identity, OFFSET>,
            EndFlush: EndFlush::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAsyncReader as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_Audio")]
pub trait IAudioData_Impl: Sized + IMemoryData_Impl {
    fn GetFormat(&self, pwaveformatcurrent: *mut super::Audio::WAVEFORMATEX) -> windows_core::Result<()>;
    fn SetFormat(&self, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_Audio")]
impl windows_core::RuntimeName for IAudioData {}
#[cfg(feature = "Win32_Media_Audio")]
impl IAudioData_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAudioData_Vtbl
    where
        Identity: IAudioData_Impl,
    {
        unsafe extern "system" fn GetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwaveformatcurrent: *mut super::Audio::WAVEFORMATEX) -> windows_core::HRESULT
        where
            Identity: IAudioData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAudioData_Impl::GetFormat(this, core::mem::transmute_copy(&pwaveformatcurrent)).into()
        }
        unsafe extern "system" fn SetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> windows_core::HRESULT
        where
            Identity: IAudioData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAudioData_Impl::SetFormat(this, core::mem::transmute_copy(&lpwaveformat)).into()
        }
        Self { base__: IMemoryData_Vtbl::new::<Identity, OFFSET>(), GetFormat: GetFormat::<Identity, OFFSET>, SetFormat: SetFormat::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAudioData as windows_core::Interface>::IID || iid == &<IMemoryData as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_Audio")]
pub trait IAudioMediaStream_Impl: Sized + IMediaStream_Impl {
    fn GetFormat(&self, pwaveformatcurrent: *mut super::Audio::WAVEFORMATEX) -> windows_core::Result<()>;
    fn SetFormat(&self, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> windows_core::Result<()>;
    fn CreateSample(&self, paudiodata: Option<&IAudioData>, dwflags: u32) -> windows_core::Result<IAudioStreamSample>;
}
#[cfg(feature = "Win32_Media_Audio")]
impl windows_core::RuntimeName for IAudioMediaStream {}
#[cfg(feature = "Win32_Media_Audio")]
impl IAudioMediaStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAudioMediaStream_Vtbl
    where
        Identity: IAudioMediaStream_Impl,
    {
        unsafe extern "system" fn GetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwaveformatcurrent: *mut super::Audio::WAVEFORMATEX) -> windows_core::HRESULT
        where
            Identity: IAudioMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAudioMediaStream_Impl::GetFormat(this, core::mem::transmute_copy(&pwaveformatcurrent)).into()
        }
        unsafe extern "system" fn SetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwaveformat: *const super::Audio::WAVEFORMATEX) -> windows_core::HRESULT
        where
            Identity: IAudioMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IAudioMediaStream_Impl::SetFormat(this, core::mem::transmute_copy(&lpwaveformat)).into()
        }
        unsafe extern "system" fn CreateSample<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, paudiodata: *mut core::ffi::c_void, dwflags: u32, ppsample: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAudioMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAudioMediaStream_Impl::CreateSample(this, windows_core::from_raw_borrowed(&paudiodata), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppsample.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, OFFSET>(),
            GetFormat: GetFormat::<Identity, OFFSET>,
            SetFormat: SetFormat::<Identity, OFFSET>,
            CreateSample: CreateSample::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAudioMediaStream as windows_core::Interface>::IID || iid == &<IMediaStream as windows_core::Interface>::IID
    }
}
pub trait IAudioStreamSample_Impl: Sized + IStreamSample_Impl {
    fn GetAudioData(&self) -> windows_core::Result<IAudioData>;
}
impl windows_core::RuntimeName for IAudioStreamSample {}
impl IAudioStreamSample_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IAudioStreamSample_Vtbl
    where
        Identity: IAudioStreamSample_Impl,
    {
        unsafe extern "system" fn GetAudioData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppaudio: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IAudioStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IAudioStreamSample_Impl::GetAudioData(this) {
                Ok(ok__) => {
                    ppaudio.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IStreamSample_Vtbl::new::<Identity, OFFSET>(), GetAudioData: GetAudioData::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAudioStreamSample as windows_core::Interface>::IID || iid == &<IStreamSample as windows_core::Interface>::IID
    }
}
pub trait IBDA_AUX_Impl: Sized {
    fn QueryCapabilities(&self) -> windows_core::Result<u32>;
    fn EnumCapability(&self, dwindex: u32, dwinputid: *mut u32, pconnectortype: *mut windows_core::GUID, conntypenum: *mut u32, numvideostds: *mut u32, analogstds: *mut u64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_AUX {}
impl IBDA_AUX_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_AUX_Vtbl
    where
        Identity: IBDA_AUX_Impl,
    {
        unsafe extern "system" fn QueryCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumauxinputsbstr: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_AUX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_AUX_Impl::QueryCapabilities(this) {
                Ok(ok__) => {
                    pdwnumauxinputsbstr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, dwinputid: *mut u32, pconnectortype: *mut windows_core::GUID, conntypenum: *mut u32, numvideostds: *mut u32, analogstds: *mut u64) -> windows_core::HRESULT
        where
            Identity: IBDA_AUX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_AUX_Impl::EnumCapability(this, core::mem::transmute_copy(&dwindex), core::mem::transmute_copy(&dwinputid), core::mem::transmute_copy(&pconnectortype), core::mem::transmute_copy(&conntypenum), core::mem::transmute_copy(&numvideostds), core::mem::transmute_copy(&analogstds)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryCapabilities: QueryCapabilities::<Identity, OFFSET>,
            EnumCapability: EnumCapability::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_AUX as windows_core::Interface>::IID
    }
}
pub trait IBDA_AutoDemodulate_Impl: Sized {
    fn put_AutoDemodulate(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_AutoDemodulate {}
impl IBDA_AutoDemodulate_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_AutoDemodulate_Vtbl
    where
        Identity: IBDA_AutoDemodulate_Impl,
    {
        unsafe extern "system" fn put_AutoDemodulate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_AutoDemodulate_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_AutoDemodulate_Impl::put_AutoDemodulate(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), put_AutoDemodulate: put_AutoDemodulate::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_AutoDemodulate as windows_core::Interface>::IID
    }
}
pub trait IBDA_AutoDemodulateEx_Impl: Sized + IBDA_AutoDemodulate_Impl {
    fn get_SupportedDeviceNodeTypes(&self, ulcdevicenodetypesmax: u32, pulcdevicenodetypes: *mut u32, pguiddevicenodetypes: *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 IBDA_AutoDemodulateEx {}
impl IBDA_AutoDemodulateEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_AutoDemodulateEx_Vtbl
    where
        Identity: IBDA_AutoDemodulateEx_Impl,
    {
        unsafe extern "system" fn get_SupportedDeviceNodeTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcdevicenodetypesmax: u32, pulcdevicenodetypes: *mut u32, pguiddevicenodetypes: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_AutoDemodulateEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_AutoDemodulateEx_Impl::get_SupportedDeviceNodeTypes(this, core::mem::transmute_copy(&ulcdevicenodetypesmax), core::mem::transmute_copy(&pulcdevicenodetypes), core::mem::transmute_copy(&pguiddevicenodetypes)).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: IBDA_AutoDemodulateEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_AutoDemodulateEx_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: IBDA_AutoDemodulateEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_AutoDemodulateEx_Impl::get_AuxInputCount(this, core::mem::transmute_copy(&pulcompositecount), core::mem::transmute_copy(&pulsvideocount)).into()
        }
        Self {
            base__: IBDA_AutoDemodulate_Vtbl::new::<Identity, OFFSET>(),
            get_SupportedDeviceNodeTypes: get_SupportedDeviceNodeTypes::<Identity, OFFSET>,
            get_SupportedVideoFormats: get_SupportedVideoFormats::<Identity, OFFSET>,
            get_AuxInputCount: get_AuxInputCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_AutoDemodulateEx as windows_core::Interface>::IID || iid == &<IBDA_AutoDemodulate as windows_core::Interface>::IID
    }
}
pub trait IBDA_ConditionalAccess_Impl: Sized {
    fn get_SmartCardStatus(&self, pcardstatus: *mut SmartCardStatusType, pcardassociation: *mut SmartCardAssociationType, pbstrcarderror: *mut windows_core::BSTR, pfooblocked: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn get_SmartCardInfo(&self, pbstrcardname: *mut windows_core::BSTR, pbstrcardmanufacturer: *mut windows_core::BSTR, pfdaylightsavings: *mut super::super::Foundation::VARIANT_BOOL, pbyratingregion: *mut u8, pltimezoneoffsetminutes: *mut i32, pbstrlanguage: *mut windows_core::BSTR, pealocationcode: *mut EALocationCodeType) -> windows_core::Result<()>;
    fn get_SmartCardApplications(&self, pulcapplications: *mut u32, ulcapplicationsmax: u32, rgapplications: *mut SmartCardApplication) -> windows_core::Result<()>;
    fn get_Entitlement(&self, usvirtualchannel: u16) -> windows_core::Result<EntitlementType>;
    fn TuneByChannel(&self, usvirtualchannel: u16) -> windows_core::Result<()>;
    fn SetProgram(&self, usprogramnumber: u16) -> windows_core::Result<()>;
    fn AddProgram(&self, usprogramnumber: u16) -> windows_core::Result<()>;
    fn RemoveProgram(&self, usprogramnumber: u16) -> windows_core::Result<()>;
    fn GetModuleUI(&self, bydialognumber: u8) -> windows_core::Result<windows_core::BSTR>;
    fn InformUIClosed(&self, bydialognumber: u8, closereason: UICloseReasonType) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_ConditionalAccess {}
impl IBDA_ConditionalAccess_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_ConditionalAccess_Vtbl
    where
        Identity: IBDA_ConditionalAccess_Impl,
    {
        unsafe extern "system" fn get_SmartCardStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcardstatus: *mut SmartCardStatusType, pcardassociation: *mut SmartCardAssociationType, pbstrcarderror: *mut core::mem::MaybeUninit<windows_core::BSTR>, pfooblocked: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::get_SmartCardStatus(this, core::mem::transmute_copy(&pcardstatus), core::mem::transmute_copy(&pcardassociation), core::mem::transmute_copy(&pbstrcarderror), core::mem::transmute_copy(&pfooblocked)).into()
        }
        unsafe extern "system" fn get_SmartCardInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcardname: *mut core::mem::MaybeUninit<windows_core::BSTR>, pbstrcardmanufacturer: *mut core::mem::MaybeUninit<windows_core::BSTR>, pfdaylightsavings: *mut super::super::Foundation::VARIANT_BOOL, pbyratingregion: *mut u8, pltimezoneoffsetminutes: *mut i32, pbstrlanguage: *mut core::mem::MaybeUninit<windows_core::BSTR>, pealocationcode: *mut EALocationCodeType) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::get_SmartCardInfo(this, core::mem::transmute_copy(&pbstrcardname), core::mem::transmute_copy(&pbstrcardmanufacturer), core::mem::transmute_copy(&pfdaylightsavings), core::mem::transmute_copy(&pbyratingregion), core::mem::transmute_copy(&pltimezoneoffsetminutes), core::mem::transmute_copy(&pbstrlanguage), core::mem::transmute_copy(&pealocationcode)).into()
        }
        unsafe extern "system" fn get_SmartCardApplications<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcapplications: *mut u32, ulcapplicationsmax: u32, rgapplications: *mut SmartCardApplication) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::get_SmartCardApplications(this, core::mem::transmute_copy(&pulcapplications), core::mem::transmute_copy(&ulcapplicationsmax), core::mem::transmute_copy(&rgapplications)).into()
        }
        unsafe extern "system" fn get_Entitlement<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usvirtualchannel: u16, pentitlement: *mut EntitlementType) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_ConditionalAccess_Impl::get_Entitlement(this, core::mem::transmute_copy(&usvirtualchannel)) {
                Ok(ok__) => {
                    pentitlement.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn TuneByChannel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usvirtualchannel: u16) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::TuneByChannel(this, core::mem::transmute_copy(&usvirtualchannel)).into()
        }
        unsafe extern "system" fn SetProgram<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usprogramnumber: u16) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::SetProgram(this, core::mem::transmute_copy(&usprogramnumber)).into()
        }
        unsafe extern "system" fn AddProgram<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usprogramnumber: u16) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::AddProgram(this, core::mem::transmute_copy(&usprogramnumber)).into()
        }
        unsafe extern "system" fn RemoveProgram<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usprogramnumber: u16) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::RemoveProgram(this, core::mem::transmute_copy(&usprogramnumber)).into()
        }
        unsafe extern "system" fn GetModuleUI<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bydialognumber: u8, pbstrurl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_ConditionalAccess_Impl::GetModuleUI(this, core::mem::transmute_copy(&bydialognumber)) {
                Ok(ok__) => {
                    pbstrurl.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn InformUIClosed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bydialognumber: u8, closereason: UICloseReasonType) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccess_Impl::InformUIClosed(this, core::mem::transmute_copy(&bydialognumber), core::mem::transmute_copy(&closereason)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_SmartCardStatus: get_SmartCardStatus::<Identity, OFFSET>,
            get_SmartCardInfo: get_SmartCardInfo::<Identity, OFFSET>,
            get_SmartCardApplications: get_SmartCardApplications::<Identity, OFFSET>,
            get_Entitlement: get_Entitlement::<Identity, OFFSET>,
            TuneByChannel: TuneByChannel::<Identity, OFFSET>,
            SetProgram: SetProgram::<Identity, OFFSET>,
            AddProgram: AddProgram::<Identity, OFFSET>,
            RemoveProgram: RemoveProgram::<Identity, OFFSET>,
            GetModuleUI: GetModuleUI::<Identity, OFFSET>,
            InformUIClosed: InformUIClosed::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_ConditionalAccess as windows_core::Interface>::IID
    }
}
pub trait IBDA_ConditionalAccessEx_Impl: Sized {
    fn CheckEntitlementToken(&self, uldialogrequest: u32, bstrlanguage: &windows_core::BSTR, requesttype: BDA_CONDITIONALACCESS_REQUESTTYPE, ulcbentitlementtokenlen: u32, pbentitlementtoken: *const u8) -> windows_core::Result<u32>;
    fn SetCaptureToken(&self, ulcbcapturetokenlen: u32, pbcapturetoken: *const u8) -> windows_core::Result<()>;
    fn OpenBroadcastMmi(&self, uldialogrequest: u32, bstrlanguage: &windows_core::BSTR, eventid: u32) -> windows_core::Result<()>;
    fn CloseMmiDialog(&self, uldialogrequest: u32, bstrlanguage: &windows_core::BSTR, uldialognumber: u32, reasoncode: BDA_CONDITIONALACCESS_MMICLOSEREASON) -> windows_core::Result<u32>;
    fn CreateDialogRequestNumber(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IBDA_ConditionalAccessEx {}
impl IBDA_ConditionalAccessEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_ConditionalAccessEx_Vtbl
    where
        Identity: IBDA_ConditionalAccessEx_Impl,
    {
        unsafe extern "system" fn CheckEntitlementToken<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uldialogrequest: u32, bstrlanguage: core::mem::MaybeUninit<windows_core::BSTR>, requesttype: BDA_CONDITIONALACCESS_REQUESTTYPE, ulcbentitlementtokenlen: u32, pbentitlementtoken: *const u8, puldescramblestatus: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccessEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_ConditionalAccessEx_Impl::CheckEntitlementToken(this, core::mem::transmute_copy(&uldialogrequest), core::mem::transmute(&bstrlanguage), core::mem::transmute_copy(&requesttype), core::mem::transmute_copy(&ulcbentitlementtokenlen), core::mem::transmute_copy(&pbentitlementtoken)) {
                Ok(ok__) => {
                    puldescramblestatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCaptureToken<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcbcapturetokenlen: u32, pbcapturetoken: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccessEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccessEx_Impl::SetCaptureToken(this, core::mem::transmute_copy(&ulcbcapturetokenlen), core::mem::transmute_copy(&pbcapturetoken)).into()
        }
        unsafe extern "system" fn OpenBroadcastMmi<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uldialogrequest: u32, bstrlanguage: core::mem::MaybeUninit<windows_core::BSTR>, eventid: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccessEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ConditionalAccessEx_Impl::OpenBroadcastMmi(this, core::mem::transmute_copy(&uldialogrequest), core::mem::transmute(&bstrlanguage), core::mem::transmute_copy(&eventid)).into()
        }
        unsafe extern "system" fn CloseMmiDialog<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uldialogrequest: u32, bstrlanguage: core::mem::MaybeUninit<windows_core::BSTR>, uldialognumber: u32, reasoncode: BDA_CONDITIONALACCESS_MMICLOSEREASON, pulsessionresult: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccessEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_ConditionalAccessEx_Impl::CloseMmiDialog(this, core::mem::transmute_copy(&uldialogrequest), core::mem::transmute(&bstrlanguage), core::mem::transmute_copy(&uldialognumber), core::mem::transmute_copy(&reasoncode)) {
                Ok(ok__) => {
                    pulsessionresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateDialogRequestNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puldialogrequestnumber: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_ConditionalAccessEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_ConditionalAccessEx_Impl::CreateDialogRequestNumber(this) {
                Ok(ok__) => {
                    puldialogrequestnumber.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CheckEntitlementToken: CheckEntitlementToken::<Identity, OFFSET>,
            SetCaptureToken: SetCaptureToken::<Identity, OFFSET>,
            OpenBroadcastMmi: OpenBroadcastMmi::<Identity, OFFSET>,
            CloseMmiDialog: CloseMmiDialog::<Identity, OFFSET>,
            CreateDialogRequestNumber: CreateDialogRequestNumber::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_ConditionalAccessEx as windows_core::Interface>::IID
    }
}
pub trait IBDA_DRIDRMService_Impl: Sized {
    fn SetDRM(&self, bstrnewdrm: &windows_core::BSTR) -> windows_core::Result<()>;
    fn GetDRMStatus(&self, pbstrdrmuuidlist: *mut windows_core::BSTR, drmuuid: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetPairingStatus(&self, penumpairingstatus: *mut BDA_DrmPairingError) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DRIDRMService {}
impl IBDA_DRIDRMService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DRIDRMService_Vtbl
    where
        Identity: IBDA_DRIDRMService_Impl,
    {
        unsafe extern "system" fn SetDRM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrnewdrm: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIDRMService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIDRMService_Impl::SetDRM(this, core::mem::transmute(&bstrnewdrm)).into()
        }
        unsafe extern "system" fn GetDRMStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrdrmuuidlist: *mut core::mem::MaybeUninit<windows_core::BSTR>, drmuuid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIDRMService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIDRMService_Impl::GetDRMStatus(this, core::mem::transmute_copy(&pbstrdrmuuidlist), core::mem::transmute_copy(&drmuuid)).into()
        }
        unsafe extern "system" fn GetPairingStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penumpairingstatus: *mut BDA_DrmPairingError) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIDRMService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIDRMService_Impl::GetPairingStatus(this, core::mem::transmute_copy(&penumpairingstatus)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDRM: SetDRM::<Identity, OFFSET>,
            GetDRMStatus: GetDRMStatus::<Identity, OFFSET>,
            GetPairingStatus: GetPairingStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DRIDRMService as windows_core::Interface>::IID
    }
}
pub trait IBDA_DRIWMDRMSession_Impl: Sized {
    fn AcknowledgeLicense(&self, hrlicenseack: windows_core::HRESULT) -> windows_core::Result<()>;
    fn ProcessLicenseChallenge(&self, dwcblicensemessage: u32, pblicensemessage: *const u8, pdwcblicenseresponse: *mut u32, ppblicenseresponse: *mut *mut u8) -> windows_core::Result<()>;
    fn ProcessRegistrationChallenge(&self, dwcbregistrationmessage: u32, pbregistrationmessage: *const u8, pdwcbregistrationresponse: *mut u32, ppbregistrationresponse: *mut *mut u8) -> windows_core::Result<()>;
    fn SetRevInfo(&self, dwrevinfolen: u32, pbrevinfo: *const u8, pdwresponse: *mut u32) -> windows_core::Result<()>;
    fn SetCrl(&self, dwcrllen: u32, pbcrllen: *const u8, pdwresponse: *mut u32) -> windows_core::Result<()>;
    fn GetHMSAssociationData(&self) -> windows_core::Result<()>;
    fn GetLastCardeaError(&self, pdwerror: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DRIWMDRMSession {}
impl IBDA_DRIWMDRMSession_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DRIWMDRMSession_Vtbl
    where
        Identity: IBDA_DRIWMDRMSession_Impl,
    {
        unsafe extern "system" fn AcknowledgeLicense<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hrlicenseack: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::AcknowledgeLicense(this, core::mem::transmute_copy(&hrlicenseack)).into()
        }
        unsafe extern "system" fn ProcessLicenseChallenge<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcblicensemessage: u32, pblicensemessage: *const u8, pdwcblicenseresponse: *mut u32, ppblicenseresponse: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::ProcessLicenseChallenge(this, core::mem::transmute_copy(&dwcblicensemessage), core::mem::transmute_copy(&pblicensemessage), core::mem::transmute_copy(&pdwcblicenseresponse), core::mem::transmute_copy(&ppblicenseresponse)).into()
        }
        unsafe extern "system" fn ProcessRegistrationChallenge<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcbregistrationmessage: u32, pbregistrationmessage: *const u8, pdwcbregistrationresponse: *mut u32, ppbregistrationresponse: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::ProcessRegistrationChallenge(this, core::mem::transmute_copy(&dwcbregistrationmessage), core::mem::transmute_copy(&pbregistrationmessage), core::mem::transmute_copy(&pdwcbregistrationresponse), core::mem::transmute_copy(&ppbregistrationresponse)).into()
        }
        unsafe extern "system" fn SetRevInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrevinfolen: u32, pbrevinfo: *const u8, pdwresponse: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::SetRevInfo(this, core::mem::transmute_copy(&dwrevinfolen), core::mem::transmute_copy(&pbrevinfo), core::mem::transmute_copy(&pdwresponse)).into()
        }
        unsafe extern "system" fn SetCrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcrllen: u32, pbcrllen: *const u8, pdwresponse: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::SetCrl(this, core::mem::transmute_copy(&dwcrllen), core::mem::transmute_copy(&pbcrllen), core::mem::transmute_copy(&pdwresponse)).into()
        }
        unsafe extern "system" fn GetHMSAssociationData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::GetHMSAssociationData(this).into()
        }
        unsafe extern "system" fn GetLastCardeaError<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwerror: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DRIWMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRIWMDRMSession_Impl::GetLastCardeaError(this, core::mem::transmute_copy(&pdwerror)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AcknowledgeLicense: AcknowledgeLicense::<Identity, OFFSET>,
            ProcessLicenseChallenge: ProcessLicenseChallenge::<Identity, OFFSET>,
            ProcessRegistrationChallenge: ProcessRegistrationChallenge::<Identity, OFFSET>,
            SetRevInfo: SetRevInfo::<Identity, OFFSET>,
            SetCrl: SetCrl::<Identity, OFFSET>,
            GetHMSAssociationData: GetHMSAssociationData::<Identity, OFFSET>,
            GetLastCardeaError: GetLastCardeaError::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DRIWMDRMSession as windows_core::Interface>::IID
    }
}
pub trait IBDA_DRM_Impl: Sized {
    fn GetDRMPairingStatus(&self, pdwstatus: *mut u32, pherror: *mut windows_core::HRESULT) -> windows_core::Result<()>;
    fn PerformDRMPairing(&self, fsync: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DRM {}
impl IBDA_DRM_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DRM_Vtbl
    where
        Identity: IBDA_DRM_Impl,
    {
        unsafe extern "system" fn GetDRMPairingStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwstatus: *mut u32, pherror: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IBDA_DRM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRM_Impl::GetDRMPairingStatus(this, core::mem::transmute_copy(&pdwstatus), core::mem::transmute_copy(&pherror)).into()
        }
        unsafe extern "system" fn PerformDRMPairing<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fsync: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBDA_DRM_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRM_Impl::PerformDRMPairing(this, core::mem::transmute_copy(&fsync)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDRMPairingStatus: GetDRMPairingStatus::<Identity, OFFSET>,
            PerformDRMPairing: PerformDRMPairing::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DRM as windows_core::Interface>::IID
    }
}
pub trait IBDA_DRMService_Impl: Sized {
    fn SetDRM(&self, puuidnewdrm: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetDRMStatus(&self, pbstrdrmuuidlist: *mut windows_core::BSTR, drmuuid: *mut windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DRMService {}
impl IBDA_DRMService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DRMService_Vtbl
    where
        Identity: IBDA_DRMService_Impl,
    {
        unsafe extern "system" fn SetDRM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puuidnewdrm: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_DRMService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRMService_Impl::SetDRM(this, core::mem::transmute_copy(&puuidnewdrm)).into()
        }
        unsafe extern "system" fn GetDRMStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrdrmuuidlist: *mut core::mem::MaybeUninit<windows_core::BSTR>, drmuuid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_DRMService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DRMService_Impl::GetDRMStatus(this, core::mem::transmute_copy(&pbstrdrmuuidlist), core::mem::transmute_copy(&drmuuid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDRM: SetDRM::<Identity, OFFSET>,
            GetDRMStatus: GetDRMStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DRMService as windows_core::Interface>::IID
    }
}
pub trait IBDA_DeviceControl_Impl: Sized {
    fn StartChanges(&self) -> windows_core::Result<()>;
    fn CheckChanges(&self) -> windows_core::Result<()>;
    fn CommitChanges(&self) -> windows_core::Result<()>;
    fn GetChangeState(&self, pstate: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DeviceControl {}
impl IBDA_DeviceControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DeviceControl_Vtbl
    where
        Identity: IBDA_DeviceControl_Impl,
    {
        unsafe extern "system" fn StartChanges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_DeviceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DeviceControl_Impl::StartChanges(this).into()
        }
        unsafe extern "system" fn CheckChanges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_DeviceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DeviceControl_Impl::CheckChanges(this).into()
        }
        unsafe extern "system" fn CommitChanges<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_DeviceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DeviceControl_Impl::CommitChanges(this).into()
        }
        unsafe extern "system" fn GetChangeState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DeviceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DeviceControl_Impl::GetChangeState(this, core::mem::transmute_copy(&pstate)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartChanges: StartChanges::<Identity, OFFSET>,
            CheckChanges: CheckChanges::<Identity, OFFSET>,
            CommitChanges: CommitChanges::<Identity, OFFSET>,
            GetChangeState: GetChangeState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DeviceControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IBDA_DiagnosticProperties_Impl: Sized + super::super::System::Com::StructuredStorage::IPropertyBag_Impl {}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IBDA_DiagnosticProperties {}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IBDA_DiagnosticProperties_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DiagnosticProperties_Vtbl
    where
        Identity: IBDA_DiagnosticProperties_Impl,
    {
        Self { base__: super::super::System::Com::StructuredStorage::IPropertyBag_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DiagnosticProperties as windows_core::Interface>::IID || iid == &<super::super::System::Com::StructuredStorage::IPropertyBag as windows_core::Interface>::IID
    }
}
pub trait IBDA_DigitalDemodulator_Impl: Sized {
    fn SetModulationType(&self, pmodulationtype: *const ModulationType) -> windows_core::Result<()>;
    fn ModulationType(&self, pmodulationtype: *mut ModulationType) -> windows_core::Result<()>;
    fn SetInnerFECMethod(&self, pfecmethod: *const FECMethod) -> windows_core::Result<()>;
    fn InnerFECMethod(&self, pfecmethod: *mut FECMethod) -> windows_core::Result<()>;
    fn SetInnerFECRate(&self, pfecrate: *const BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn InnerFECRate(&self, pfecrate: *mut BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn SetOuterFECMethod(&self, pfecmethod: *const FECMethod) -> windows_core::Result<()>;
    fn OuterFECMethod(&self, pfecmethod: *mut FECMethod) -> windows_core::Result<()>;
    fn SetOuterFECRate(&self, pfecrate: *const BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn OuterFECRate(&self, pfecrate: *mut BinaryConvolutionCodeRate) -> windows_core::Result<()>;
    fn SetSymbolRate(&self, psymbolrate: *const u32) -> windows_core::Result<()>;
    fn SymbolRate(&self, psymbolrate: *mut u32) -> windows_core::Result<()>;
    fn SetSpectralInversion(&self, pspectralinversion: *const SpectralInversion) -> windows_core::Result<()>;
    fn SpectralInversion(&self, pspectralinversion: *mut SpectralInversion) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DigitalDemodulator {}
impl IBDA_DigitalDemodulator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DigitalDemodulator_Vtbl
    where
        Identity: IBDA_DigitalDemodulator_Impl,
    {
        unsafe extern "system" fn SetModulationType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmodulationtype: *const ModulationType) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetModulationType(this, core::mem::transmute_copy(&pmodulationtype)).into()
        }
        unsafe extern "system" fn ModulationType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmodulationtype: *mut ModulationType) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::ModulationType(this, core::mem::transmute_copy(&pmodulationtype)).into()
        }
        unsafe extern "system" fn SetInnerFECMethod<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecmethod: *const FECMethod) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetInnerFECMethod(this, core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn InnerFECMethod<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecmethod: *mut FECMethod) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::InnerFECMethod(this, core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn SetInnerFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecrate: *const BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetInnerFECRate(this, core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn InnerFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecrate: *mut BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::InnerFECRate(this, core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn SetOuterFECMethod<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecmethod: *const FECMethod) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetOuterFECMethod(this, core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn OuterFECMethod<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecmethod: *mut FECMethod) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::OuterFECMethod(this, core::mem::transmute_copy(&pfecmethod)).into()
        }
        unsafe extern "system" fn SetOuterFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecrate: *const BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetOuterFECRate(this, core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn OuterFECRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfecrate: *mut BinaryConvolutionCodeRate) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::OuterFECRate(this, core::mem::transmute_copy(&pfecrate)).into()
        }
        unsafe extern "system" fn SetSymbolRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psymbolrate: *const u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetSymbolRate(this, core::mem::transmute_copy(&psymbolrate)).into()
        }
        unsafe extern "system" fn SymbolRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psymbolrate: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SymbolRate(this, core::mem::transmute_copy(&psymbolrate)).into()
        }
        unsafe extern "system" fn SetSpectralInversion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pspectralinversion: *const SpectralInversion) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SetSpectralInversion(this, core::mem::transmute_copy(&pspectralinversion)).into()
        }
        unsafe extern "system" fn SpectralInversion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pspectralinversion: *mut SpectralInversion) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator_Impl::SpectralInversion(this, core::mem::transmute_copy(&pspectralinversion)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetModulationType: SetModulationType::<Identity, OFFSET>,
            ModulationType: ModulationType::<Identity, OFFSET>,
            SetInnerFECMethod: SetInnerFECMethod::<Identity, OFFSET>,
            InnerFECMethod: InnerFECMethod::<Identity, OFFSET>,
            SetInnerFECRate: SetInnerFECRate::<Identity, OFFSET>,
            InnerFECRate: InnerFECRate::<Identity, OFFSET>,
            SetOuterFECMethod: SetOuterFECMethod::<Identity, OFFSET>,
            OuterFECMethod: OuterFECMethod::<Identity, OFFSET>,
            SetOuterFECRate: SetOuterFECRate::<Identity, OFFSET>,
            OuterFECRate: OuterFECRate::<Identity, OFFSET>,
            SetSymbolRate: SetSymbolRate::<Identity, OFFSET>,
            SymbolRate: SymbolRate::<Identity, OFFSET>,
            SetSpectralInversion: SetSpectralInversion::<Identity, OFFSET>,
            SpectralInversion: SpectralInversion::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DigitalDemodulator as windows_core::Interface>::IID
    }
}
pub trait IBDA_DigitalDemodulator2_Impl: Sized + IBDA_DigitalDemodulator_Impl {
    fn SetGuardInterval(&self, pguardinterval: *const GuardInterval) -> windows_core::Result<()>;
    fn GuardInterval(&self, pguardinterval: *mut GuardInterval) -> windows_core::Result<()>;
    fn SetTransmissionMode(&self, ptransmissionmode: *const TransmissionMode) -> windows_core::Result<()>;
    fn TransmissionMode(&self, ptransmissionmode: *mut TransmissionMode) -> windows_core::Result<()>;
    fn SetRollOff(&self, prolloff: *const RollOff) -> windows_core::Result<()>;
    fn RollOff(&self, prolloff: *mut RollOff) -> windows_core::Result<()>;
    fn SetPilot(&self, ppilot: *const Pilot) -> windows_core::Result<()>;
    fn Pilot(&self, ppilot: *mut Pilot) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DigitalDemodulator2 {}
impl IBDA_DigitalDemodulator2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DigitalDemodulator2_Vtbl
    where
        Identity: IBDA_DigitalDemodulator2_Impl,
    {
        unsafe extern "system" fn SetGuardInterval<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguardinterval: *const GuardInterval) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::SetGuardInterval(this, core::mem::transmute_copy(&pguardinterval)).into()
        }
        unsafe extern "system" fn GuardInterval<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguardinterval: *mut GuardInterval) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::GuardInterval(this, core::mem::transmute_copy(&pguardinterval)).into()
        }
        unsafe extern "system" fn SetTransmissionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptransmissionmode: *const TransmissionMode) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::SetTransmissionMode(this, core::mem::transmute_copy(&ptransmissionmode)).into()
        }
        unsafe extern "system" fn TransmissionMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptransmissionmode: *mut TransmissionMode) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::TransmissionMode(this, core::mem::transmute_copy(&ptransmissionmode)).into()
        }
        unsafe extern "system" fn SetRollOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prolloff: *const RollOff) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::SetRollOff(this, core::mem::transmute_copy(&prolloff)).into()
        }
        unsafe extern "system" fn RollOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prolloff: *mut RollOff) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::RollOff(this, core::mem::transmute_copy(&prolloff)).into()
        }
        unsafe extern "system" fn SetPilot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppilot: *const Pilot) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::SetPilot(this, core::mem::transmute_copy(&ppilot)).into()
        }
        unsafe extern "system" fn Pilot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppilot: *mut Pilot) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator2_Impl::Pilot(this, core::mem::transmute_copy(&ppilot)).into()
        }
        Self {
            base__: IBDA_DigitalDemodulator_Vtbl::new::<Identity, OFFSET>(),
            SetGuardInterval: SetGuardInterval::<Identity, OFFSET>,
            GuardInterval: GuardInterval::<Identity, OFFSET>,
            SetTransmissionMode: SetTransmissionMode::<Identity, OFFSET>,
            TransmissionMode: TransmissionMode::<Identity, OFFSET>,
            SetRollOff: SetRollOff::<Identity, OFFSET>,
            RollOff: RollOff::<Identity, OFFSET>,
            SetPilot: SetPilot::<Identity, OFFSET>,
            Pilot: Pilot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DigitalDemodulator2 as windows_core::Interface>::IID || iid == &<IBDA_DigitalDemodulator as windows_core::Interface>::IID
    }
}
pub trait IBDA_DigitalDemodulator3_Impl: Sized + IBDA_DigitalDemodulator2_Impl {
    fn SetSignalTimeouts(&self, psignaltimeouts: *const BDA_SIGNAL_TIMEOUTS) -> windows_core::Result<()>;
    fn SignalTimeouts(&self, psignaltimeouts: *mut BDA_SIGNAL_TIMEOUTS) -> windows_core::Result<()>;
    fn SetPLPNumber(&self, pplpnumber: *const u32) -> windows_core::Result<()>;
    fn PLPNumber(&self, pplpnumber: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DigitalDemodulator3 {}
impl IBDA_DigitalDemodulator3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DigitalDemodulator3_Vtbl
    where
        Identity: IBDA_DigitalDemodulator3_Impl,
    {
        unsafe extern "system" fn SetSignalTimeouts<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psignaltimeouts: *const BDA_SIGNAL_TIMEOUTS) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator3_Impl::SetSignalTimeouts(this, core::mem::transmute_copy(&psignaltimeouts)).into()
        }
        unsafe extern "system" fn SignalTimeouts<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psignaltimeouts: *mut BDA_SIGNAL_TIMEOUTS) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator3_Impl::SignalTimeouts(this, core::mem::transmute_copy(&psignaltimeouts)).into()
        }
        unsafe extern "system" fn SetPLPNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pplpnumber: *const u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator3_Impl::SetPLPNumber(this, core::mem::transmute_copy(&pplpnumber)).into()
        }
        unsafe extern "system" fn PLPNumber<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pplpnumber: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DigitalDemodulator3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DigitalDemodulator3_Impl::PLPNumber(this, core::mem::transmute_copy(&pplpnumber)).into()
        }
        Self {
            base__: IBDA_DigitalDemodulator2_Vtbl::new::<Identity, OFFSET>(),
            SetSignalTimeouts: SetSignalTimeouts::<Identity, OFFSET>,
            SignalTimeouts: SignalTimeouts::<Identity, OFFSET>,
            SetPLPNumber: SetPLPNumber::<Identity, OFFSET>,
            PLPNumber: PLPNumber::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DigitalDemodulator3 as windows_core::Interface>::IID || iid == &<IBDA_DigitalDemodulator as windows_core::Interface>::IID || iid == &<IBDA_DigitalDemodulator2 as windows_core::Interface>::IID
    }
}
pub trait IBDA_DiseqCommand_Impl: Sized {
    fn SetEnableDiseqCommands(&self, benable: super::super::Foundation::BOOLEAN) -> windows_core::Result<()>;
    fn SetDiseqLNBSource(&self, ullnbsource: u32) -> windows_core::Result<()>;
    fn SetDiseqUseToneBurst(&self, busetoneburst: super::super::Foundation::BOOLEAN) -> windows_core::Result<()>;
    fn SetDiseqRepeats(&self, ulrepeats: u32) -> windows_core::Result<()>;
    fn put_DiseqSendCommand(&self, ulrequestid: u32, ulcbcommandlen: u32, pbcommand: *const u8) -> windows_core::Result<()>;
    fn get_DiseqResponse(&self, ulrequestid: u32, pulcbresponselen: *mut u32, pbresponse: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_DiseqCommand {}
impl IBDA_DiseqCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_DiseqCommand_Vtbl
    where
        Identity: IBDA_DiseqCommand_Impl,
    {
        unsafe extern "system" fn SetEnableDiseqCommands<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, benable: super::super::Foundation::BOOLEAN) -> windows_core::HRESULT
        where
            Identity: IBDA_DiseqCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DiseqCommand_Impl::SetEnableDiseqCommands(this, core::mem::transmute_copy(&benable)).into()
        }
        unsafe extern "system" fn SetDiseqLNBSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullnbsource: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DiseqCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DiseqCommand_Impl::SetDiseqLNBSource(this, core::mem::transmute_copy(&ullnbsource)).into()
        }
        unsafe extern "system" fn SetDiseqUseToneBurst<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, busetoneburst: super::super::Foundation::BOOLEAN) -> windows_core::HRESULT
        where
            Identity: IBDA_DiseqCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DiseqCommand_Impl::SetDiseqUseToneBurst(this, core::mem::transmute_copy(&busetoneburst)).into()
        }
        unsafe extern "system" fn SetDiseqRepeats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulrepeats: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_DiseqCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DiseqCommand_Impl::SetDiseqRepeats(this, core::mem::transmute_copy(&ulrepeats)).into()
        }
        unsafe extern "system" fn put_DiseqSendCommand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulrequestid: u32, ulcbcommandlen: u32, pbcommand: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_DiseqCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DiseqCommand_Impl::put_DiseqSendCommand(this, core::mem::transmute_copy(&ulrequestid), core::mem::transmute_copy(&ulcbcommandlen), core::mem::transmute_copy(&pbcommand)).into()
        }
        unsafe extern "system" fn get_DiseqResponse<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulrequestid: u32, pulcbresponselen: *mut u32, pbresponse: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_DiseqCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_DiseqCommand_Impl::get_DiseqResponse(this, core::mem::transmute_copy(&ulrequestid), core::mem::transmute_copy(&pulcbresponselen), core::mem::transmute_copy(&pbresponse)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetEnableDiseqCommands: SetEnableDiseqCommands::<Identity, OFFSET>,
            SetDiseqLNBSource: SetDiseqLNBSource::<Identity, OFFSET>,
            SetDiseqUseToneBurst: SetDiseqUseToneBurst::<Identity, OFFSET>,
            SetDiseqRepeats: SetDiseqRepeats::<Identity, OFFSET>,
            put_DiseqSendCommand: put_DiseqSendCommand::<Identity, OFFSET>,
            get_DiseqResponse: get_DiseqResponse::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_DiseqCommand as windows_core::Interface>::IID
    }
}
pub trait IBDA_EasMessage_Impl: Sized {
    fn get_EasMessage(&self, uleventid: u32, ppeasobject: *mut Option<windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_EasMessage {}
impl IBDA_EasMessage_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_EasMessage_Vtbl
    where
        Identity: IBDA_EasMessage_Impl,
    {
        unsafe extern "system" fn get_EasMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uleventid: u32, ppeasobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_EasMessage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_EasMessage_Impl::get_EasMessage(this, core::mem::transmute_copy(&uleventid), core::mem::transmute_copy(&ppeasobject)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), get_EasMessage: get_EasMessage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_EasMessage as windows_core::Interface>::IID
    }
}
pub trait IBDA_Encoder_Impl: Sized {
    fn QueryCapabilities(&self, numaudiofmts: *mut u32, numvideofmts: *mut u32) -> windows_core::Result<()>;
    fn EnumAudioCapability(&self, fmtindex: u32, methodid: *mut u32, algorithmtype: *mut u32, samplingrate: *mut u32, bitdepth: *mut u32, numchannels: *mut u32) -> windows_core::Result<()>;
    fn EnumVideoCapability(&self, fmtindex: u32, methodid: *mut u32, algorithmtype: *mut u32, verticalsize: *mut u32, horizontalsize: *mut u32, aspectratio: *mut u32, frameratecode: *mut u32, progressivesequence: *mut u32) -> windows_core::Result<()>;
    fn SetParameters(&self, audiobitratemode: u32, audiobitrate: u32, audiomethodid: u32, audioprogram: u32, videobitratemode: u32, videobitrate: u32, videomethodid: u32) -> windows_core::Result<()>;
    fn GetState(&self, audiobitratemax: *mut u32, audiobitratemin: *mut u32, audiobitratemode: *mut u32, audiobitratestepping: *mut u32, audiobitrate: *mut u32, audiomethodid: *mut u32, availableaudioprograms: *mut u32, audioprogram: *mut u32, videobitratemax: *mut u32, videobitratemin: *mut u32, videobitratemode: *mut u32, videobitrate: *mut u32, videobitratestepping: *mut u32, videomethodid: *mut u32, signalsourceid: *mut u32, signalformat: *mut u64, signallock: *mut super::super::Foundation::BOOL, signallevel: *mut i32, signaltonoiseratio: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_Encoder {}
impl IBDA_Encoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_Encoder_Vtbl
    where
        Identity: IBDA_Encoder_Impl,
    {
        unsafe extern "system" fn QueryCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, numaudiofmts: *mut u32, numvideofmts: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Encoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Encoder_Impl::QueryCapabilities(this, core::mem::transmute_copy(&numaudiofmts), core::mem::transmute_copy(&numvideofmts)).into()
        }
        unsafe extern "system" fn EnumAudioCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fmtindex: u32, methodid: *mut u32, algorithmtype: *mut u32, samplingrate: *mut u32, bitdepth: *mut u32, numchannels: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Encoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Encoder_Impl::EnumAudioCapability(this, core::mem::transmute_copy(&fmtindex), core::mem::transmute_copy(&methodid), core::mem::transmute_copy(&algorithmtype), core::mem::transmute_copy(&samplingrate), core::mem::transmute_copy(&bitdepth), core::mem::transmute_copy(&numchannels)).into()
        }
        unsafe extern "system" fn EnumVideoCapability<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fmtindex: u32, methodid: *mut u32, algorithmtype: *mut u32, verticalsize: *mut u32, horizontalsize: *mut u32, aspectratio: *mut u32, frameratecode: *mut u32, progressivesequence: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Encoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Encoder_Impl::EnumVideoCapability(this, core::mem::transmute_copy(&fmtindex), core::mem::transmute_copy(&methodid), core::mem::transmute_copy(&algorithmtype), core::mem::transmute_copy(&verticalsize), core::mem::transmute_copy(&horizontalsize), core::mem::transmute_copy(&aspectratio), core::mem::transmute_copy(&frameratecode), core::mem::transmute_copy(&progressivesequence)).into()
        }
        unsafe extern "system" fn SetParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, audiobitratemode: u32, audiobitrate: u32, audiomethodid: u32, audioprogram: u32, videobitratemode: u32, videobitrate: u32, videomethodid: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Encoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Encoder_Impl::SetParameters(this, core::mem::transmute_copy(&audiobitratemode), core::mem::transmute_copy(&audiobitrate), core::mem::transmute_copy(&audiomethodid), core::mem::transmute_copy(&audioprogram), core::mem::transmute_copy(&videobitratemode), core::mem::transmute_copy(&videobitrate), core::mem::transmute_copy(&videomethodid)).into()
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, audiobitratemax: *mut u32, audiobitratemin: *mut u32, audiobitratemode: *mut u32, audiobitratestepping: *mut u32, audiobitrate: *mut u32, audiomethodid: *mut u32, availableaudioprograms: *mut u32, audioprogram: *mut u32, videobitratemax: *mut u32, videobitratemin: *mut u32, videobitratemode: *mut u32, videobitrate: *mut u32, videobitratestepping: *mut u32, videomethodid: *mut u32, signalsourceid: *mut u32, signalformat: *mut u64, signallock: *mut super::super::Foundation::BOOL, signallevel: *mut i32, signaltonoiseratio: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Encoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Encoder_Impl::GetState(
                this,
                core::mem::transmute_copy(&audiobitratemax),
                core::mem::transmute_copy(&audiobitratemin),
                core::mem::transmute_copy(&audiobitratemode),
                core::mem::transmute_copy(&audiobitratestepping),
                core::mem::transmute_copy(&audiobitrate),
                core::mem::transmute_copy(&audiomethodid),
                core::mem::transmute_copy(&availableaudioprograms),
                core::mem::transmute_copy(&audioprogram),
                core::mem::transmute_copy(&videobitratemax),
                core::mem::transmute_copy(&videobitratemin),
                core::mem::transmute_copy(&videobitratemode),
                core::mem::transmute_copy(&videobitrate),
                core::mem::transmute_copy(&videobitratestepping),
                core::mem::transmute_copy(&videomethodid),
                core::mem::transmute_copy(&signalsourceid),
                core::mem::transmute_copy(&signalformat),
                core::mem::transmute_copy(&signallock),
                core::mem::transmute_copy(&signallevel),
                core::mem::transmute_copy(&signaltonoiseratio),
            )
            .into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryCapabilities: QueryCapabilities::<Identity, OFFSET>,
            EnumAudioCapability: EnumAudioCapability::<Identity, OFFSET>,
            EnumVideoCapability: EnumVideoCapability::<Identity, OFFSET>,
            SetParameters: SetParameters::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_Encoder as windows_core::Interface>::IID
    }
}
pub trait IBDA_EthernetFilter_Impl: Sized {
    fn GetMulticastListSize(&self, pulcbaddresses: *mut u32) -> windows_core::Result<()>;
    fn PutMulticastList(&self, ulcbaddresses: u32, paddresslist: *const u8) -> windows_core::Result<()>;
    fn GetMulticastList(&self, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> windows_core::Result<()>;
    fn PutMulticastMode(&self, ulmodemask: u32) -> windows_core::Result<()>;
    fn GetMulticastMode(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IBDA_EthernetFilter {}
impl IBDA_EthernetFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_EthernetFilter_Vtbl
    where
        Identity: IBDA_EthernetFilter_Impl,
    {
        unsafe extern "system" fn GetMulticastListSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_EthernetFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_EthernetFilter_Impl::GetMulticastListSize(this, core::mem::transmute_copy(&pulcbaddresses)).into()
        }
        unsafe extern "system" fn PutMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcbaddresses: u32, paddresslist: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_EthernetFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_EthernetFilter_Impl::PutMulticastList(this, core::mem::transmute_copy(&ulcbaddresses), core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn GetMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_EthernetFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_EthernetFilter_Impl::GetMulticastList(this, core::mem::transmute_copy(&pulcbaddresses), core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn PutMulticastMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulmodemask: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_EthernetFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_EthernetFilter_Impl::PutMulticastMode(this, core::mem::transmute_copy(&ulmodemask)).into()
        }
        unsafe extern "system" fn GetMulticastMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulmodemask: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_EthernetFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_EthernetFilter_Impl::GetMulticastMode(this) {
                Ok(ok__) => {
                    pulmodemask.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastListSize: GetMulticastListSize::<Identity, OFFSET>,
            PutMulticastList: PutMulticastList::<Identity, OFFSET>,
            GetMulticastList: GetMulticastList::<Identity, OFFSET>,
            PutMulticastMode: PutMulticastMode::<Identity, OFFSET>,
            GetMulticastMode: GetMulticastMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_EthernetFilter as windows_core::Interface>::IID
    }
}
pub trait IBDA_EventingService_Impl: Sized {
    fn CompleteEvent(&self, uleventid: u32, uleventresult: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_EventingService {}
impl IBDA_EventingService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_EventingService_Vtbl
    where
        Identity: IBDA_EventingService_Impl,
    {
        unsafe extern "system" fn CompleteEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uleventid: u32, uleventresult: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_EventingService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_EventingService_Impl::CompleteEvent(this, core::mem::transmute_copy(&uleventid), core::mem::transmute_copy(&uleventresult)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CompleteEvent: CompleteEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_EventingService as windows_core::Interface>::IID
    }
}
pub trait IBDA_FDC_Impl: Sized {
    fn GetStatus(&self, currentbitrate: *mut u32, carrierlock: *mut super::super::Foundation::BOOL, currentfrequency: *mut u32, currentspectruminversion: *mut super::super::Foundation::BOOL, currentpidlist: *mut windows_core::BSTR, currenttidlist: *mut windows_core::BSTR, overflow: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn RequestTables(&self, tableids: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AddPid(&self, pidstoadd: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn RemovePid(&self, pidstoremove: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AddTid(&self, tidstoadd: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
    fn RemoveTid(&self, tidstoremove: &windows_core::BSTR) -> windows_core::Result<()>;
    fn GetTableSection(&self, pid: *mut u32, maxbuffersize: u32, actualsize: *mut u32, secbuffer: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_FDC {}
impl IBDA_FDC_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_FDC_Vtbl
    where
        Identity: IBDA_FDC_Impl,
    {
        unsafe extern "system" fn GetStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentbitrate: *mut u32, carrierlock: *mut super::super::Foundation::BOOL, currentfrequency: *mut u32, currentspectruminversion: *mut super::super::Foundation::BOOL, currentpidlist: *mut core::mem::MaybeUninit<windows_core::BSTR>, currenttidlist: *mut core::mem::MaybeUninit<windows_core::BSTR>, overflow: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FDC_Impl::GetStatus(this, core::mem::transmute_copy(&currentbitrate), core::mem::transmute_copy(&carrierlock), core::mem::transmute_copy(&currentfrequency), core::mem::transmute_copy(&currentspectruminversion), core::mem::transmute_copy(&currentpidlist), core::mem::transmute_copy(&currenttidlist), core::mem::transmute_copy(&overflow)).into()
        }
        unsafe extern "system" fn RequestTables<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tableids: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FDC_Impl::RequestTables(this, core::mem::transmute(&tableids)).into()
        }
        unsafe extern "system" fn AddPid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidstoadd: core::mem::MaybeUninit<windows_core::BSTR>, remainingfilterentries: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_FDC_Impl::AddPid(this, core::mem::transmute(&pidstoadd)) {
                Ok(ok__) => {
                    remainingfilterentries.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemovePid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidstoremove: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FDC_Impl::RemovePid(this, core::mem::transmute(&pidstoremove)).into()
        }
        unsafe extern "system" fn AddTid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tidstoadd: core::mem::MaybeUninit<windows_core::BSTR>, currenttidlist: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_FDC_Impl::AddTid(this, core::mem::transmute(&tidstoadd)) {
                Ok(ok__) => {
                    currenttidlist.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveTid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tidstoremove: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FDC_Impl::RemoveTid(this, core::mem::transmute(&tidstoremove)).into()
        }
        unsafe extern "system" fn GetTableSection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: *mut u32, maxbuffersize: u32, actualsize: *mut u32, secbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_FDC_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FDC_Impl::GetTableSection(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&maxbuffersize), core::mem::transmute_copy(&actualsize), core::mem::transmute_copy(&secbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetStatus: GetStatus::<Identity, OFFSET>,
            RequestTables: RequestTables::<Identity, OFFSET>,
            AddPid: AddPid::<Identity, OFFSET>,
            RemovePid: RemovePid::<Identity, OFFSET>,
            AddTid: AddTid::<Identity, OFFSET>,
            RemoveTid: RemoveTid::<Identity, OFFSET>,
            GetTableSection: GetTableSection::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_FDC as windows_core::Interface>::IID
    }
}
pub trait IBDA_FrequencyFilter_Impl: Sized {
    fn SetAutotune(&self, ultransponder: u32) -> windows_core::Result<()>;
    fn Autotune(&self, pultransponder: *mut u32) -> windows_core::Result<()>;
    fn SetFrequency(&self, ulfrequency: u32) -> windows_core::Result<()>;
    fn Frequency(&self, pulfrequency: *mut u32) -> windows_core::Result<()>;
    fn SetPolarity(&self, polarity: Polarisation) -> windows_core::Result<()>;
    fn Polarity(&self, ppolarity: *mut Polarisation) -> windows_core::Result<()>;
    fn SetRange(&self, ulrange: u32) -> windows_core::Result<()>;
    fn Range(&self, pulrange: *mut u32) -> windows_core::Result<()>;
    fn SetBandwidth(&self, ulbandwidth: u32) -> windows_core::Result<()>;
    fn Bandwidth(&self, pulbandwidth: *mut u32) -> windows_core::Result<()>;
    fn SetFrequencyMultiplier(&self, ulmultiplier: u32) -> windows_core::Result<()>;
    fn FrequencyMultiplier(&self, pulmultiplier: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_FrequencyFilter {}
impl IBDA_FrequencyFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_FrequencyFilter_Vtbl
    where
        Identity: IBDA_FrequencyFilter_Impl,
    {
        unsafe extern "system" fn SetAutotune<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultransponder: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::SetAutotune(this, core::mem::transmute_copy(&ultransponder)).into()
        }
        unsafe extern "system" fn Autotune<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pultransponder: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::Autotune(this, core::mem::transmute_copy(&pultransponder)).into()
        }
        unsafe extern "system" fn SetFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulfrequency: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::SetFrequency(this, core::mem::transmute_copy(&ulfrequency)).into()
        }
        unsafe extern "system" fn Frequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulfrequency: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::Frequency(this, core::mem::transmute_copy(&pulfrequency)).into()
        }
        unsafe extern "system" fn SetPolarity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, polarity: Polarisation) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::SetPolarity(this, core::mem::transmute_copy(&polarity)).into()
        }
        unsafe extern "system" fn Polarity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppolarity: *mut Polarisation) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::Polarity(this, core::mem::transmute_copy(&ppolarity)).into()
        }
        unsafe extern "system" fn SetRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulrange: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::SetRange(this, core::mem::transmute_copy(&ulrange)).into()
        }
        unsafe extern "system" fn Range<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulrange: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::Range(this, core::mem::transmute_copy(&pulrange)).into()
        }
        unsafe extern "system" fn SetBandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulbandwidth: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::SetBandwidth(this, core::mem::transmute_copy(&ulbandwidth)).into()
        }
        unsafe extern "system" fn Bandwidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulbandwidth: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::Bandwidth(this, core::mem::transmute_copy(&pulbandwidth)).into()
        }
        unsafe extern "system" fn SetFrequencyMultiplier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulmultiplier: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::SetFrequencyMultiplier(this, core::mem::transmute_copy(&ulmultiplier)).into()
        }
        unsafe extern "system" fn FrequencyMultiplier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulmultiplier: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_FrequencyFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_FrequencyFilter_Impl::FrequencyMultiplier(this, core::mem::transmute_copy(&pulmultiplier)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAutotune: SetAutotune::<Identity, OFFSET>,
            Autotune: Autotune::<Identity, OFFSET>,
            SetFrequency: SetFrequency::<Identity, OFFSET>,
            Frequency: Frequency::<Identity, OFFSET>,
            SetPolarity: SetPolarity::<Identity, OFFSET>,
            Polarity: Polarity::<Identity, OFFSET>,
            SetRange: SetRange::<Identity, OFFSET>,
            Range: Range::<Identity, OFFSET>,
            SetBandwidth: SetBandwidth::<Identity, OFFSET>,
            Bandwidth: Bandwidth::<Identity, OFFSET>,
            SetFrequencyMultiplier: SetFrequencyMultiplier::<Identity, OFFSET>,
            FrequencyMultiplier: FrequencyMultiplier::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_FrequencyFilter as windows_core::Interface>::IID
    }
}
pub trait IBDA_GuideDataDeliveryService_Impl: Sized {
    fn GetGuideDataType(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetGuideData(&self, pulcbbufferlen: *mut u32, pbbuffer: *mut u8, pulguidedatapercentageprogress: *mut u32) -> windows_core::Result<()>;
    fn RequestGuideDataUpdate(&self) -> windows_core::Result<()>;
    fn GetTuneXmlFromServiceIdx(&self, ul64serviceidx: u64) -> windows_core::Result<windows_core::BSTR>;
    fn GetServices(&self, pulcbbufferlen: *mut u32, pbbuffer: *mut u8) -> windows_core::Result<()>;
    fn GetServiceInfoFromTuneXml(&self, bstrtunexml: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IBDA_GuideDataDeliveryService {}
impl IBDA_GuideDataDeliveryService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_GuideDataDeliveryService_Vtbl
    where
        Identity: IBDA_GuideDataDeliveryService_Impl,
    {
        unsafe extern "system" fn GetGuideDataType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguiddatatype: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_GuideDataDeliveryService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_GuideDataDeliveryService_Impl::GetGuideDataType(this) {
                Ok(ok__) => {
                    pguiddatatype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetGuideData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbbufferlen: *mut u32, pbbuffer: *mut u8, pulguidedatapercentageprogress: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_GuideDataDeliveryService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_GuideDataDeliveryService_Impl::GetGuideData(this, core::mem::transmute_copy(&pulcbbufferlen), core::mem::transmute_copy(&pbbuffer), core::mem::transmute_copy(&pulguidedatapercentageprogress)).into()
        }
        unsafe extern "system" fn RequestGuideDataUpdate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_GuideDataDeliveryService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_GuideDataDeliveryService_Impl::RequestGuideDataUpdate(this).into()
        }
        unsafe extern "system" fn GetTuneXmlFromServiceIdx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ul64serviceidx: u64, pbstrtunexml: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_GuideDataDeliveryService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_GuideDataDeliveryService_Impl::GetTuneXmlFromServiceIdx(this, core::mem::transmute_copy(&ul64serviceidx)) {
                Ok(ok__) => {
                    pbstrtunexml.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, pulcbbufferlen: *mut u32, pbbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_GuideDataDeliveryService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_GuideDataDeliveryService_Impl::GetServices(this, core::mem::transmute_copy(&pulcbbufferlen), core::mem::transmute_copy(&pbbuffer)).into()
        }
        unsafe extern "system" fn GetServiceInfoFromTuneXml<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrtunexml: core::mem::MaybeUninit<windows_core::BSTR>, pbstrservicedescription: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_GuideDataDeliveryService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_GuideDataDeliveryService_Impl::GetServiceInfoFromTuneXml(this, core::mem::transmute(&bstrtunexml)) {
                Ok(ok__) => {
                    pbstrservicedescription.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetGuideDataType: GetGuideDataType::<Identity, OFFSET>,
            GetGuideData: GetGuideData::<Identity, OFFSET>,
            RequestGuideDataUpdate: RequestGuideDataUpdate::<Identity, OFFSET>,
            GetTuneXmlFromServiceIdx: GetTuneXmlFromServiceIdx::<Identity, OFFSET>,
            GetServices: GetServices::<Identity, OFFSET>,
            GetServiceInfoFromTuneXml: GetServiceInfoFromTuneXml::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_GuideDataDeliveryService as windows_core::Interface>::IID
    }
}
pub trait IBDA_IPSinkControl_Impl: Sized {
    fn GetMulticastList(&self, pulcbsize: *mut u32, pbbuffer: *mut *mut u8) -> windows_core::Result<()>;
    fn GetAdapterIPAddress(&self, pulcbsize: *mut u32, pbbuffer: *mut *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_IPSinkControl {}
impl IBDA_IPSinkControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_IPSinkControl_Vtbl
    where
        Identity: IBDA_IPSinkControl_Impl,
    {
        unsafe extern "system" fn GetMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbsize: *mut u32, pbbuffer: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPSinkControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPSinkControl_Impl::GetMulticastList(this, core::mem::transmute_copy(&pulcbsize), core::mem::transmute_copy(&pbbuffer)).into()
        }
        unsafe extern "system" fn GetAdapterIPAddress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbsize: *mut u32, pbbuffer: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPSinkControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPSinkControl_Impl::GetAdapterIPAddress(this, core::mem::transmute_copy(&pulcbsize), core::mem::transmute_copy(&pbbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastList: GetMulticastList::<Identity, OFFSET>,
            GetAdapterIPAddress: GetAdapterIPAddress::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_IPSinkControl as windows_core::Interface>::IID
    }
}
pub trait IBDA_IPSinkInfo_Impl: Sized {
    fn get_MulticastList(&self, pulcbaddresses: *mut u32, ppbaddresslist: *mut *mut u8) -> windows_core::Result<()>;
    fn AdapterIPAddress(&self) -> windows_core::Result<windows_core::BSTR>;
    fn AdapterDescription(&self) -> windows_core::Result<windows_core::BSTR>;
}
impl windows_core::RuntimeName for IBDA_IPSinkInfo {}
impl IBDA_IPSinkInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_IPSinkInfo_Vtbl
    where
        Identity: IBDA_IPSinkInfo_Impl,
    {
        unsafe extern "system" fn get_MulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32, ppbaddresslist: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPSinkInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPSinkInfo_Impl::get_MulticastList(this, core::mem::transmute_copy(&pulcbaddresses), core::mem::transmute_copy(&ppbaddresslist)).into()
        }
        unsafe extern "system" fn AdapterIPAddress<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrbuffer: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_IPSinkInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_IPSinkInfo_Impl::AdapterIPAddress(this) {
                Ok(ok__) => {
                    pbstrbuffer.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AdapterDescription<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrbuffer: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_IPSinkInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_IPSinkInfo_Impl::AdapterDescription(this) {
                Ok(ok__) => {
                    pbstrbuffer.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_MulticastList: get_MulticastList::<Identity, OFFSET>,
            AdapterIPAddress: AdapterIPAddress::<Identity, OFFSET>,
            AdapterDescription: AdapterDescription::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_IPSinkInfo as windows_core::Interface>::IID
    }
}
pub trait IBDA_IPV4Filter_Impl: Sized {
    fn GetMulticastListSize(&self, pulcbaddresses: *mut u32) -> windows_core::Result<()>;
    fn PutMulticastList(&self, ulcbaddresses: u32, paddresslist: *const u8) -> windows_core::Result<()>;
    fn GetMulticastList(&self, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> windows_core::Result<()>;
    fn PutMulticastMode(&self, ulmodemask: u32) -> windows_core::Result<()>;
    fn GetMulticastMode(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IBDA_IPV4Filter {}
impl IBDA_IPV4Filter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_IPV4Filter_Vtbl
    where
        Identity: IBDA_IPV4Filter_Impl,
    {
        unsafe extern "system" fn GetMulticastListSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV4Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV4Filter_Impl::GetMulticastListSize(this, core::mem::transmute_copy(&pulcbaddresses)).into()
        }
        unsafe extern "system" fn PutMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcbaddresses: u32, paddresslist: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV4Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV4Filter_Impl::PutMulticastList(this, core::mem::transmute_copy(&ulcbaddresses), core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn GetMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV4Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV4Filter_Impl::GetMulticastList(this, core::mem::transmute_copy(&pulcbaddresses), core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn PutMulticastMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulmodemask: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV4Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV4Filter_Impl::PutMulticastMode(this, core::mem::transmute_copy(&ulmodemask)).into()
        }
        unsafe extern "system" fn GetMulticastMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulmodemask: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV4Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_IPV4Filter_Impl::GetMulticastMode(this) {
                Ok(ok__) => {
                    pulmodemask.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastListSize: GetMulticastListSize::<Identity, OFFSET>,
            PutMulticastList: PutMulticastList::<Identity, OFFSET>,
            GetMulticastList: GetMulticastList::<Identity, OFFSET>,
            PutMulticastMode: PutMulticastMode::<Identity, OFFSET>,
            GetMulticastMode: GetMulticastMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_IPV4Filter as windows_core::Interface>::IID
    }
}
pub trait IBDA_IPV6Filter_Impl: Sized {
    fn GetMulticastListSize(&self, pulcbaddresses: *mut u32) -> windows_core::Result<()>;
    fn PutMulticastList(&self, ulcbaddresses: u32, paddresslist: *const u8) -> windows_core::Result<()>;
    fn GetMulticastList(&self, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> windows_core::Result<()>;
    fn PutMulticastMode(&self, ulmodemask: u32) -> windows_core::Result<()>;
    fn GetMulticastMode(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IBDA_IPV6Filter {}
impl IBDA_IPV6Filter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_IPV6Filter_Vtbl
    where
        Identity: IBDA_IPV6Filter_Impl,
    {
        unsafe extern "system" fn GetMulticastListSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV6Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV6Filter_Impl::GetMulticastListSize(this, core::mem::transmute_copy(&pulcbaddresses)).into()
        }
        unsafe extern "system" fn PutMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcbaddresses: u32, paddresslist: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV6Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV6Filter_Impl::PutMulticastList(this, core::mem::transmute_copy(&ulcbaddresses), core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn GetMulticastList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcbaddresses: *mut u32, paddresslist: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV6Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV6Filter_Impl::GetMulticastList(this, core::mem::transmute_copy(&pulcbaddresses), core::mem::transmute_copy(&paddresslist)).into()
        }
        unsafe extern "system" fn PutMulticastMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulmodemask: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV6Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_IPV6Filter_Impl::PutMulticastMode(this, core::mem::transmute_copy(&ulmodemask)).into()
        }
        unsafe extern "system" fn GetMulticastMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulmodemask: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_IPV6Filter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_IPV6Filter_Impl::GetMulticastMode(this) {
                Ok(ok__) => {
                    pulmodemask.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMulticastListSize: GetMulticastListSize::<Identity, OFFSET>,
            PutMulticastList: PutMulticastList::<Identity, OFFSET>,
            GetMulticastList: GetMulticastList::<Identity, OFFSET>,
            PutMulticastMode: PutMulticastMode::<Identity, OFFSET>,
            GetMulticastMode: GetMulticastMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_IPV6Filter as windows_core::Interface>::IID
    }
}
pub trait IBDA_ISDBConditionalAccess_Impl: Sized {
    fn SetIsdbCasRequest(&self, ulrequestid: u32, ulcbrequestbufferlen: u32, pbrequestbuffer: *const u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_ISDBConditionalAccess {}
impl IBDA_ISDBConditionalAccess_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_ISDBConditionalAccess_Vtbl
    where
        Identity: IBDA_ISDBConditionalAccess_Impl,
    {
        unsafe extern "system" fn SetIsdbCasRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulrequestid: u32, ulcbrequestbufferlen: u32, pbrequestbuffer: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_ISDBConditionalAccess_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_ISDBConditionalAccess_Impl::SetIsdbCasRequest(this, core::mem::transmute_copy(&ulrequestid), core::mem::transmute_copy(&ulcbrequestbufferlen), core::mem::transmute_copy(&pbrequestbuffer)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetIsdbCasRequest: SetIsdbCasRequest::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_ISDBConditionalAccess as windows_core::Interface>::IID
    }
}
pub trait IBDA_LNBInfo_Impl: Sized {
    fn SetLocalOscilatorFrequencyLowBand(&self, ulloflow: u32) -> windows_core::Result<()>;
    fn LocalOscilatorFrequencyLowBand(&self, pulloflow: *mut u32) -> windows_core::Result<()>;
    fn SetLocalOscilatorFrequencyHighBand(&self, ullofhigh: u32) -> windows_core::Result<()>;
    fn LocalOscilatorFrequencyHighBand(&self, pullofhigh: *mut u32) -> windows_core::Result<()>;
    fn SetHighLowSwitchFrequency(&self, ulswitchfrequency: u32) -> windows_core::Result<()>;
    fn HighLowSwitchFrequency(&self, pulswitchfrequency: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_LNBInfo {}
impl IBDA_LNBInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_LNBInfo_Vtbl
    where
        Identity: IBDA_LNBInfo_Impl,
    {
        unsafe extern "system" fn SetLocalOscilatorFrequencyLowBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulloflow: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_LNBInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_LNBInfo_Impl::SetLocalOscilatorFrequencyLowBand(this, core::mem::transmute_copy(&ulloflow)).into()
        }
        unsafe extern "system" fn LocalOscilatorFrequencyLowBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulloflow: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_LNBInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_LNBInfo_Impl::LocalOscilatorFrequencyLowBand(this, core::mem::transmute_copy(&pulloflow)).into()
        }
        unsafe extern "system" fn SetLocalOscilatorFrequencyHighBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullofhigh: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_LNBInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_LNBInfo_Impl::SetLocalOscilatorFrequencyHighBand(this, core::mem::transmute_copy(&ullofhigh)).into()
        }
        unsafe extern "system" fn LocalOscilatorFrequencyHighBand<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pullofhigh: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_LNBInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_LNBInfo_Impl::LocalOscilatorFrequencyHighBand(this, core::mem::transmute_copy(&pullofhigh)).into()
        }
        unsafe extern "system" fn SetHighLowSwitchFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulswitchfrequency: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_LNBInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_LNBInfo_Impl::SetHighLowSwitchFrequency(this, core::mem::transmute_copy(&ulswitchfrequency)).into()
        }
        unsafe extern "system" fn HighLowSwitchFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulswitchfrequency: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_LNBInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_LNBInfo_Impl::HighLowSwitchFrequency(this, core::mem::transmute_copy(&pulswitchfrequency)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetLocalOscilatorFrequencyLowBand: SetLocalOscilatorFrequencyLowBand::<Identity, OFFSET>,
            LocalOscilatorFrequencyLowBand: LocalOscilatorFrequencyLowBand::<Identity, OFFSET>,
            SetLocalOscilatorFrequencyHighBand: SetLocalOscilatorFrequencyHighBand::<Identity, OFFSET>,
            LocalOscilatorFrequencyHighBand: LocalOscilatorFrequencyHighBand::<Identity, OFFSET>,
            SetHighLowSwitchFrequency: SetHighLowSwitchFrequency::<Identity, OFFSET>,
            HighLowSwitchFrequency: HighLowSwitchFrequency::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_LNBInfo as windows_core::Interface>::IID
    }
}
pub trait IBDA_MUX_Impl: Sized {
    fn SetPidList(&self, ulpidlistcount: u32, pbpidlistbuffer: *const BDA_MUX_PIDLISTITEM) -> windows_core::Result<()>;
    fn GetPidList(&self, pulpidlistcount: *mut u32, pbpidlistbuffer: *mut BDA_MUX_PIDLISTITEM) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_MUX {}
impl IBDA_MUX_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_MUX_Vtbl
    where
        Identity: IBDA_MUX_Impl,
    {
        unsafe extern "system" fn SetPidList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpidlistcount: u32, pbpidlistbuffer: *const BDA_MUX_PIDLISTITEM) -> windows_core::HRESULT
        where
            Identity: IBDA_MUX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_MUX_Impl::SetPidList(this, core::mem::transmute_copy(&ulpidlistcount), core::mem::transmute_copy(&pbpidlistbuffer)).into()
        }
        unsafe extern "system" fn GetPidList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulpidlistcount: *mut u32, pbpidlistbuffer: *mut BDA_MUX_PIDLISTITEM) -> windows_core::HRESULT
        where
            Identity: IBDA_MUX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_MUX_Impl::GetPidList(this, core::mem::transmute_copy(&pulpidlistcount), core::mem::transmute_copy(&pbpidlistbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetPidList: SetPidList::<Identity, OFFSET>,
            GetPidList: GetPidList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_MUX as windows_core::Interface>::IID
    }
}
pub trait IBDA_NameValueService_Impl: Sized {
    fn GetValueNameByIndex(&self, ulindex: u32) -> windows_core::Result<windows_core::BSTR>;
    fn GetValue(&self, bstrname: &windows_core::BSTR, bstrlanguage: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
    fn SetValue(&self, uldialogrequest: u32, bstrlanguage: &windows_core::BSTR, bstrname: &windows_core::BSTR, bstrvalue: &windows_core::BSTR, ulreserved: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_NameValueService {}
impl IBDA_NameValueService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_NameValueService_Vtbl
    where
        Identity: IBDA_NameValueService_Impl,
    {
        unsafe extern "system" fn GetValueNameByIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulindex: u32, pbstrname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_NameValueService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_NameValueService_Impl::GetValueNameByIndex(this, core::mem::transmute_copy(&ulindex)) {
                Ok(ok__) => {
                    pbstrname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: core::mem::MaybeUninit<windows_core::BSTR>, bstrlanguage: core::mem::MaybeUninit<windows_core::BSTR>, pbstrvalue: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IBDA_NameValueService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_NameValueService_Impl::GetValue(this, core::mem::transmute(&bstrname), core::mem::transmute(&bstrlanguage)) {
                Ok(ok__) => {
                    pbstrvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uldialogrequest: u32, bstrlanguage: core::mem::MaybeUninit<windows_core::BSTR>, bstrname: core::mem::MaybeUninit<windows_core::BSTR>, bstrvalue: core::mem::MaybeUninit<windows_core::BSTR>, ulreserved: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_NameValueService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NameValueService_Impl::SetValue(this, core::mem::transmute_copy(&uldialogrequest), core::mem::transmute(&bstrlanguage), core::mem::transmute(&bstrname), core::mem::transmute(&bstrvalue), core::mem::transmute_copy(&ulreserved)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetValueNameByIndex: GetValueNameByIndex::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
            SetValue: SetValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_NameValueService as windows_core::Interface>::IID
    }
}
pub trait IBDA_NetworkProvider_Impl: Sized {
    fn PutSignalSource(&self, ulsignalsource: u32) -> windows_core::Result<()>;
    fn GetSignalSource(&self, pulsignalsource: *mut u32) -> windows_core::Result<()>;
    fn GetNetworkType(&self, pguidnetworktype: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn PutTuningSpace(&self, guidtuningspace: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetTuningSpace(&self, pguidtuingspace: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn RegisterDeviceFilter(&self, punkfiltercontrol: Option<&windows_core::IUnknown>, ppvregisitrationcontext: *mut u32) -> windows_core::Result<()>;
    fn UnRegisterDeviceFilter(&self, pvregistrationcontext: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_NetworkProvider {}
impl IBDA_NetworkProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_NetworkProvider_Vtbl
    where
        Identity: IBDA_NetworkProvider_Impl,
    {
        unsafe extern "system" fn PutSignalSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulsignalsource: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::PutSignalSource(this, core::mem::transmute_copy(&ulsignalsource)).into()
        }
        unsafe extern "system" fn GetSignalSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulsignalsource: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::GetSignalSource(this, core::mem::transmute_copy(&pulsignalsource)).into()
        }
        unsafe extern "system" fn GetNetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidnetworktype: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::GetNetworkType(this, core::mem::transmute_copy(&pguidnetworktype)).into()
        }
        unsafe extern "system" fn PutTuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidtuningspace: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::PutTuningSpace(this, core::mem::transmute_copy(&guidtuningspace)).into()
        }
        unsafe extern "system" fn GetTuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidtuingspace: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::GetTuningSpace(this, core::mem::transmute_copy(&pguidtuingspace)).into()
        }
        unsafe extern "system" fn RegisterDeviceFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkfiltercontrol: *mut core::ffi::c_void, ppvregisitrationcontext: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::RegisterDeviceFilter(this, windows_core::from_raw_borrowed(&punkfiltercontrol), core::mem::transmute_copy(&ppvregisitrationcontext)).into()
        }
        unsafe extern "system" fn UnRegisterDeviceFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvregistrationcontext: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_NetworkProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NetworkProvider_Impl::UnRegisterDeviceFilter(this, core::mem::transmute_copy(&pvregistrationcontext)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PutSignalSource: PutSignalSource::<Identity, OFFSET>,
            GetSignalSource: GetSignalSource::<Identity, OFFSET>,
            GetNetworkType: GetNetworkType::<Identity, OFFSET>,
            PutTuningSpace: PutTuningSpace::<Identity, OFFSET>,
            GetTuningSpace: GetTuningSpace::<Identity, OFFSET>,
            RegisterDeviceFilter: RegisterDeviceFilter::<Identity, OFFSET>,
            UnRegisterDeviceFilter: UnRegisterDeviceFilter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_NetworkProvider as windows_core::Interface>::IID
    }
}
pub trait IBDA_NullTransform_Impl: Sized {
    fn Start(&self) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_NullTransform {}
impl IBDA_NullTransform_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_NullTransform_Vtbl
    where
        Identity: IBDA_NullTransform_Impl,
    {
        unsafe extern "system" fn Start<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_NullTransform_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NullTransform_Impl::Start(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: IBDA_NullTransform_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_NullTransform_Impl::Stop(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Start: Start::<Identity, OFFSET>, Stop: Stop::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_NullTransform as windows_core::Interface>::IID
    }
}
pub trait IBDA_PinControl_Impl: Sized {
    fn GetPinID(&self, pulpinid: *mut u32) -> windows_core::Result<()>;
    fn GetPinType(&self, pulpintype: *mut u32) -> windows_core::Result<()>;
    fn RegistrationContext(&self, pulregistrationctx: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_PinControl {}
impl IBDA_PinControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_PinControl_Vtbl
    where
        Identity: IBDA_PinControl_Impl,
    {
        unsafe extern "system" fn GetPinID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulpinid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_PinControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_PinControl_Impl::GetPinID(this, core::mem::transmute_copy(&pulpinid)).into()
        }
        unsafe extern "system" fn GetPinType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulpintype: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_PinControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_PinControl_Impl::GetPinType(this, core::mem::transmute_copy(&pulpintype)).into()
        }
        unsafe extern "system" fn RegistrationContext<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulregistrationctx: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_PinControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_PinControl_Impl::RegistrationContext(this, core::mem::transmute_copy(&pulregistrationctx)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPinID: GetPinID::<Identity, OFFSET>,
            GetPinType: GetPinType::<Identity, OFFSET>,
            RegistrationContext: RegistrationContext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_PinControl as windows_core::Interface>::IID
    }
}
pub trait IBDA_SignalProperties_Impl: Sized {
    fn PutNetworkType(&self, guidnetworktype: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetNetworkType(&self, pguidnetworktype: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn PutSignalSource(&self, ulsignalsource: u32) -> windows_core::Result<()>;
    fn GetSignalSource(&self, pulsignalsource: *mut u32) -> windows_core::Result<()>;
    fn PutTuningSpace(&self, guidtuningspace: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetTuningSpace(&self, pguidtuingspace: *mut windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_SignalProperties {}
impl IBDA_SignalProperties_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_SignalProperties_Vtbl
    where
        Identity: IBDA_SignalProperties_Impl,
    {
        unsafe extern "system" fn PutNetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidnetworktype: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalProperties_Impl::PutNetworkType(this, core::mem::transmute_copy(&guidnetworktype)).into()
        }
        unsafe extern "system" fn GetNetworkType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidnetworktype: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalProperties_Impl::GetNetworkType(this, core::mem::transmute_copy(&pguidnetworktype)).into()
        }
        unsafe extern "system" fn PutSignalSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulsignalsource: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalProperties_Impl::PutSignalSource(this, core::mem::transmute_copy(&ulsignalsource)).into()
        }
        unsafe extern "system" fn GetSignalSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulsignalsource: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalProperties_Impl::GetSignalSource(this, core::mem::transmute_copy(&pulsignalsource)).into()
        }
        unsafe extern "system" fn PutTuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidtuningspace: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalProperties_Impl::PutTuningSpace(this, core::mem::transmute_copy(&guidtuningspace)).into()
        }
        unsafe extern "system" fn GetTuningSpace<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidtuingspace: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalProperties_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalProperties_Impl::GetTuningSpace(this, core::mem::transmute_copy(&pguidtuingspace)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PutNetworkType: PutNetworkType::<Identity, OFFSET>,
            GetNetworkType: GetNetworkType::<Identity, OFFSET>,
            PutSignalSource: PutSignalSource::<Identity, OFFSET>,
            GetSignalSource: GetSignalSource::<Identity, OFFSET>,
            PutTuningSpace: PutTuningSpace::<Identity, OFFSET>,
            GetTuningSpace: GetTuningSpace::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_SignalProperties as windows_core::Interface>::IID
    }
}
pub trait IBDA_SignalStatistics_Impl: Sized {
    fn SetSignalStrength(&self, ldbstrength: i32) -> windows_core::Result<()>;
    fn SignalStrength(&self, pldbstrength: *mut i32) -> windows_core::Result<()>;
    fn SetSignalQuality(&self, lpercentquality: i32) -> windows_core::Result<()>;
    fn SignalQuality(&self, plpercentquality: *mut i32) -> windows_core::Result<()>;
    fn SetSignalPresent(&self, fpresent: super::super::Foundation::BOOLEAN) -> windows_core::Result<()>;
    fn SignalPresent(&self, pfpresent: *mut u8) -> windows_core::Result<()>;
    fn SetSignalLocked(&self, flocked: super::super::Foundation::BOOLEAN) -> windows_core::Result<()>;
    fn SignalLocked(&self, pflocked: *mut u8) -> windows_core::Result<()>;
    fn SetSampleTime(&self, lmssampletime: i32) -> windows_core::Result<()>;
    fn SampleTime(&self, plmssampletime: *mut i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_SignalStatistics {}
impl IBDA_SignalStatistics_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_SignalStatistics_Vtbl
    where
        Identity: IBDA_SignalStatistics_Impl,
    {
        unsafe extern "system" fn SetSignalStrength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ldbstrength: i32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SetSignalStrength(this, core::mem::transmute_copy(&ldbstrength)).into()
        }
        unsafe extern "system" fn SignalStrength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pldbstrength: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SignalStrength(this, core::mem::transmute_copy(&pldbstrength)).into()
        }
        unsafe extern "system" fn SetSignalQuality<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpercentquality: i32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SetSignalQuality(this, core::mem::transmute_copy(&lpercentquality)).into()
        }
        unsafe extern "system" fn SignalQuality<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plpercentquality: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SignalQuality(this, core::mem::transmute_copy(&plpercentquality)).into()
        }
        unsafe extern "system" fn SetSignalPresent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpresent: super::super::Foundation::BOOLEAN) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SetSignalPresent(this, core::mem::transmute_copy(&fpresent)).into()
        }
        unsafe extern "system" fn SignalPresent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfpresent: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SignalPresent(this, core::mem::transmute_copy(&pfpresent)).into()
        }
        unsafe extern "system" fn SetSignalLocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flocked: super::super::Foundation::BOOLEAN) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SetSignalLocked(this, core::mem::transmute_copy(&flocked)).into()
        }
        unsafe extern "system" fn SignalLocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflocked: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SignalLocked(this, core::mem::transmute_copy(&pflocked)).into()
        }
        unsafe extern "system" fn SetSampleTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lmssampletime: i32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SetSampleTime(this, core::mem::transmute_copy(&lmssampletime)).into()
        }
        unsafe extern "system" fn SampleTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plmssampletime: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBDA_SignalStatistics_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_SignalStatistics_Impl::SampleTime(this, core::mem::transmute_copy(&plmssampletime)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetSignalStrength: SetSignalStrength::<Identity, OFFSET>,
            SignalStrength: SignalStrength::<Identity, OFFSET>,
            SetSignalQuality: SetSignalQuality::<Identity, OFFSET>,
            SignalQuality: SignalQuality::<Identity, OFFSET>,
            SetSignalPresent: SetSignalPresent::<Identity, OFFSET>,
            SignalPresent: SignalPresent::<Identity, OFFSET>,
            SetSignalLocked: SetSignalLocked::<Identity, OFFSET>,
            SignalLocked: SignalLocked::<Identity, OFFSET>,
            SetSampleTime: SetSampleTime::<Identity, OFFSET>,
            SampleTime: SampleTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_SignalStatistics as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IBDA_Topology_Impl: Sized {
    fn GetNodeTypes(&self, pulcnodetypes: *mut u32, ulcnodetypesmax: u32, rgulnodetypes: *mut u32) -> windows_core::Result<()>;
    fn GetNodeDescriptors(&self, ulcnodedescriptors: *mut u32, ulcnodedescriptorsmax: u32, rgnodedescriptors: *mut BDANODE_DESCRIPTOR) -> windows_core::Result<()>;
    fn GetNodeInterfaces(&self, ulnodetype: u32, pulcinterfaces: *mut u32, ulcinterfacesmax: u32, rgguidinterfaces: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetPinTypes(&self, pulcpintypes: *mut u32, ulcpintypesmax: u32, rgulpintypes: *mut u32) -> windows_core::Result<()>;
    fn GetTemplateConnections(&self, pulcconnections: *mut u32, ulcconnectionsmax: u32, rgconnections: *mut BDA_TEMPLATE_CONNECTION) -> windows_core::Result<()>;
    fn CreatePin(&self, ulpintype: u32, pulpinid: *mut u32) -> windows_core::Result<()>;
    fn DeletePin(&self, ulpinid: u32) -> windows_core::Result<()>;
    fn SetMediaType(&self, ulpinid: u32, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn SetMedium(&self, ulpinid: u32, pmedium: *const REGPINMEDIUM) -> windows_core::Result<()>;
    fn CreateTopology(&self, ulinputpinid: u32, uloutputpinid: u32) -> windows_core::Result<()>;
    fn GetControlNode(&self, ulinputpinid: u32, uloutputpinid: u32, ulnodetype: u32, ppcontrolnode: *mut Option<windows_core::IUnknown>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IBDA_Topology {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IBDA_Topology_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_Topology_Vtbl
    where
        Identity: IBDA_Topology_Impl,
    {
        unsafe extern "system" fn GetNodeTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcnodetypes: *mut u32, ulcnodetypesmax: u32, rgulnodetypes: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::GetNodeTypes(this, core::mem::transmute_copy(&pulcnodetypes), core::mem::transmute_copy(&ulcnodetypesmax), core::mem::transmute_copy(&rgulnodetypes)).into()
        }
        unsafe extern "system" fn GetNodeDescriptors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcnodedescriptors: *mut u32, ulcnodedescriptorsmax: u32, rgnodedescriptors: *mut BDANODE_DESCRIPTOR) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::GetNodeDescriptors(this, core::mem::transmute_copy(&ulcnodedescriptors), core::mem::transmute_copy(&ulcnodedescriptorsmax), core::mem::transmute_copy(&rgnodedescriptors)).into()
        }
        unsafe extern "system" fn GetNodeInterfaces<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulnodetype: u32, pulcinterfaces: *mut u32, ulcinterfacesmax: u32, rgguidinterfaces: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::GetNodeInterfaces(this, core::mem::transmute_copy(&ulnodetype), core::mem::transmute_copy(&pulcinterfaces), core::mem::transmute_copy(&ulcinterfacesmax), core::mem::transmute_copy(&rgguidinterfaces)).into()
        }
        unsafe extern "system" fn GetPinTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcpintypes: *mut u32, ulcpintypesmax: u32, rgulpintypes: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::GetPinTypes(this, core::mem::transmute_copy(&pulcpintypes), core::mem::transmute_copy(&ulcpintypesmax), core::mem::transmute_copy(&rgulpintypes)).into()
        }
        unsafe extern "system" fn GetTemplateConnections<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcconnections: *mut u32, ulcconnectionsmax: u32, rgconnections: *mut BDA_TEMPLATE_CONNECTION) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::GetTemplateConnections(this, core::mem::transmute_copy(&pulcconnections), core::mem::transmute_copy(&ulcconnectionsmax), core::mem::transmute_copy(&rgconnections)).into()
        }
        unsafe extern "system" fn CreatePin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpintype: u32, pulpinid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::CreatePin(this, core::mem::transmute_copy(&ulpintype), core::mem::transmute_copy(&pulpinid)).into()
        }
        unsafe extern "system" fn DeletePin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpinid: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::DeletePin(this, core::mem::transmute_copy(&ulpinid)).into()
        }
        unsafe extern "system" fn SetMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpinid: u32, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::SetMediaType(this, core::mem::transmute_copy(&ulpinid), core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn SetMedium<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpinid: u32, pmedium: *const REGPINMEDIUM) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::SetMedium(this, core::mem::transmute_copy(&ulpinid), core::mem::transmute_copy(&pmedium)).into()
        }
        unsafe extern "system" fn CreateTopology<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulinputpinid: u32, uloutputpinid: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::CreateTopology(this, core::mem::transmute_copy(&ulinputpinid), core::mem::transmute_copy(&uloutputpinid)).into()
        }
        unsafe extern "system" fn GetControlNode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulinputpinid: u32, uloutputpinid: u32, ulnodetype: u32, ppcontrolnode: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_Topology_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_Topology_Impl::GetControlNode(this, core::mem::transmute_copy(&ulinputpinid), core::mem::transmute_copy(&uloutputpinid), core::mem::transmute_copy(&ulnodetype), core::mem::transmute_copy(&ppcontrolnode)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNodeTypes: GetNodeTypes::<Identity, OFFSET>,
            GetNodeDescriptors: GetNodeDescriptors::<Identity, OFFSET>,
            GetNodeInterfaces: GetNodeInterfaces::<Identity, OFFSET>,
            GetPinTypes: GetPinTypes::<Identity, OFFSET>,
            GetTemplateConnections: GetTemplateConnections::<Identity, OFFSET>,
            CreatePin: CreatePin::<Identity, OFFSET>,
            DeletePin: DeletePin::<Identity, OFFSET>,
            SetMediaType: SetMediaType::<Identity, OFFSET>,
            SetMedium: SetMedium::<Identity, OFFSET>,
            CreateTopology: CreateTopology::<Identity, OFFSET>,
            GetControlNode: GetControlNode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_Topology as windows_core::Interface>::IID
    }
}
pub trait IBDA_TransportStreamInfo_Impl: Sized {
    fn PatTableTickCount(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IBDA_TransportStreamInfo {}
impl IBDA_TransportStreamInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_TransportStreamInfo_Vtbl
    where
        Identity: IBDA_TransportStreamInfo_Impl,
    {
        unsafe extern "system" fn PatTableTickCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppattickcount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_TransportStreamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_TransportStreamInfo_Impl::PatTableTickCount(this) {
                Ok(ok__) => {
                    ppattickcount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PatTableTickCount: PatTableTickCount::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_TransportStreamInfo as windows_core::Interface>::IID
    }
}
pub trait IBDA_TransportStreamSelector_Impl: Sized {
    fn SetTSID(&self, ustsid: u16) -> windows_core::Result<()>;
    fn GetTSInformation(&self, pultsinformationbufferlen: *mut u32, pbtsinformationbuffer: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_TransportStreamSelector {}
impl IBDA_TransportStreamSelector_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_TransportStreamSelector_Vtbl
    where
        Identity: IBDA_TransportStreamSelector_Impl,
    {
        unsafe extern "system" fn SetTSID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ustsid: u16) -> windows_core::HRESULT
        where
            Identity: IBDA_TransportStreamSelector_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_TransportStreamSelector_Impl::SetTSID(this, core::mem::transmute_copy(&ustsid)).into()
        }
        unsafe extern "system" fn GetTSInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pultsinformationbufferlen: *mut u32, pbtsinformationbuffer: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_TransportStreamSelector_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_TransportStreamSelector_Impl::GetTSInformation(this, core::mem::transmute_copy(&pultsinformationbufferlen), core::mem::transmute_copy(&pbtsinformationbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetTSID: SetTSID::<Identity, OFFSET>,
            GetTSInformation: GetTSInformation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_TransportStreamSelector as windows_core::Interface>::IID
    }
}
pub trait IBDA_UserActivityService_Impl: Sized {
    fn SetCurrentTunerUseReason(&self, dwusereason: u32) -> windows_core::Result<()>;
    fn GetUserActivityInterval(&self) -> windows_core::Result<u32>;
    fn UserActivityDetected(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_UserActivityService {}
impl IBDA_UserActivityService_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_UserActivityService_Vtbl
    where
        Identity: IBDA_UserActivityService_Impl,
    {
        unsafe extern "system" fn SetCurrentTunerUseReason<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwusereason: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_UserActivityService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_UserActivityService_Impl::SetCurrentTunerUseReason(this, core::mem::transmute_copy(&dwusereason)).into()
        }
        unsafe extern "system" fn GetUserActivityInterval<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwactivityinterval: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_UserActivityService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_UserActivityService_Impl::GetUserActivityInterval(this) {
                Ok(ok__) => {
                    pdwactivityinterval.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UserActivityDetected<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_UserActivityService_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_UserActivityService_Impl::UserActivityDetected(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetCurrentTunerUseReason: SetCurrentTunerUseReason::<Identity, OFFSET>,
            GetUserActivityInterval: GetUserActivityInterval::<Identity, OFFSET>,
            UserActivityDetected: UserActivityDetected::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_UserActivityService as windows_core::Interface>::IID
    }
}
pub trait IBDA_VoidTransform_Impl: Sized {
    fn Start(&self) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_VoidTransform {}
impl IBDA_VoidTransform_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_VoidTransform_Vtbl
    where
        Identity: IBDA_VoidTransform_Impl,
    {
        unsafe extern "system" fn Start<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBDA_VoidTransform_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_VoidTransform_Impl::Start(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: IBDA_VoidTransform_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_VoidTransform_Impl::Stop(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Start: Start::<Identity, OFFSET>, Stop: Stop::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_VoidTransform as windows_core::Interface>::IID
    }
}
pub trait IBDA_WMDRMSession_Impl: Sized {
    fn GetStatus(&self, maxcapturetoken: *mut u32, maxstreamingpid: *mut u32, maxlicense: *mut u32, minsecuritylevel: *mut u32, revinfosequencenumber: *mut u32, revinfoissuedtime: *mut u64, revinfottl: *mut u32, revlistversion: *mut u32, ulstate: *mut u32) -> windows_core::Result<()>;
    fn SetRevInfo(&self, ulrevinfolen: u32, pbrevinfo: *const u8) -> windows_core::Result<()>;
    fn SetCrl(&self, ulcrllen: u32, pbcrllen: *const u8) -> windows_core::Result<()>;
    fn TransactMessage(&self, ulcbrequest: u32, pbrequest: *const u8, pulcbresponse: *mut u32, pbresponse: *mut u8) -> windows_core::Result<()>;
    fn GetLicense(&self, uuidkey: *const windows_core::GUID, pulpackagelen: *mut u32, pbpackage: *mut u8) -> windows_core::Result<()>;
    fn ReissueLicense(&self, uuidkey: *const windows_core::GUID) -> windows_core::Result<()>;
    fn RenewLicense(&self, ulinxmrlicenselen: u32, pbinxmrlicense: *const u8, ulentitlementtokenlen: u32, pbentitlementtoken: *const u8, puldescramblestatus: *mut u32, puloutxmrlicenselen: *mut u32, pboutxmrlicense: *mut u8) -> windows_core::Result<()>;
    fn GetKeyInfo(&self, pulkeyinfolen: *mut u32, pbkeyinfo: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_WMDRMSession {}
impl IBDA_WMDRMSession_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_WMDRMSession_Vtbl
    where
        Identity: IBDA_WMDRMSession_Impl,
    {
        unsafe extern "system" fn GetStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, maxcapturetoken: *mut u32, maxstreamingpid: *mut u32, maxlicense: *mut u32, minsecuritylevel: *mut u32, revinfosequencenumber: *mut u32, revinfoissuedtime: *mut u64, revinfottl: *mut u32, revlistversion: *mut u32, ulstate: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::GetStatus(this, core::mem::transmute_copy(&maxcapturetoken), core::mem::transmute_copy(&maxstreamingpid), core::mem::transmute_copy(&maxlicense), core::mem::transmute_copy(&minsecuritylevel), core::mem::transmute_copy(&revinfosequencenumber), core::mem::transmute_copy(&revinfoissuedtime), core::mem::transmute_copy(&revinfottl), core::mem::transmute_copy(&revlistversion), core::mem::transmute_copy(&ulstate)).into()
        }
        unsafe extern "system" fn SetRevInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulrevinfolen: u32, pbrevinfo: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::SetRevInfo(this, core::mem::transmute_copy(&ulrevinfolen), core::mem::transmute_copy(&pbrevinfo)).into()
        }
        unsafe extern "system" fn SetCrl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcrllen: u32, pbcrllen: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::SetCrl(this, core::mem::transmute_copy(&ulcrllen), core::mem::transmute_copy(&pbcrllen)).into()
        }
        unsafe extern "system" fn TransactMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcbrequest: u32, pbrequest: *const u8, pulcbresponse: *mut u32, pbresponse: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::TransactMessage(this, core::mem::transmute_copy(&ulcbrequest), core::mem::transmute_copy(&pbrequest), core::mem::transmute_copy(&pulcbresponse), core::mem::transmute_copy(&pbresponse)).into()
        }
        unsafe extern "system" fn GetLicense<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uuidkey: *const windows_core::GUID, pulpackagelen: *mut u32, pbpackage: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::GetLicense(this, core::mem::transmute_copy(&uuidkey), core::mem::transmute_copy(&pulpackagelen), core::mem::transmute_copy(&pbpackage)).into()
        }
        unsafe extern "system" fn ReissueLicense<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uuidkey: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::ReissueLicense(this, core::mem::transmute_copy(&uuidkey)).into()
        }
        unsafe extern "system" fn RenewLicense<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulinxmrlicenselen: u32, pbinxmrlicense: *const u8, ulentitlementtokenlen: u32, pbentitlementtoken: *const u8, puldescramblestatus: *mut u32, puloutxmrlicenselen: *mut u32, pboutxmrlicense: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::RenewLicense(this, core::mem::transmute_copy(&ulinxmrlicenselen), core::mem::transmute_copy(&pbinxmrlicense), core::mem::transmute_copy(&ulentitlementtokenlen), core::mem::transmute_copy(&pbentitlementtoken), core::mem::transmute_copy(&puldescramblestatus), core::mem::transmute_copy(&puloutxmrlicenselen), core::mem::transmute_copy(&pboutxmrlicense)).into()
        }
        unsafe extern "system" fn GetKeyInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulkeyinfolen: *mut u32, pbkeyinfo: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMSession_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMSession_Impl::GetKeyInfo(this, core::mem::transmute_copy(&pulkeyinfolen), core::mem::transmute_copy(&pbkeyinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetStatus: GetStatus::<Identity, OFFSET>,
            SetRevInfo: SetRevInfo::<Identity, OFFSET>,
            SetCrl: SetCrl::<Identity, OFFSET>,
            TransactMessage: TransactMessage::<Identity, OFFSET>,
            GetLicense: GetLicense::<Identity, OFFSET>,
            ReissueLicense: ReissueLicense::<Identity, OFFSET>,
            RenewLicense: RenewLicense::<Identity, OFFSET>,
            GetKeyInfo: GetKeyInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_WMDRMSession as windows_core::Interface>::IID
    }
}
pub trait IBDA_WMDRMTuner_Impl: Sized {
    fn PurchaseEntitlement(&self, uldialogrequest: u32, bstrlanguage: &windows_core::BSTR, ulpurchasetokenlen: u32, pbpurchasetoken: *const u8, puldescramblestatus: *mut u32, pulcapturetokenlen: *mut u32, pbcapturetoken: *mut u8) -> windows_core::Result<()>;
    fn CancelCaptureToken(&self, ulcapturetokenlen: u32, pbcapturetoken: *const u8) -> windows_core::Result<()>;
    fn SetPidProtection(&self, ulpid: u32, uuidkey: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetPidProtection(&self, pulpid: u32) -> windows_core::Result<windows_core::GUID>;
    fn SetSyncValue(&self, ulsyncvalue: u32) -> windows_core::Result<()>;
    fn GetStartCodeProfile(&self, pulstartcodeprofilelen: *mut u32, pbstartcodeprofile: *mut u8) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBDA_WMDRMTuner {}
impl IBDA_WMDRMTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBDA_WMDRMTuner_Vtbl
    where
        Identity: IBDA_WMDRMTuner_Impl,
    {
        unsafe extern "system" fn PurchaseEntitlement<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uldialogrequest: u32, bstrlanguage: core::mem::MaybeUninit<windows_core::BSTR>, ulpurchasetokenlen: u32, pbpurchasetoken: *const u8, puldescramblestatus: *mut u32, pulcapturetokenlen: *mut u32, pbcapturetoken: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMTuner_Impl::PurchaseEntitlement(this, core::mem::transmute_copy(&uldialogrequest), core::mem::transmute(&bstrlanguage), core::mem::transmute_copy(&ulpurchasetokenlen), core::mem::transmute_copy(&pbpurchasetoken), core::mem::transmute_copy(&puldescramblestatus), core::mem::transmute_copy(&pulcapturetokenlen), core::mem::transmute_copy(&pbcapturetoken)).into()
        }
        unsafe extern "system" fn CancelCaptureToken<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcapturetokenlen: u32, pbcapturetoken: *const u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMTuner_Impl::CancelCaptureToken(this, core::mem::transmute_copy(&ulcapturetokenlen), core::mem::transmute_copy(&pbcapturetoken)).into()
        }
        unsafe extern "system" fn SetPidProtection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpid: u32, uuidkey: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMTuner_Impl::SetPidProtection(this, core::mem::transmute_copy(&ulpid), core::mem::transmute_copy(&uuidkey)).into()
        }
        unsafe extern "system" fn GetPidProtection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulpid: u32, uuidkey: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBDA_WMDRMTuner_Impl::GetPidProtection(this, core::mem::transmute_copy(&pulpid)) {
                Ok(ok__) => {
                    uuidkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSyncValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulsyncvalue: u32) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMTuner_Impl::SetSyncValue(this, core::mem::transmute_copy(&ulsyncvalue)).into()
        }
        unsafe extern "system" fn GetStartCodeProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulstartcodeprofilelen: *mut u32, pbstartcodeprofile: *mut u8) -> windows_core::HRESULT
        where
            Identity: IBDA_WMDRMTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBDA_WMDRMTuner_Impl::GetStartCodeProfile(this, core::mem::transmute_copy(&pulstartcodeprofilelen), core::mem::transmute_copy(&pbstartcodeprofile)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PurchaseEntitlement: PurchaseEntitlement::<Identity, OFFSET>,
            CancelCaptureToken: CancelCaptureToken::<Identity, OFFSET>,
            SetPidProtection: SetPidProtection::<Identity, OFFSET>,
            GetPidProtection: GetPidProtection::<Identity, OFFSET>,
            SetSyncValue: SetSyncValue::<Identity, OFFSET>,
            GetStartCodeProfile: GetStartCodeProfile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBDA_WMDRMTuner as windows_core::Interface>::IID
    }
}
pub trait IBPCSatelliteTuner_Impl: Sized + IAMTuner_Impl {
    fn get_DefaultSubChannelTypes(&self, pldefaultvideotype: *mut i32, pldefaultaudiotype: *mut i32) -> windows_core::Result<()>;
    fn put_DefaultSubChannelTypes(&self, ldefaultvideotype: i32, ldefaultaudiotype: i32) -> windows_core::Result<()>;
    fn IsTapingPermitted(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBPCSatelliteTuner {}
impl IBPCSatelliteTuner_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBPCSatelliteTuner_Vtbl
    where
        Identity: IBPCSatelliteTuner_Impl,
    {
        unsafe extern "system" fn get_DefaultSubChannelTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pldefaultvideotype: *mut i32, pldefaultaudiotype: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBPCSatelliteTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBPCSatelliteTuner_Impl::get_DefaultSubChannelTypes(this, core::mem::transmute_copy(&pldefaultvideotype), core::mem::transmute_copy(&pldefaultaudiotype)).into()
        }
        unsafe extern "system" fn put_DefaultSubChannelTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ldefaultvideotype: i32, ldefaultaudiotype: i32) -> windows_core::HRESULT
        where
            Identity: IBPCSatelliteTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBPCSatelliteTuner_Impl::put_DefaultSubChannelTypes(this, core::mem::transmute_copy(&ldefaultvideotype), core::mem::transmute_copy(&ldefaultaudiotype)).into()
        }
        unsafe extern "system" fn IsTapingPermitted<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBPCSatelliteTuner_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBPCSatelliteTuner_Impl::IsTapingPermitted(this).into()
        }
        Self {
            base__: IAMTuner_Vtbl::new::<Identity, OFFSET>(),
            get_DefaultSubChannelTypes: get_DefaultSubChannelTypes::<Identity, OFFSET>,
            put_DefaultSubChannelTypes: put_DefaultSubChannelTypes::<Identity, OFFSET>,
            IsTapingPermitted: IsTapingPermitted::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBPCSatelliteTuner as windows_core::Interface>::IID || iid == &<IAMTuner as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBaseFilter_Impl: Sized + IMediaFilter_Impl {
    fn EnumPins(&self) -> windows_core::Result<IEnumPins>;
    fn FindPin(&self, id: &windows_core::PCWSTR) -> windows_core::Result<IPin>;
    fn QueryFilterInfo(&self, pinfo: *mut FILTER_INFO) -> windows_core::Result<()>;
    fn JoinFilterGraph(&self, pgraph: Option<&IFilterGraph>, pname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn QueryVendorInfo(&self) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IBaseFilter {}
#[cfg(feature = "Win32_System_Com")]
impl IBaseFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBaseFilter_Vtbl
    where
        Identity: IBaseFilter_Impl,
    {
        unsafe extern "system" fn EnumPins<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: IBaseFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseFilter_Impl::EnumPins(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: windows_core::PCWSTR, pppin: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBaseFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseFilter_Impl::FindPin(this, core::mem::transmute(&id)) {
                Ok(ok__) => {
                    pppin.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryFilterInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut FILTER_INFO) -> windows_core::HRESULT
        where
            Identity: IBaseFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBaseFilter_Impl::QueryFilterInfo(this, core::mem::transmute_copy(&pinfo)).into()
        }
        unsafe extern "system" fn JoinFilterGraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pgraph: *mut core::ffi::c_void, pname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IBaseFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBaseFilter_Impl::JoinFilterGraph(this, windows_core::from_raw_borrowed(&pgraph), core::mem::transmute(&pname)).into()
        }
        unsafe extern "system" fn QueryVendorInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvendorinfo: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IBaseFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseFilter_Impl::QueryVendorInfo(this) {
                Ok(ok__) => {
                    pvendorinfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaFilter_Vtbl::new::<Identity, OFFSET>(),
            EnumPins: EnumPins::<Identity, OFFSET>,
            FindPin: FindPin::<Identity, OFFSET>,
            QueryFilterInfo: QueryFilterInfo::<Identity, OFFSET>,
            JoinFilterGraph: JoinFilterGraph::<Identity, OFFSET>,
            QueryVendorInfo: QueryVendorInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBaseFilter as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IMediaFilter as windows_core::Interface>::IID
    }
}
pub trait IBaseVideoMixer_Impl: Sized {
    fn SetLeadPin(&self, ipin: i32) -> windows_core::Result<()>;
    fn GetLeadPin(&self) -> windows_core::Result<i32>;
    fn GetInputPinCount(&self) -> windows_core::Result<i32>;
    fn IsUsingClock(&self) -> windows_core::Result<i32>;
    fn SetUsingClock(&self, bvalue: i32) -> windows_core::Result<()>;
    fn GetClockPeriod(&self) -> windows_core::Result<i32>;
    fn SetClockPeriod(&self, bvalue: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBaseVideoMixer {}
impl IBaseVideoMixer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBaseVideoMixer_Vtbl
    where
        Identity: IBaseVideoMixer_Impl,
    {
        unsafe extern "system" fn SetLeadPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ipin: i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBaseVideoMixer_Impl::SetLeadPin(this, core::mem::transmute_copy(&ipin)).into()
        }
        unsafe extern "system" fn GetLeadPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pipin: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseVideoMixer_Impl::GetLeadPin(this) {
                Ok(ok__) => {
                    pipin.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInputPinCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pipincount: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseVideoMixer_Impl::GetInputPinCount(this) {
                Ok(ok__) => {
                    pipincount.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsUsingClock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseVideoMixer_Impl::IsUsingClock(this) {
                Ok(ok__) => {
                    pbvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetUsingClock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bvalue: i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBaseVideoMixer_Impl::SetUsingClock(this, core::mem::transmute_copy(&bvalue)).into()
        }
        unsafe extern "system" fn GetClockPeriod<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbvalue: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBaseVideoMixer_Impl::GetClockPeriod(this) {
                Ok(ok__) => {
                    pbvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetClockPeriod<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bvalue: i32) -> windows_core::HRESULT
        where
            Identity: IBaseVideoMixer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBaseVideoMixer_Impl::SetClockPeriod(this, core::mem::transmute_copy(&bvalue)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetLeadPin: SetLeadPin::<Identity, OFFSET>,
            GetLeadPin: GetLeadPin::<Identity, OFFSET>,
            GetInputPinCount: GetInputPinCount::<Identity, OFFSET>,
            IsUsingClock: IsUsingClock::<Identity, OFFSET>,
            SetUsingClock: SetUsingClock::<Identity, OFFSET>,
            GetClockPeriod: GetClockPeriod::<Identity, OFFSET>,
            SetClockPeriod: SetClockPeriod::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBaseVideoMixer as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBasicAudio_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SetVolume(&self, lvolume: i32) -> windows_core::Result<()>;
    fn Volume(&self) -> windows_core::Result<i32>;
    fn SetBalance(&self, lbalance: i32) -> windows_core::Result<()>;
    fn Balance(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IBasicAudio {}
#[cfg(feature = "Win32_System_Com")]
impl IBasicAudio_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBasicAudio_Vtbl
    where
        Identity: IBasicAudio_Impl,
    {
        unsafe extern "system" fn SetVolume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lvolume: i32) -> windows_core::HRESULT
        where
            Identity: IBasicAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicAudio_Impl::SetVolume(this, core::mem::transmute_copy(&lvolume)).into()
        }
        unsafe extern "system" fn Volume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plvolume: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicAudio_Impl::Volume(this) {
                Ok(ok__) => {
                    plvolume.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, lbalance: i32) -> windows_core::HRESULT
        where
            Identity: IBasicAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicAudio_Impl::SetBalance(this, core::mem::transmute_copy(&lbalance)).into()
        }
        unsafe extern "system" fn Balance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plbalance: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicAudio_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicAudio_Impl::Balance(this) {
                Ok(ok__) => {
                    plbalance.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_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 == &<IBasicAudio as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBasicVideo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn AvgTimePerFrame(&self) -> windows_core::Result<f64>;
    fn BitRate(&self) -> windows_core::Result<i32>;
    fn BitErrorRate(&self) -> windows_core::Result<i32>;
    fn VideoWidth(&self) -> windows_core::Result<i32>;
    fn VideoHeight(&self) -> windows_core::Result<i32>;
    fn SetSourceLeft(&self, sourceleft: i32) -> windows_core::Result<()>;
    fn SourceLeft(&self) -> windows_core::Result<i32>;
    fn SetSourceWidth(&self, sourcewidth: i32) -> windows_core::Result<()>;
    fn SourceWidth(&self) -> windows_core::Result<i32>;
    fn SetSourceTop(&self, sourcetop: i32) -> windows_core::Result<()>;
    fn SourceTop(&self) -> windows_core::Result<i32>;
    fn SetSourceHeight(&self, sourceheight: i32) -> windows_core::Result<()>;
    fn SourceHeight(&self) -> windows_core::Result<i32>;
    fn SetDestinationLeft(&self, destinationleft: i32) -> windows_core::Result<()>;
    fn DestinationLeft(&self) -> windows_core::Result<i32>;
    fn SetDestinationWidth(&self, destinationwidth: i32) -> windows_core::Result<()>;
    fn DestinationWidth(&self) -> windows_core::Result<i32>;
    fn SetDestinationTop(&self, destinationtop: i32) -> windows_core::Result<()>;
    fn DestinationTop(&self) -> windows_core::Result<i32>;
    fn SetDestinationHeight(&self, destinationheight: i32) -> windows_core::Result<()>;
    fn DestinationHeight(&self) -> windows_core::Result<i32>;
    fn SetSourcePosition(&self, left: i32, top: i32, width: i32, height: i32) -> windows_core::Result<()>;
    fn GetSourcePosition(&self, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn SetDefaultSourcePosition(&self) -> windows_core::Result<()>;
    fn SetDestinationPosition(&self, left: i32, top: i32, width: i32, height: i32) -> windows_core::Result<()>;
    fn GetDestinationPosition(&self, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn SetDefaultDestinationPosition(&self) -> windows_core::Result<()>;
    fn GetVideoSize(&self, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn GetVideoPaletteEntries(&self, startindex: i32, entries: i32, pretrieved: *mut i32, ppalette: *mut i32) -> windows_core::Result<()>;
    fn GetCurrentImage(&self, pbuffersize: *mut i32, pdibimage: *mut i32) -> windows_core::Result<()>;
    fn IsUsingDefaultSource(&self) -> windows_core::Result<()>;
    fn IsUsingDefaultDestination(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IBasicVideo {}
#[cfg(feature = "Win32_System_Com")]
impl IBasicVideo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBasicVideo_Vtbl
    where
        Identity: IBasicVideo_Impl,
    {
        unsafe extern "system" fn AvgTimePerFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pavgtimeperframe: *mut f64) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::AvgTimePerFrame(this) {
                Ok(ok__) => {
                    pavgtimeperframe.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BitRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbitrate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::BitRate(this) {
                Ok(ok__) => {
                    pbitrate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BitErrorRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbiterrorrate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::BitErrorRate(this) {
                Ok(ok__) => {
                    pbiterrorrate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvideowidth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::VideoWidth(this) {
                Ok(ok__) => {
                    pvideowidth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VideoHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvideoheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::VideoHeight(this) {
                Ok(ok__) => {
                    pvideoheight.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceLeft<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourceleft: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetSourceLeft(this, core::mem::transmute_copy(&sourceleft)).into()
        }
        unsafe extern "system" fn SourceLeft<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourceleft: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::SourceLeft(this) {
                Ok(ok__) => {
                    psourceleft.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourcewidth: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetSourceWidth(this, core::mem::transmute_copy(&sourcewidth)).into()
        }
        unsafe extern "system" fn SourceWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourcewidth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::SourceWidth(this) {
                Ok(ok__) => {
                    psourcewidth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceTop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourcetop: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetSourceTop(this, core::mem::transmute_copy(&sourcetop)).into()
        }
        unsafe extern "system" fn SourceTop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourcetop: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::SourceTop(this) {
                Ok(ok__) => {
                    psourcetop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourceheight: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetSourceHeight(this, core::mem::transmute_copy(&sourceheight)).into()
        }
        unsafe extern "system" fn SourceHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourceheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::SourceHeight(this) {
                Ok(ok__) => {
                    psourceheight.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationLeft<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, destinationleft: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDestinationLeft(this, core::mem::transmute_copy(&destinationleft)).into()
        }
        unsafe extern "system" fn DestinationLeft<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdestinationleft: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::DestinationLeft(this) {
                Ok(ok__) => {
                    pdestinationleft.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, destinationwidth: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDestinationWidth(this, core::mem::transmute_copy(&destinationwidth)).into()
        }
        unsafe extern "system" fn DestinationWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdestinationwidth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::DestinationWidth(this) {
                Ok(ok__) => {
                    pdestinationwidth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationTop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, destinationtop: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDestinationTop(this, core::mem::transmute_copy(&destinationtop)).into()
        }
        unsafe extern "system" fn DestinationTop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdestinationtop: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::DestinationTop(this) {
                Ok(ok__) => {
                    pdestinationtop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDestinationHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, destinationheight: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDestinationHeight(this, core::mem::transmute_copy(&destinationheight)).into()
        }
        unsafe extern "system" fn DestinationHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdestinationheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IBasicVideo_Impl::DestinationHeight(this) {
                Ok(ok__) => {
                    pdestinationheight.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourcePosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, left: i32, top: i32, width: i32, height: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetSourcePosition(this, core::mem::transmute_copy(&left), core::mem::transmute_copy(&top), core::mem::transmute_copy(&width), core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn GetSourcePosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::GetSourcePosition(this, core::mem::transmute_copy(&pleft), core::mem::transmute_copy(&ptop), core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn SetDefaultSourcePosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDefaultSourcePosition(this).into()
        }
        unsafe extern "system" fn SetDestinationPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, left: i32, top: i32, width: i32, height: i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDestinationPosition(this, core::mem::transmute_copy(&left), core::mem::transmute_copy(&top), core::mem::transmute_copy(&width), core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn GetDestinationPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::GetDestinationPosition(this, core::mem::transmute_copy(&pleft), core::mem::transmute_copy(&ptop), core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn SetDefaultDestinationPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::SetDefaultDestinationPosition(this).into()
        }
        unsafe extern "system" fn GetVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::GetVideoSize(this, core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetVideoPaletteEntries<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, startindex: i32, entries: i32, pretrieved: *mut i32, ppalette: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::GetVideoPaletteEntries(this, core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&pretrieved), core::mem::transmute_copy(&ppalette)).into()
        }
        unsafe extern "system" fn GetCurrentImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbuffersize: *mut i32, pdibimage: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::GetCurrentImage(this, core::mem::transmute_copy(&pbuffersize), core::mem::transmute_copy(&pdibimage)).into()
        }
        unsafe extern "system" fn IsUsingDefaultSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::IsUsingDefaultSource(this).into()
        }
        unsafe extern "system" fn IsUsingDefaultDestination<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IBasicVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo_Impl::IsUsingDefaultDestination(this).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            AvgTimePerFrame: AvgTimePerFrame::<Identity, OFFSET>,
            BitRate: BitRate::<Identity, OFFSET>,
            BitErrorRate: BitErrorRate::<Identity, OFFSET>,
            VideoWidth: VideoWidth::<Identity, OFFSET>,
            VideoHeight: VideoHeight::<Identity, OFFSET>,
            SetSourceLeft: SetSourceLeft::<Identity, OFFSET>,
            SourceLeft: SourceLeft::<Identity, OFFSET>,
            SetSourceWidth: SetSourceWidth::<Identity, OFFSET>,
            SourceWidth: SourceWidth::<Identity, OFFSET>,
            SetSourceTop: SetSourceTop::<Identity, OFFSET>,
            SourceTop: SourceTop::<Identity, OFFSET>,
            SetSourceHeight: SetSourceHeight::<Identity, OFFSET>,
            SourceHeight: SourceHeight::<Identity, OFFSET>,
            SetDestinationLeft: SetDestinationLeft::<Identity, OFFSET>,
            DestinationLeft: DestinationLeft::<Identity, OFFSET>,
            SetDestinationWidth: SetDestinationWidth::<Identity, OFFSET>,
            DestinationWidth: DestinationWidth::<Identity, OFFSET>,
            SetDestinationTop: SetDestinationTop::<Identity, OFFSET>,
            DestinationTop: DestinationTop::<Identity, OFFSET>,
            SetDestinationHeight: SetDestinationHeight::<Identity, OFFSET>,
            DestinationHeight: DestinationHeight::<Identity, OFFSET>,
            SetSourcePosition: SetSourcePosition::<Identity, OFFSET>,
            GetSourcePosition: GetSourcePosition::<Identity, OFFSET>,
            SetDefaultSourcePosition: SetDefaultSourcePosition::<Identity, OFFSET>,
            SetDestinationPosition: SetDestinationPosition::<Identity, OFFSET>,
            GetDestinationPosition: GetDestinationPosition::<Identity, OFFSET>,
            SetDefaultDestinationPosition: SetDefaultDestinationPosition::<Identity, OFFSET>,
            GetVideoSize: GetVideoSize::<Identity, OFFSET>,
            GetVideoPaletteEntries: GetVideoPaletteEntries::<Identity, OFFSET>,
            GetCurrentImage: GetCurrentImage::<Identity, OFFSET>,
            IsUsingDefaultSource: IsUsingDefaultSource::<Identity, OFFSET>,
            IsUsingDefaultDestination: IsUsingDefaultDestination::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBasicVideo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IBasicVideo2_Impl: Sized + IBasicVideo_Impl {
    fn GetPreferredAspectRatio(&self, plaspectx: *mut i32, plaspecty: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IBasicVideo2 {}
#[cfg(feature = "Win32_System_Com")]
impl IBasicVideo2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBasicVideo2_Vtbl
    where
        Identity: IBasicVideo2_Impl,
    {
        unsafe extern "system" fn GetPreferredAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plaspectx: *mut i32, plaspecty: *mut i32) -> windows_core::HRESULT
        where
            Identity: IBasicVideo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBasicVideo2_Impl::GetPreferredAspectRatio(this, core::mem::transmute_copy(&plaspectx), core::mem::transmute_copy(&plaspecty)).into()
        }
        Self { base__: IBasicVideo_Vtbl::new::<Identity, OFFSET>(), GetPreferredAspectRatio: GetPreferredAspectRatio::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBasicVideo2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IBasicVideo as windows_core::Interface>::IID
    }
}
pub trait IBroadcastEvent_Impl: Sized {
    fn Fire(&self, eventid: &windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBroadcastEvent {}
impl IBroadcastEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBroadcastEvent_Vtbl
    where
        Identity: IBroadcastEvent_Impl,
    {
        unsafe extern "system" fn Fire<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventid: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IBroadcastEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBroadcastEvent_Impl::Fire(this, core::mem::transmute(&eventid)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Fire: Fire::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBroadcastEvent as windows_core::Interface>::IID
    }
}
pub trait IBroadcastEventEx_Impl: Sized + IBroadcastEvent_Impl {
    fn FireEx(&self, eventid: &windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBroadcastEventEx {}
impl IBroadcastEventEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBroadcastEventEx_Vtbl
    where
        Identity: IBroadcastEventEx_Impl,
    {
        unsafe extern "system" fn FireEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventid: windows_core::GUID, param1: u32, param2: u32, param3: u32, param4: u32) -> windows_core::HRESULT
        where
            Identity: IBroadcastEventEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBroadcastEventEx_Impl::FireEx(this, core::mem::transmute(&eventid), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2), core::mem::transmute_copy(&param3), core::mem::transmute_copy(&param4)).into()
        }
        Self { base__: IBroadcastEvent_Vtbl::new::<Identity, OFFSET>(), FireEx: FireEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBroadcastEventEx as windows_core::Interface>::IID || iid == &<IBroadcastEvent as windows_core::Interface>::IID
    }
}
pub trait IBufferingTime_Impl: Sized {
    fn GetBufferingTime(&self, pdwmilliseconds: *mut u32) -> windows_core::Result<()>;
    fn SetBufferingTime(&self, dwmilliseconds: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IBufferingTime {}
impl IBufferingTime_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IBufferingTime_Vtbl
    where
        Identity: IBufferingTime_Impl,
    {
        unsafe extern "system" fn GetBufferingTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmilliseconds: *mut u32) -> windows_core::HRESULT
        where
            Identity: IBufferingTime_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBufferingTime_Impl::GetBufferingTime(this, core::mem::transmute_copy(&pdwmilliseconds)).into()
        }
        unsafe extern "system" fn SetBufferingTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmilliseconds: u32) -> windows_core::HRESULT
        where
            Identity: IBufferingTime_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IBufferingTime_Impl::SetBufferingTime(this, core::mem::transmute_copy(&dwmilliseconds)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetBufferingTime: GetBufferingTime::<Identity, OFFSET>,
            SetBufferingTime: SetBufferingTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBufferingTime as windows_core::Interface>::IID
    }
}
pub trait ICCSubStreamFiltering_Impl: Sized {
    fn SubstreamTypes(&self) -> windows_core::Result<i32>;
    fn SetSubstreamTypes(&self, types: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICCSubStreamFiltering {}
impl ICCSubStreamFiltering_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICCSubStreamFiltering_Vtbl
    where
        Identity: ICCSubStreamFiltering_Impl,
    {
        unsafe extern "system" fn SubstreamTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptypes: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICCSubStreamFiltering_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICCSubStreamFiltering_Impl::SubstreamTypes(this) {
                Ok(ok__) => {
                    ptypes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSubstreamTypes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, types: i32) -> windows_core::HRESULT
        where
            Identity: ICCSubStreamFiltering_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICCSubStreamFiltering_Impl::SetSubstreamTypes(this, core::mem::transmute_copy(&types)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SubstreamTypes: SubstreamTypes::<Identity, OFFSET>,
            SetSubstreamTypes: SetSubstreamTypes::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICCSubStreamFiltering as windows_core::Interface>::IID
    }
}
pub trait ICameraControl_Impl: Sized {
    fn get_Exposure(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Exposure(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Exposure(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Focus(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Focus(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Focus(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Iris(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Iris(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Iris(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Zoom(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Zoom(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Zoom(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_FocalLengths(&self, plocularfocallength: *mut i32, plobjectivefocallengthmin: *mut i32, plobjectivefocallengthmax: *mut i32) -> windows_core::Result<()>;
    fn get_Pan(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Pan(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Pan(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Tilt(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Tilt(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Tilt(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_PanTilt(&self, ppanvalue: *mut i32, ptiltvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_PanTilt(&self, panvalue: i32, tiltvalue: i32, flags: i32) -> windows_core::Result<()>;
    fn get_Roll(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Roll(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Roll(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_ExposureRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_ExposureRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_ExposureRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_FocusRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_FocusRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_FocusRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_IrisRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_IrisRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_IrisRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_ZoomRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_ZoomRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_ZoomRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_PanRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_PanRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn get_TiltRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_TiltRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_TiltRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_PanTiltRelative(&self, ppanvalue: *mut i32, ptiltvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_PanTiltRelative(&self, panvalue: i32, tiltvalue: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_PanRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_RollRelative(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_RollRelative(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_RollRelative(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_ScanMode(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_ScanMode(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn get_PrivacyMode(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_PrivacyMode(&self, value: i32, flags: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ICameraControl {}
impl ICameraControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICameraControl_Vtbl
    where
        Identity: ICameraControl_Impl,
    {
        unsafe extern "system" fn get_Exposure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Exposure(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Exposure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Exposure(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Exposure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Exposure(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Focus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Focus(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Focus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Focus(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Focus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Focus(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Iris<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Iris(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Iris<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Iris(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Iris<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Iris(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Zoom<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Zoom(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Zoom<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Zoom(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Zoom<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Zoom(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_FocalLengths<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plocularfocallength: *mut i32, plobjectivefocallengthmin: *mut i32, plobjectivefocallengthmax: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_FocalLengths(this, core::mem::transmute_copy(&plocularfocallength), core::mem::transmute_copy(&plobjectivefocallengthmin), core::mem::transmute_copy(&plobjectivefocallengthmax)).into()
        }
        unsafe extern "system" fn get_Pan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Pan(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Pan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Pan(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Pan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Pan(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Tilt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Tilt(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Tilt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Tilt(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Tilt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Tilt(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_PanTilt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppanvalue: *mut i32, ptiltvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_PanTilt(this, core::mem::transmute_copy(&ppanvalue), core::mem::transmute_copy(&ptiltvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PanTilt<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, panvalue: i32, tiltvalue: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_PanTilt(this, core::mem::transmute_copy(&panvalue), core::mem::transmute_copy(&tiltvalue), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn get_Roll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_Roll(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Roll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_Roll(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Roll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_Roll(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_ExposureRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_ExposureRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ExposureRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_ExposureRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_ExposureRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_ExposureRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_FocusRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_FocusRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_FocusRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_FocusRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_FocusRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_FocusRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_IrisRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_IrisRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_IrisRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_IrisRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_IrisRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_IrisRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_ZoomRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_ZoomRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ZoomRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_ZoomRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_ZoomRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_ZoomRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_PanRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_PanRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PanRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_PanRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn get_TiltRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_TiltRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_TiltRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_TiltRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_TiltRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_TiltRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_PanTiltRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppanvalue: *mut i32, ptiltvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_PanTiltRelative(this, core::mem::transmute_copy(&ppanvalue), core::mem::transmute_copy(&ptiltvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PanTiltRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, panvalue: i32, tiltvalue: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_PanTiltRelative(this, core::mem::transmute_copy(&panvalue), core::mem::transmute_copy(&tiltvalue), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_PanRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_PanRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_RollRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_RollRelative(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_RollRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_RollRelative(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_RollRelative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::getRange_RollRelative(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_ScanMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_ScanMode(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ScanMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_ScanMode(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn get_PrivacyMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::get_PrivacyMode(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PrivacyMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: ICameraControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICameraControl_Impl::put_PrivacyMode(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_Exposure: get_Exposure::<Identity, OFFSET>,
            put_Exposure: put_Exposure::<Identity, OFFSET>,
            getRange_Exposure: getRange_Exposure::<Identity, OFFSET>,
            get_Focus: get_Focus::<Identity, OFFSET>,
            put_Focus: put_Focus::<Identity, OFFSET>,
            getRange_Focus: getRange_Focus::<Identity, OFFSET>,
            get_Iris: get_Iris::<Identity, OFFSET>,
            put_Iris: put_Iris::<Identity, OFFSET>,
            getRange_Iris: getRange_Iris::<Identity, OFFSET>,
            get_Zoom: get_Zoom::<Identity, OFFSET>,
            put_Zoom: put_Zoom::<Identity, OFFSET>,
            getRange_Zoom: getRange_Zoom::<Identity, OFFSET>,
            get_FocalLengths: get_FocalLengths::<Identity, OFFSET>,
            get_Pan: get_Pan::<Identity, OFFSET>,
            put_Pan: put_Pan::<Identity, OFFSET>,
            getRange_Pan: getRange_Pan::<Identity, OFFSET>,
            get_Tilt: get_Tilt::<Identity, OFFSET>,
            put_Tilt: put_Tilt::<Identity, OFFSET>,
            getRange_Tilt: getRange_Tilt::<Identity, OFFSET>,
            get_PanTilt: get_PanTilt::<Identity, OFFSET>,
            put_PanTilt: put_PanTilt::<Identity, OFFSET>,
            get_Roll: get_Roll::<Identity, OFFSET>,
            put_Roll: put_Roll::<Identity, OFFSET>,
            getRange_Roll: getRange_Roll::<Identity, OFFSET>,
            get_ExposureRelative: get_ExposureRelative::<Identity, OFFSET>,
            put_ExposureRelative: put_ExposureRelative::<Identity, OFFSET>,
            getRange_ExposureRelative: getRange_ExposureRelative::<Identity, OFFSET>,
            get_FocusRelative: get_FocusRelative::<Identity, OFFSET>,
            put_FocusRelative: put_FocusRelative::<Identity, OFFSET>,
            getRange_FocusRelative: getRange_FocusRelative::<Identity, OFFSET>,
            get_IrisRelative: get_IrisRelative::<Identity, OFFSET>,
            put_IrisRelative: put_IrisRelative::<Identity, OFFSET>,
            getRange_IrisRelative: getRange_IrisRelative::<Identity, OFFSET>,
            get_ZoomRelative: get_ZoomRelative::<Identity, OFFSET>,
            put_ZoomRelative: put_ZoomRelative::<Identity, OFFSET>,
            getRange_ZoomRelative: getRange_ZoomRelative::<Identity, OFFSET>,
            get_PanRelative: get_PanRelative::<Identity, OFFSET>,
            put_PanRelative: put_PanRelative::<Identity, OFFSET>,
            get_TiltRelative: get_TiltRelative::<Identity, OFFSET>,
            put_TiltRelative: put_TiltRelative::<Identity, OFFSET>,
            getRange_TiltRelative: getRange_TiltRelative::<Identity, OFFSET>,
            get_PanTiltRelative: get_PanTiltRelative::<Identity, OFFSET>,
            put_PanTiltRelative: put_PanTiltRelative::<Identity, OFFSET>,
            getRange_PanRelative: getRange_PanRelative::<Identity, OFFSET>,
            get_RollRelative: get_RollRelative::<Identity, OFFSET>,
            put_RollRelative: put_RollRelative::<Identity, OFFSET>,
            getRange_RollRelative: getRange_RollRelative::<Identity, OFFSET>,
            get_ScanMode: get_ScanMode::<Identity, OFFSET>,
            put_ScanMode: put_ScanMode::<Identity, OFFSET>,
            get_PrivacyMode: get_PrivacyMode::<Identity, OFFSET>,
            put_PrivacyMode: put_PrivacyMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICameraControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ICaptureGraphBuilder_Impl: Sized {
    fn SetFiltergraph(&self, pfg: Option<&IGraphBuilder>) -> windows_core::Result<()>;
    fn GetFiltergraph(&self) -> windows_core::Result<IGraphBuilder>;
    fn SetOutputFileName(&self, ptype: *const windows_core::GUID, lpstrfile: &windows_core::PCWSTR, ppf: *mut Option<IBaseFilter>, ppsink: *mut Option<IFileSinkFilter>) -> windows_core::Result<()>;
    fn FindInterface(&self, pcategory: *const windows_core::GUID, pf: Option<&IBaseFilter>, riid: *const windows_core::GUID, ppint: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RenderStream(&self, pcategory: *const windows_core::GUID, psource: Option<&windows_core::IUnknown>, pfcompressor: Option<&IBaseFilter>, pfrenderer: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn ControlStream(&self, pcategory: *const windows_core::GUID, pfilter: Option<&IBaseFilter>, pstart: *const i64, pstop: *const i64, wstartcookie: u16, wstopcookie: u16) -> windows_core::Result<()>;
    fn AllocCapFile(&self, lpstr: &windows_core::PCWSTR, dwlsize: u64) -> windows_core::Result<()>;
    fn CopyCaptureFile(&self, lpwstrold: &windows_core::PCWSTR, lpwstrnew: &windows_core::PCWSTR, fallowescabort: i32, pcallback: Option<&IAMCopyCaptureFileProgress>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ICaptureGraphBuilder {}
#[cfg(feature = "Win32_System_Com")]
impl ICaptureGraphBuilder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICaptureGraphBuilder_Vtbl
    where
        Identity: ICaptureGraphBuilder_Impl,
    {
        unsafe extern "system" fn SetFiltergraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfg: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::SetFiltergraph(this, windows_core::from_raw_borrowed(&pfg)).into()
        }
        unsafe extern "system" fn GetFiltergraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptureGraphBuilder_Impl::GetFiltergraph(this) {
                Ok(ok__) => {
                    ppfg.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptype: *const windows_core::GUID, lpstrfile: windows_core::PCWSTR, ppf: *mut *mut core::ffi::c_void, ppsink: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::SetOutputFileName(this, core::mem::transmute_copy(&ptype), core::mem::transmute(&lpstrfile), core::mem::transmute_copy(&ppf), core::mem::transmute_copy(&ppsink)).into()
        }
        unsafe extern "system" fn FindInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *const windows_core::GUID, pf: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::FindInterface(this, core::mem::transmute_copy(&pcategory), windows_core::from_raw_borrowed(&pf), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppint)).into()
        }
        unsafe extern "system" fn RenderStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *const windows_core::GUID, psource: *mut core::ffi::c_void, pfcompressor: *mut core::ffi::c_void, pfrenderer: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::RenderStream(this, core::mem::transmute_copy(&pcategory), windows_core::from_raw_borrowed(&psource), windows_core::from_raw_borrowed(&pfcompressor), windows_core::from_raw_borrowed(&pfrenderer)).into()
        }
        unsafe extern "system" fn ControlStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *const windows_core::GUID, pfilter: *mut core::ffi::c_void, pstart: *const i64, pstop: *const i64, wstartcookie: u16, wstopcookie: u16) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::ControlStream(this, core::mem::transmute_copy(&pcategory), windows_core::from_raw_borrowed(&pfilter), core::mem::transmute_copy(&pstart), core::mem::transmute_copy(&pstop), core::mem::transmute_copy(&wstartcookie), core::mem::transmute_copy(&wstopcookie)).into()
        }
        unsafe extern "system" fn AllocCapFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpstr: windows_core::PCWSTR, dwlsize: u64) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::AllocCapFile(this, core::mem::transmute(&lpstr), core::mem::transmute_copy(&dwlsize)).into()
        }
        unsafe extern "system" fn CopyCaptureFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwstrold: windows_core::PCWSTR, lpwstrnew: windows_core::PCWSTR, fallowescabort: i32, pcallback: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder_Impl::CopyCaptureFile(this, core::mem::transmute(&lpwstrold), core::mem::transmute(&lpwstrnew), core::mem::transmute_copy(&fallowescabort), windows_core::from_raw_borrowed(&pcallback)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFiltergraph: SetFiltergraph::<Identity, OFFSET>,
            GetFiltergraph: GetFiltergraph::<Identity, OFFSET>,
            SetOutputFileName: SetOutputFileName::<Identity, OFFSET>,
            FindInterface: FindInterface::<Identity, OFFSET>,
            RenderStream: RenderStream::<Identity, OFFSET>,
            ControlStream: ControlStream::<Identity, OFFSET>,
            AllocCapFile: AllocCapFile::<Identity, OFFSET>,
            CopyCaptureFile: CopyCaptureFile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICaptureGraphBuilder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ICaptureGraphBuilder2_Impl: Sized {
    fn SetFiltergraph(&self, pfg: Option<&IGraphBuilder>) -> windows_core::Result<()>;
    fn GetFiltergraph(&self) -> windows_core::Result<IGraphBuilder>;
    fn SetOutputFileName(&self, ptype: *const windows_core::GUID, lpstrfile: &windows_core::PCWSTR, ppf: *mut Option<IBaseFilter>, ppsink: *mut Option<IFileSinkFilter>) -> windows_core::Result<()>;
    fn FindInterface(&self, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, pf: Option<&IBaseFilter>, riid: *const windows_core::GUID, ppint: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RenderStream(&self, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, psource: Option<&windows_core::IUnknown>, pfcompressor: Option<&IBaseFilter>, pfrenderer: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn ControlStream(&self, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, pfilter: Option<&IBaseFilter>, pstart: *const i64, pstop: *const i64, wstartcookie: u16, wstopcookie: u16) -> windows_core::Result<()>;
    fn AllocCapFile(&self, lpstr: &windows_core::PCWSTR, dwlsize: u64) -> windows_core::Result<()>;
    fn CopyCaptureFile(&self, lpwstrold: &windows_core::PCWSTR, lpwstrnew: &windows_core::PCWSTR, fallowescabort: i32, pcallback: Option<&IAMCopyCaptureFileProgress>) -> windows_core::Result<()>;
    fn FindPin(&self, psource: Option<&windows_core::IUnknown>, pindir: PIN_DIRECTION, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, funconnected: super::super::Foundation::BOOL, num: i32) -> windows_core::Result<IPin>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ICaptureGraphBuilder2 {}
#[cfg(feature = "Win32_System_Com")]
impl ICaptureGraphBuilder2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICaptureGraphBuilder2_Vtbl
    where
        Identity: ICaptureGraphBuilder2_Impl,
    {
        unsafe extern "system" fn SetFiltergraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfg: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::SetFiltergraph(this, windows_core::from_raw_borrowed(&pfg)).into()
        }
        unsafe extern "system" fn GetFiltergraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptureGraphBuilder2_Impl::GetFiltergraph(this) {
                Ok(ok__) => {
                    ppfg.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptype: *const windows_core::GUID, lpstrfile: windows_core::PCWSTR, ppf: *mut *mut core::ffi::c_void, ppsink: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::SetOutputFileName(this, core::mem::transmute_copy(&ptype), core::mem::transmute(&lpstrfile), core::mem::transmute_copy(&ppf), core::mem::transmute_copy(&ppsink)).into()
        }
        unsafe extern "system" fn FindInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, pf: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::FindInterface(this, core::mem::transmute_copy(&pcategory), core::mem::transmute_copy(&ptype), windows_core::from_raw_borrowed(&pf), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppint)).into()
        }
        unsafe extern "system" fn RenderStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, psource: *mut core::ffi::c_void, pfcompressor: *mut core::ffi::c_void, pfrenderer: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::RenderStream(this, core::mem::transmute_copy(&pcategory), core::mem::transmute_copy(&ptype), windows_core::from_raw_borrowed(&psource), windows_core::from_raw_borrowed(&pfcompressor), windows_core::from_raw_borrowed(&pfrenderer)).into()
        }
        unsafe extern "system" fn ControlStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, pfilter: *mut core::ffi::c_void, pstart: *const i64, pstop: *const i64, wstartcookie: u16, wstopcookie: u16) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::ControlStream(this, core::mem::transmute_copy(&pcategory), core::mem::transmute_copy(&ptype), windows_core::from_raw_borrowed(&pfilter), core::mem::transmute_copy(&pstart), core::mem::transmute_copy(&pstop), core::mem::transmute_copy(&wstartcookie), core::mem::transmute_copy(&wstopcookie)).into()
        }
        unsafe extern "system" fn AllocCapFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpstr: windows_core::PCWSTR, dwlsize: u64) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::AllocCapFile(this, core::mem::transmute(&lpstr), core::mem::transmute_copy(&dwlsize)).into()
        }
        unsafe extern "system" fn CopyCaptureFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwstrold: windows_core::PCWSTR, lpwstrnew: windows_core::PCWSTR, fallowescabort: i32, pcallback: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICaptureGraphBuilder2_Impl::CopyCaptureFile(this, core::mem::transmute(&lpwstrold), core::mem::transmute(&lpwstrnew), core::mem::transmute_copy(&fallowescabort), windows_core::from_raw_borrowed(&pcallback)).into()
        }
        unsafe extern "system" fn FindPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psource: *mut core::ffi::c_void, pindir: PIN_DIRECTION, pcategory: *const windows_core::GUID, ptype: *const windows_core::GUID, funconnected: super::super::Foundation::BOOL, num: i32, pppin: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ICaptureGraphBuilder2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ICaptureGraphBuilder2_Impl::FindPin(this, windows_core::from_raw_borrowed(&psource), core::mem::transmute_copy(&pindir), core::mem::transmute_copy(&pcategory), core::mem::transmute_copy(&ptype), core::mem::transmute_copy(&funconnected), core::mem::transmute_copy(&num)) {
                Ok(ok__) => {
                    pppin.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFiltergraph: SetFiltergraph::<Identity, OFFSET>,
            GetFiltergraph: GetFiltergraph::<Identity, OFFSET>,
            SetOutputFileName: SetOutputFileName::<Identity, OFFSET>,
            FindInterface: FindInterface::<Identity, OFFSET>,
            RenderStream: RenderStream::<Identity, OFFSET>,
            ControlStream: ControlStream::<Identity, OFFSET>,
            AllocCapFile: AllocCapFile::<Identity, OFFSET>,
            CopyCaptureFile: CopyCaptureFile::<Identity, OFFSET>,
            FindPin: FindPin::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICaptureGraphBuilder2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
pub trait IConfigAsfWriter_Impl: Sized {
    fn ConfigureFilterUsingProfileId(&self, dwprofileid: u32) -> windows_core::Result<()>;
    fn GetCurrentProfileId(&self) -> windows_core::Result<u32>;
    fn ConfigureFilterUsingProfileGuid(&self, guidprofile: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetCurrentProfileGuid(&self) -> windows_core::Result<windows_core::GUID>;
    fn ConfigureFilterUsingProfile(&self, pprofile: Option<&super::WindowsMediaFormat::IWMProfile>) -> windows_core::Result<()>;
    fn GetCurrentProfile(&self) -> windows_core::Result<super::WindowsMediaFormat::IWMProfile>;
    fn SetIndexMode(&self, bindexfile: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetIndexMode(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
impl windows_core::RuntimeName for IConfigAsfWriter {}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
impl IConfigAsfWriter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IConfigAsfWriter_Vtbl
    where
        Identity: IConfigAsfWriter_Impl,
    {
        unsafe extern "system" fn ConfigureFilterUsingProfileId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwprofileid: u32) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter_Impl::ConfigureFilterUsingProfileId(this, core::mem::transmute_copy(&dwprofileid)).into()
        }
        unsafe extern "system" fn GetCurrentProfileId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwprofileid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAsfWriter_Impl::GetCurrentProfileId(this) {
                Ok(ok__) => {
                    pdwprofileid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConfigureFilterUsingProfileGuid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidprofile: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter_Impl::ConfigureFilterUsingProfileGuid(this, core::mem::transmute_copy(&guidprofile)).into()
        }
        unsafe extern "system" fn GetCurrentProfileGuid<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprofileguid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAsfWriter_Impl::GetCurrentProfileGuid(this) {
                Ok(ok__) => {
                    pprofileguid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConfigureFilterUsingProfile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprofile: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter_Impl::ConfigureFilterUsingProfile(this, windows_core::from_raw_borrowed(&pprofile)).into()
        }
        unsafe extern "system" fn GetCurrentProfile<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: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAsfWriter_Impl::GetCurrentProfile(this) {
                Ok(ok__) => {
                    ppprofile.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIndexMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bindexfile: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter_Impl::SetIndexMode(this, core::mem::transmute_copy(&bindexfile)).into()
        }
        unsafe extern "system" fn GetIndexMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbindexfile: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAsfWriter_Impl::GetIndexMode(this) {
                Ok(ok__) => {
                    pbindexfile.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ConfigureFilterUsingProfileId: ConfigureFilterUsingProfileId::<Identity, OFFSET>,
            GetCurrentProfileId: GetCurrentProfileId::<Identity, OFFSET>,
            ConfigureFilterUsingProfileGuid: ConfigureFilterUsingProfileGuid::<Identity, OFFSET>,
            GetCurrentProfileGuid: GetCurrentProfileGuid::<Identity, OFFSET>,
            ConfigureFilterUsingProfile: ConfigureFilterUsingProfile::<Identity, OFFSET>,
            GetCurrentProfile: GetCurrentProfile::<Identity, OFFSET>,
            SetIndexMode: SetIndexMode::<Identity, OFFSET>,
            GetIndexMode: GetIndexMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IConfigAsfWriter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
pub trait IConfigAsfWriter2_Impl: Sized + IConfigAsfWriter_Impl {
    fn StreamNumFromPin(&self, ppin: Option<&IPin>) -> windows_core::Result<u16>;
    fn SetParam(&self, dwparam: u32, dwparam1: u32, dwparam2: u32) -> windows_core::Result<()>;
    fn GetParam(&self, dwparam: u32, pdwparam1: *mut u32, pdwparam2: *mut u32) -> windows_core::Result<()>;
    fn ResetMultiPassState(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
impl windows_core::RuntimeName for IConfigAsfWriter2 {}
#[cfg(feature = "Win32_Media_WindowsMediaFormat")]
impl IConfigAsfWriter2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IConfigAsfWriter2_Vtbl
    where
        Identity: IConfigAsfWriter2_Impl,
    {
        unsafe extern "system" fn StreamNumFromPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, pwstreamnum: *mut u16) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAsfWriter2_Impl::StreamNumFromPin(this, windows_core::from_raw_borrowed(&ppin)) {
                Ok(ok__) => {
                    pwstreamnum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetParam<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparam: u32, dwparam1: u32, dwparam2: u32) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter2_Impl::SetParam(this, core::mem::transmute_copy(&dwparam), core::mem::transmute_copy(&dwparam1), core::mem::transmute_copy(&dwparam2)).into()
        }
        unsafe extern "system" fn GetParam<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparam: u32, pdwparam1: *mut u32, pdwparam2: *mut u32) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter2_Impl::GetParam(this, core::mem::transmute_copy(&dwparam), core::mem::transmute_copy(&pdwparam1), core::mem::transmute_copy(&pdwparam2)).into()
        }
        unsafe extern "system" fn ResetMultiPassState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IConfigAsfWriter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAsfWriter2_Impl::ResetMultiPassState(this).into()
        }
        Self {
            base__: IConfigAsfWriter_Vtbl::new::<Identity, OFFSET>(),
            StreamNumFromPin: StreamNumFromPin::<Identity, OFFSET>,
            SetParam: SetParam::<Identity, OFFSET>,
            GetParam: GetParam::<Identity, OFFSET>,
            ResetMultiPassState: ResetMultiPassState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IConfigAsfWriter2 as windows_core::Interface>::IID || iid == &<IConfigAsfWriter as windows_core::Interface>::IID
    }
}
pub trait IConfigAviMux_Impl: Sized {
    fn SetMasterStream(&self, istream: i32) -> windows_core::Result<()>;
    fn GetMasterStream(&self) -> windows_core::Result<i32>;
    fn SetOutputCompatibilityIndex(&self, foldindex: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetOutputCompatibilityIndex(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for IConfigAviMux {}
impl IConfigAviMux_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IConfigAviMux_Vtbl
    where
        Identity: IConfigAviMux_Impl,
    {
        unsafe extern "system" fn SetMasterStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, istream: i32) -> windows_core::HRESULT
        where
            Identity: IConfigAviMux_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAviMux_Impl::SetMasterStream(this, core::mem::transmute_copy(&istream)).into()
        }
        unsafe extern "system" fn GetMasterStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstream: *mut i32) -> windows_core::HRESULT
        where
            Identity: IConfigAviMux_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAviMux_Impl::GetMasterStream(this) {
                Ok(ok__) => {
                    pstream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputCompatibilityIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, foldindex: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IConfigAviMux_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigAviMux_Impl::SetOutputCompatibilityIndex(this, core::mem::transmute_copy(&foldindex)).into()
        }
        unsafe extern "system" fn GetOutputCompatibilityIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfoldindex: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IConfigAviMux_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigAviMux_Impl::GetOutputCompatibilityIndex(this) {
                Ok(ok__) => {
                    pfoldindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetMasterStream: SetMasterStream::<Identity, OFFSET>,
            GetMasterStream: GetMasterStream::<Identity, OFFSET>,
            SetOutputCompatibilityIndex: SetOutputCompatibilityIndex::<Identity, OFFSET>,
            GetOutputCompatibilityIndex: GetOutputCompatibilityIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IConfigAviMux as windows_core::Interface>::IID
    }
}
pub trait IConfigInterleaving_Impl: Sized {
    fn SetMode(&self, mode: InterleavingMode) -> windows_core::Result<()>;
    fn Mode(&self) -> windows_core::Result<InterleavingMode>;
    fn put_Interleaving(&self, prtinterleave: *const i64, prtpreroll: *const i64) -> windows_core::Result<()>;
    fn get_Interleaving(&self, prtinterleave: *mut i64, prtpreroll: *mut i64) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IConfigInterleaving {}
impl IConfigInterleaving_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IConfigInterleaving_Vtbl
    where
        Identity: IConfigInterleaving_Impl,
    {
        unsafe extern "system" fn SetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: InterleavingMode) -> windows_core::HRESULT
        where
            Identity: IConfigInterleaving_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigInterleaving_Impl::SetMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn Mode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmode: *mut InterleavingMode) -> windows_core::HRESULT
        where
            Identity: IConfigInterleaving_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IConfigInterleaving_Impl::Mode(this) {
                Ok(ok__) => {
                    pmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn put_Interleaving<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtinterleave: *const i64, prtpreroll: *const i64) -> windows_core::HRESULT
        where
            Identity: IConfigInterleaving_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigInterleaving_Impl::put_Interleaving(this, core::mem::transmute_copy(&prtinterleave), core::mem::transmute_copy(&prtpreroll)).into()
        }
        unsafe extern "system" fn get_Interleaving<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtinterleave: *mut i64, prtpreroll: *mut i64) -> windows_core::HRESULT
        where
            Identity: IConfigInterleaving_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IConfigInterleaving_Impl::get_Interleaving(this, core::mem::transmute_copy(&prtinterleave), core::mem::transmute_copy(&prtpreroll)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetMode: SetMode::<Identity, OFFSET>,
            Mode: Mode::<Identity, OFFSET>,
            put_Interleaving: put_Interleaving::<Identity, OFFSET>,
            get_Interleaving: get_Interleaving::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IConfigInterleaving as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait ICreateDevEnum_Impl: Sized {
    fn CreateClassEnumerator(&self, clsiddeviceclass: *const windows_core::GUID, ppenummoniker: *mut Option<super::super::System::Com::IEnumMoniker>, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ICreateDevEnum {}
#[cfg(feature = "Win32_System_Com")]
impl ICreateDevEnum_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ICreateDevEnum_Vtbl
    where
        Identity: ICreateDevEnum_Impl,
    {
        unsafe extern "system" fn CreateClassEnumerator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsiddeviceclass: *const windows_core::GUID, ppenummoniker: *mut *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: ICreateDevEnum_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ICreateDevEnum_Impl::CreateClassEnumerator(this, core::mem::transmute_copy(&clsiddeviceclass), core::mem::transmute_copy(&ppenummoniker), core::mem::transmute_copy(&dwflags)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateClassEnumerator: CreateClassEnumerator::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICreateDevEnum as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IDDrawExclModeVideo_Impl: Sized {
    fn SetDDrawObject(&self, pddrawobject: Option<&super::super::Graphics::DirectDraw::IDirectDraw>) -> windows_core::Result<()>;
    fn GetDDrawObject(&self, ppddrawobject: *mut Option<super::super::Graphics::DirectDraw::IDirectDraw>, pbusingexternal: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetDDrawSurface(&self, pddrawsurface: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface>) -> windows_core::Result<()>;
    fn GetDDrawSurface(&self, ppddrawsurface: *mut Option<super::super::Graphics::DirectDraw::IDirectDrawSurface>, pbusingexternal: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetDrawParameters(&self, prcsource: *const super::super::Foundation::RECT, prctarget: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn GetNativeVideoProps(&self, pdwvideowidth: *mut u32, pdwvideoheight: *mut u32, pdwpictaspectratiox: *mut u32, pdwpictaspectratioy: *mut u32) -> windows_core::Result<()>;
    fn SetCallbackInterface(&self, pcallback: Option<&IDDrawExclModeVideoCallback>, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IDDrawExclModeVideo {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IDDrawExclModeVideo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDDrawExclModeVideo_Vtbl
    where
        Identity: IDDrawExclModeVideo_Impl,
    {
        unsafe extern "system" fn SetDDrawObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pddrawobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::SetDDrawObject(this, windows_core::from_raw_borrowed(&pddrawobject)).into()
        }
        unsafe extern "system" fn GetDDrawObject<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppddrawobject: *mut *mut core::ffi::c_void, pbusingexternal: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::GetDDrawObject(this, core::mem::transmute_copy(&ppddrawobject), core::mem::transmute_copy(&pbusingexternal)).into()
        }
        unsafe extern "system" fn SetDDrawSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pddrawsurface: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::SetDDrawSurface(this, windows_core::from_raw_borrowed(&pddrawsurface)).into()
        }
        unsafe extern "system" fn GetDDrawSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppddrawsurface: *mut *mut core::ffi::c_void, pbusingexternal: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::GetDDrawSurface(this, core::mem::transmute_copy(&ppddrawsurface), core::mem::transmute_copy(&pbusingexternal)).into()
        }
        unsafe extern "system" fn SetDrawParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcsource: *const super::super::Foundation::RECT, prctarget: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::SetDrawParameters(this, core::mem::transmute_copy(&prcsource), core::mem::transmute_copy(&prctarget)).into()
        }
        unsafe extern "system" fn GetNativeVideoProps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwvideowidth: *mut u32, pdwvideoheight: *mut u32, pdwpictaspectratiox: *mut u32, pdwpictaspectratioy: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::GetNativeVideoProps(this, core::mem::transmute_copy(&pdwvideowidth), core::mem::transmute_copy(&pdwvideoheight), core::mem::transmute_copy(&pdwpictaspectratiox), core::mem::transmute_copy(&pdwpictaspectratioy)).into()
        }
        unsafe extern "system" fn SetCallbackInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcallback: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideo_Impl::SetCallbackInterface(this, windows_core::from_raw_borrowed(&pcallback), core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDDrawObject: SetDDrawObject::<Identity, OFFSET>,
            GetDDrawObject: GetDDrawObject::<Identity, OFFSET>,
            SetDDrawSurface: SetDDrawSurface::<Identity, OFFSET>,
            GetDDrawSurface: GetDDrawSurface::<Identity, OFFSET>,
            SetDrawParameters: SetDrawParameters::<Identity, OFFSET>,
            GetNativeVideoProps: GetNativeVideoProps::<Identity, OFFSET>,
            SetCallbackInterface: SetCallbackInterface::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDDrawExclModeVideo as windows_core::Interface>::IID
    }
}
pub trait IDDrawExclModeVideoCallback_Impl: Sized {
    fn OnUpdateOverlay(&self, bbefore: super::super::Foundation::BOOL, dwflags: u32, boldvisible: super::super::Foundation::BOOL, prcoldsrc: *const super::super::Foundation::RECT, prcolddest: *const super::super::Foundation::RECT, bnewvisible: super::super::Foundation::BOOL, prcnewsrc: *const super::super::Foundation::RECT, prcnewdest: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn OnUpdateColorKey(&self, pkey: *const COLORKEY, dwcolor: u32) -> windows_core::Result<()>;
    fn OnUpdateSize(&self, dwwidth: u32, dwheight: u32, dwarwidth: u32, dwarheight: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDDrawExclModeVideoCallback {}
impl IDDrawExclModeVideoCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDDrawExclModeVideoCallback_Vtbl
    where
        Identity: IDDrawExclModeVideoCallback_Impl,
    {
        unsafe extern "system" fn OnUpdateOverlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bbefore: super::super::Foundation::BOOL, dwflags: u32, boldvisible: super::super::Foundation::BOOL, prcoldsrc: *const super::super::Foundation::RECT, prcolddest: *const super::super::Foundation::RECT, bnewvisible: super::super::Foundation::BOOL, prcnewsrc: *const super::super::Foundation::RECT, prcnewdest: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideoCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideoCallback_Impl::OnUpdateOverlay(this, core::mem::transmute_copy(&bbefore), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&boldvisible), core::mem::transmute_copy(&prcoldsrc), core::mem::transmute_copy(&prcolddest), core::mem::transmute_copy(&bnewvisible), core::mem::transmute_copy(&prcnewsrc), core::mem::transmute_copy(&prcnewdest)).into()
        }
        unsafe extern "system" fn OnUpdateColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkey: *const COLORKEY, dwcolor: u32) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideoCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideoCallback_Impl::OnUpdateColorKey(this, core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&dwcolor)).into()
        }
        unsafe extern "system" fn OnUpdateSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwidth: u32, dwheight: u32, dwarwidth: u32, dwarheight: u32) -> windows_core::HRESULT
        where
            Identity: IDDrawExclModeVideoCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDDrawExclModeVideoCallback_Impl::OnUpdateSize(this, core::mem::transmute_copy(&dwwidth), core::mem::transmute_copy(&dwheight), core::mem::transmute_copy(&dwarwidth), core::mem::transmute_copy(&dwarheight)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnUpdateOverlay: OnUpdateOverlay::<Identity, OFFSET>,
            OnUpdateColorKey: OnUpdateColorKey::<Identity, OFFSET>,
            OnUpdateSize: OnUpdateSize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDDrawExclModeVideoCallback as windows_core::Interface>::IID
    }
}
pub trait IDMOWrapperFilter_Impl: Sized {
    fn Init(&self, clsiddmo: *const windows_core::GUID, catdmo: *const windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDMOWrapperFilter {}
impl IDMOWrapperFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDMOWrapperFilter_Vtbl
    where
        Identity: IDMOWrapperFilter_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsiddmo: *const windows_core::GUID, catdmo: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IDMOWrapperFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDMOWrapperFilter_Impl::Init(this, core::mem::transmute_copy(&clsiddmo), core::mem::transmute_copy(&catdmo)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDMOWrapperFilter as windows_core::Interface>::IID
    }
}
pub trait IDShowPlugin_Impl: Sized {
    fn URL(&self, purl: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn UserAgent(&self, puseragent: *mut windows_core::BSTR) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDShowPlugin {}
impl IDShowPlugin_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDShowPlugin_Vtbl
    where
        Identity: IDShowPlugin_Impl,
    {
        unsafe extern "system" fn URL<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, purl: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDShowPlugin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDShowPlugin_Impl::URL(this, core::mem::transmute_copy(&purl)).into()
        }
        unsafe extern "system" fn UserAgent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puseragent: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IDShowPlugin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDShowPlugin_Impl::UserAgent(this, core::mem::transmute_copy(&puseragent)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), URL: URL::<Identity, OFFSET>, UserAgent: UserAgent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDShowPlugin as windows_core::Interface>::IID
    }
}
pub trait IDVEnc_Impl: Sized {
    fn get_IFormatResolution(&self, videoformat: *mut i32, dvformat: *mut i32, resolution: *mut i32, fdvinfo: u8, sdvinfo: *mut DVINFO) -> windows_core::Result<()>;
    fn put_IFormatResolution(&self, videoformat: i32, dvformat: i32, resolution: i32, fdvinfo: u8, sdvinfo: *const DVINFO) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDVEnc {}
impl IDVEnc_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVEnc_Vtbl
    where
        Identity: IDVEnc_Impl,
    {
        unsafe extern "system" fn get_IFormatResolution<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, videoformat: *mut i32, dvformat: *mut i32, resolution: *mut i32, fdvinfo: u8, sdvinfo: *mut DVINFO) -> windows_core::HRESULT
        where
            Identity: IDVEnc_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVEnc_Impl::get_IFormatResolution(this, core::mem::transmute_copy(&videoformat), core::mem::transmute_copy(&dvformat), core::mem::transmute_copy(&resolution), core::mem::transmute_copy(&fdvinfo), core::mem::transmute_copy(&sdvinfo)).into()
        }
        unsafe extern "system" fn put_IFormatResolution<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, videoformat: i32, dvformat: i32, resolution: i32, fdvinfo: u8, sdvinfo: *const DVINFO) -> windows_core::HRESULT
        where
            Identity: IDVEnc_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVEnc_Impl::put_IFormatResolution(this, core::mem::transmute_copy(&videoformat), core::mem::transmute_copy(&dvformat), core::mem::transmute_copy(&resolution), core::mem::transmute_copy(&fdvinfo), core::mem::transmute_copy(&sdvinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_IFormatResolution: get_IFormatResolution::<Identity, OFFSET>,
            put_IFormatResolution: put_IFormatResolution::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVEnc as windows_core::Interface>::IID
    }
}
pub trait IDVRGB219_Impl: Sized {
    fn SetRGB219(&self, bstate: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDVRGB219 {}
impl IDVRGB219_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVRGB219_Vtbl
    where
        Identity: IDVRGB219_Impl,
    {
        unsafe extern "system" fn SetRGB219<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstate: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDVRGB219_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVRGB219_Impl::SetRGB219(this, core::mem::transmute_copy(&bstate)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetRGB219: SetRGB219::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVRGB219 as windows_core::Interface>::IID
    }
}
pub trait IDVSplitter_Impl: Sized {
    fn DiscardAlternateVideoFrames(&self, ndiscard: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDVSplitter {}
impl IDVSplitter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDVSplitter_Vtbl
    where
        Identity: IDVSplitter_Impl,
    {
        unsafe extern "system" fn DiscardAlternateVideoFrames<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ndiscard: i32) -> windows_core::HRESULT
        where
            Identity: IDVSplitter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDVSplitter_Impl::DiscardAlternateVideoFrames(this, core::mem::transmute_copy(&ndiscard)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), DiscardAlternateVideoFrames: DiscardAlternateVideoFrames::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDVSplitter as windows_core::Interface>::IID
    }
}
pub trait IDecimateVideoImage_Impl: Sized {
    fn SetDecimationImageSize(&self, lwidth: i32, lheight: i32) -> windows_core::Result<()>;
    fn ResetDecimationImageSize(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDecimateVideoImage {}
impl IDecimateVideoImage_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDecimateVideoImage_Vtbl
    where
        Identity: IDecimateVideoImage_Impl,
    {
        unsafe extern "system" fn SetDecimationImageSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lwidth: i32, lheight: i32) -> windows_core::HRESULT
        where
            Identity: IDecimateVideoImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDecimateVideoImage_Impl::SetDecimationImageSize(this, core::mem::transmute_copy(&lwidth), core::mem::transmute_copy(&lheight)).into()
        }
        unsafe extern "system" fn ResetDecimationImageSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDecimateVideoImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDecimateVideoImage_Impl::ResetDecimationImageSize(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDecimationImageSize: SetDecimationImageSize::<Identity, OFFSET>,
            ResetDecimationImageSize: ResetDecimationImageSize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDecimateVideoImage as windows_core::Interface>::IID
    }
}
pub trait IDeferredCommand_Impl: Sized {
    fn Cancel(&self) -> windows_core::Result<()>;
    fn Confidence(&self) -> windows_core::Result<i32>;
    fn Postpone(&self, newtime: f64) -> windows_core::Result<()>;
    fn GetHResult(&self) -> windows_core::Result<windows_core::HRESULT>;
}
impl windows_core::RuntimeName for IDeferredCommand {}
impl IDeferredCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDeferredCommand_Vtbl
    where
        Identity: IDeferredCommand_Impl,
    {
        unsafe extern "system" fn Cancel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDeferredCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeferredCommand_Impl::Cancel(this).into()
        }
        unsafe extern "system" fn Confidence<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconfidence: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDeferredCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeferredCommand_Impl::Confidence(this) {
                Ok(ok__) => {
                    pconfidence.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Postpone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newtime: f64) -> windows_core::HRESULT
        where
            Identity: IDeferredCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDeferredCommand_Impl::Postpone(this, core::mem::transmute_copy(&newtime)).into()
        }
        unsafe extern "system" fn GetHResult<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phrresult: *mut windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IDeferredCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDeferredCommand_Impl::GetHResult(this) {
                Ok(ok__) => {
                    phrresult.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Cancel: Cancel::<Identity, OFFSET>,
            Confidence: Confidence::<Identity, OFFSET>,
            Postpone: Postpone::<Identity, OFFSET>,
            GetHResult: GetHResult::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeferredCommand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IDirectDrawMediaSample_Impl: Sized {
    fn GetSurfaceAndReleaseLock(&self, ppdirectdrawsurface: *mut Option<super::super::Graphics::DirectDraw::IDirectDrawSurface>, prect: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn LockMediaSamplePointer(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IDirectDrawMediaSample {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IDirectDrawMediaSample_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDirectDrawMediaSample_Vtbl
    where
        Identity: IDirectDrawMediaSample_Impl,
    {
        unsafe extern "system" fn GetSurfaceAndReleaseLock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirectdrawsurface: *mut *mut core::ffi::c_void, prect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawMediaSample_Impl::GetSurfaceAndReleaseLock(this, core::mem::transmute_copy(&ppdirectdrawsurface), core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn LockMediaSamplePointer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawMediaSample_Impl::LockMediaSamplePointer(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSurfaceAndReleaseLock: GetSurfaceAndReleaseLock::<Identity, OFFSET>,
            LockMediaSamplePointer: LockMediaSamplePointer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDirectDrawMediaSample as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IDirectDrawMediaSampleAllocator_Impl: Sized {
    fn GetDirectDraw(&self) -> windows_core::Result<super::super::Graphics::DirectDraw::IDirectDraw>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IDirectDrawMediaSampleAllocator {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IDirectDrawMediaSampleAllocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDirectDrawMediaSampleAllocator_Vtbl
    where
        Identity: IDirectDrawMediaSampleAllocator_Impl,
    {
        unsafe extern "system" fn GetDirectDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirectdraw: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaSampleAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawMediaSampleAllocator_Impl::GetDirectDraw(this) {
                Ok(ok__) => {
                    ppdirectdraw.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDirectDraw: GetDirectDraw::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDirectDrawMediaSampleAllocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IDirectDrawMediaStream_Impl: Sized + IMediaStream_Impl {
    fn GetFormat(&self, pddsdcurrent: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC, ppdirectdrawpalette: *mut Option<super::super::Graphics::DirectDraw::IDirectDrawPalette>, pddsddesired: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn SetFormat(&self, pddsurfacedesc: *const super::super::Graphics::DirectDraw::DDSURFACEDESC, pdirectdrawpalette: Option<&super::super::Graphics::DirectDraw::IDirectDrawPalette>) -> windows_core::Result<()>;
    fn GetDirectDraw(&self) -> windows_core::Result<super::super::Graphics::DirectDraw::IDirectDraw>;
    fn SetDirectDraw(&self, pdirectdraw: Option<&super::super::Graphics::DirectDraw::IDirectDraw>) -> windows_core::Result<()>;
    fn CreateSample(&self, psurface: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface>, prect: *const super::super::Foundation::RECT, dwflags: u32) -> windows_core::Result<IDirectDrawStreamSample>;
    fn GetTimePerFrame(&self) -> windows_core::Result<i64>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IDirectDrawMediaStream {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IDirectDrawMediaStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDirectDrawMediaStream_Vtbl
    where
        Identity: IDirectDrawMediaStream_Impl,
    {
        unsafe extern "system" fn GetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pddsdcurrent: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC, ppdirectdrawpalette: *mut *mut core::ffi::c_void, pddsddesired: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawMediaStream_Impl::GetFormat(this, core::mem::transmute_copy(&pddsdcurrent), core::mem::transmute_copy(&ppdirectdrawpalette), core::mem::transmute_copy(&pddsddesired), core::mem::transmute_copy(&pdwflags)).into()
        }
        unsafe extern "system" fn SetFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pddsurfacedesc: *const super::super::Graphics::DirectDraw::DDSURFACEDESC, pdirectdrawpalette: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawMediaStream_Impl::SetFormat(this, core::mem::transmute_copy(&pddsurfacedesc), windows_core::from_raw_borrowed(&pdirectdrawpalette)).into()
        }
        unsafe extern "system" fn GetDirectDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirectdraw: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawMediaStream_Impl::GetDirectDraw(this) {
                Ok(ok__) => {
                    ppdirectdraw.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDirectDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdirectdraw: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawMediaStream_Impl::SetDirectDraw(this, windows_core::from_raw_borrowed(&pdirectdraw)).into()
        }
        unsafe extern "system" fn CreateSample<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psurface: *mut core::ffi::c_void, prect: *const super::super::Foundation::RECT, dwflags: u32, ppsample: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawMediaStream_Impl::CreateSample(this, windows_core::from_raw_borrowed(&psurface), core::mem::transmute_copy(&prect), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppsample.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimePerFrame<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pframetime: *mut i64) -> windows_core::HRESULT
        where
            Identity: IDirectDrawMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawMediaStream_Impl::GetTimePerFrame(this) {
                Ok(ok__) => {
                    pframetime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaStream_Vtbl::new::<Identity, OFFSET>(),
            GetFormat: GetFormat::<Identity, OFFSET>,
            SetFormat: SetFormat::<Identity, OFFSET>,
            GetDirectDraw: GetDirectDraw::<Identity, OFFSET>,
            SetDirectDraw: SetDirectDraw::<Identity, OFFSET>,
            CreateSample: CreateSample::<Identity, OFFSET>,
            GetTimePerFrame: GetTimePerFrame::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDirectDrawMediaStream as windows_core::Interface>::IID || iid == &<IMediaStream as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IDirectDrawStreamSample_Impl: Sized + IStreamSample_Impl {
    fn GetSurface(&self, ppdirectdrawsurface: *mut Option<super::super::Graphics::DirectDraw::IDirectDrawSurface>, prect: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetRect(&self, prect: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IDirectDrawStreamSample {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IDirectDrawStreamSample_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDirectDrawStreamSample_Vtbl
    where
        Identity: IDirectDrawStreamSample_Impl,
    {
        unsafe extern "system" fn GetSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirectdrawsurface: *mut *mut core::ffi::c_void, prect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDirectDrawStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawStreamSample_Impl::GetSurface(this, core::mem::transmute_copy(&ppdirectdrawsurface), core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn SetRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prect: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDirectDrawStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawStreamSample_Impl::SetRect(this, core::mem::transmute_copy(&prect)).into()
        }
        Self { base__: IStreamSample_Vtbl::new::<Identity, OFFSET>(), GetSurface: GetSurface::<Identity, OFFSET>, SetRect: SetRect::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDirectDrawStreamSample as windows_core::Interface>::IID || iid == &<IStreamSample as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IDirectDrawVideo_Impl: Sized {
    fn GetSwitches(&self) -> windows_core::Result<u32>;
    fn SetSwitches(&self, switches: u32) -> windows_core::Result<()>;
    fn GetCaps(&self, pcaps: *mut super::super::Graphics::DirectDraw::DDCAPS_DX7) -> windows_core::Result<()>;
    fn GetEmulatedCaps(&self, pcaps: *mut super::super::Graphics::DirectDraw::DDCAPS_DX7) -> windows_core::Result<()>;
    fn GetSurfaceDesc(&self, psurfacedesc: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC) -> windows_core::Result<()>;
    fn GetFourCCCodes(&self, pcount: *mut u32, pcodes: *mut u32) -> windows_core::Result<()>;
    fn SetDirectDraw(&self, pdirectdraw: Option<&super::super::Graphics::DirectDraw::IDirectDraw>) -> windows_core::Result<()>;
    fn GetDirectDraw(&self) -> windows_core::Result<super::super::Graphics::DirectDraw::IDirectDraw>;
    fn GetSurfaceType(&self) -> windows_core::Result<u32>;
    fn SetDefault(&self) -> windows_core::Result<()>;
    fn UseScanLine(&self, usescanline: i32) -> windows_core::Result<()>;
    fn CanUseScanLine(&self) -> windows_core::Result<i32>;
    fn UseOverlayStretch(&self, useoverlaystretch: i32) -> windows_core::Result<()>;
    fn CanUseOverlayStretch(&self) -> windows_core::Result<i32>;
    fn UseWhenFullScreen(&self, usewhenfullscreen: i32) -> windows_core::Result<()>;
    fn WillUseFullScreen(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IDirectDrawVideo {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IDirectDrawVideo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDirectDrawVideo_Vtbl
    where
        Identity: IDirectDrawVideo_Impl,
    {
        unsafe extern "system" fn GetSwitches<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pswitches: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawVideo_Impl::GetSwitches(this) {
                Ok(ok__) => {
                    pswitches.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSwitches<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, switches: u32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::SetSwitches(this, core::mem::transmute_copy(&switches)).into()
        }
        unsafe extern "system" fn GetCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcaps: *mut super::super::Graphics::DirectDraw::DDCAPS_DX7) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::GetCaps(this, core::mem::transmute_copy(&pcaps)).into()
        }
        unsafe extern "system" fn GetEmulatedCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcaps: *mut super::super::Graphics::DirectDraw::DDCAPS_DX7) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::GetEmulatedCaps(this, core::mem::transmute_copy(&pcaps)).into()
        }
        unsafe extern "system" fn GetSurfaceDesc<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psurfacedesc: *mut super::super::Graphics::DirectDraw::DDSURFACEDESC) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::GetSurfaceDesc(this, core::mem::transmute_copy(&psurfacedesc)).into()
        }
        unsafe extern "system" fn GetFourCCCodes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u32, pcodes: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::GetFourCCCodes(this, core::mem::transmute_copy(&pcount), core::mem::transmute_copy(&pcodes)).into()
        }
        unsafe extern "system" fn SetDirectDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdirectdraw: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::SetDirectDraw(this, windows_core::from_raw_borrowed(&pdirectdraw)).into()
        }
        unsafe extern "system" fn GetDirectDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirectdraw: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawVideo_Impl::GetDirectDraw(this) {
                Ok(ok__) => {
                    ppdirectdraw.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSurfaceType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psurfacetype: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawVideo_Impl::GetSurfaceType(this) {
                Ok(ok__) => {
                    psurfacetype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefault<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::SetDefault(this).into()
        }
        unsafe extern "system" fn UseScanLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usescanline: i32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::UseScanLine(this, core::mem::transmute_copy(&usescanline)).into()
        }
        unsafe extern "system" fn CanUseScanLine<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usescanline: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawVideo_Impl::CanUseScanLine(this) {
                Ok(ok__) => {
                    usescanline.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UseOverlayStretch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, useoverlaystretch: i32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::UseOverlayStretch(this, core::mem::transmute_copy(&useoverlaystretch)).into()
        }
        unsafe extern "system" fn CanUseOverlayStretch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, useoverlaystretch: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawVideo_Impl::CanUseOverlayStretch(this) {
                Ok(ok__) => {
                    useoverlaystretch.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UseWhenFullScreen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usewhenfullscreen: i32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDirectDrawVideo_Impl::UseWhenFullScreen(this, core::mem::transmute_copy(&usewhenfullscreen)).into()
        }
        unsafe extern "system" fn WillUseFullScreen<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, usewhenfullscreen: *mut i32) -> windows_core::HRESULT
        where
            Identity: IDirectDrawVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDirectDrawVideo_Impl::WillUseFullScreen(this) {
                Ok(ok__) => {
                    usewhenfullscreen.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSwitches: GetSwitches::<Identity, OFFSET>,
            SetSwitches: SetSwitches::<Identity, OFFSET>,
            GetCaps: GetCaps::<Identity, OFFSET>,
            GetEmulatedCaps: GetEmulatedCaps::<Identity, OFFSET>,
            GetSurfaceDesc: GetSurfaceDesc::<Identity, OFFSET>,
            GetFourCCCodes: GetFourCCCodes::<Identity, OFFSET>,
            SetDirectDraw: SetDirectDraw::<Identity, OFFSET>,
            GetDirectDraw: GetDirectDraw::<Identity, OFFSET>,
            GetSurfaceType: GetSurfaceType::<Identity, OFFSET>,
            SetDefault: SetDefault::<Identity, OFFSET>,
            UseScanLine: UseScanLine::<Identity, OFFSET>,
            CanUseScanLine: CanUseScanLine::<Identity, OFFSET>,
            UseOverlayStretch: UseOverlayStretch::<Identity, OFFSET>,
            CanUseOverlayStretch: CanUseOverlayStretch::<Identity, OFFSET>,
            UseWhenFullScreen: UseWhenFullScreen::<Identity, OFFSET>,
            WillUseFullScreen: WillUseFullScreen::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDirectDrawVideo as windows_core::Interface>::IID
    }
}
pub trait IDistributorNotify_Impl: Sized {
    fn Stop(&self) -> windows_core::Result<()>;
    fn Pause(&self) -> windows_core::Result<()>;
    fn Run(&self, tstart: i64) -> windows_core::Result<()>;
    fn SetSyncSource(&self, pclock: Option<&super::IReferenceClock>) -> windows_core::Result<()>;
    fn NotifyGraphChange(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDistributorNotify {}
impl IDistributorNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDistributorNotify_Vtbl
    where
        Identity: IDistributorNotify_Impl,
    {
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDistributorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDistributorNotify_Impl::Stop(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: IDistributorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDistributorNotify_Impl::Pause(this).into()
        }
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tstart: i64) -> windows_core::HRESULT
        where
            Identity: IDistributorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDistributorNotify_Impl::Run(this, core::mem::transmute_copy(&tstart)).into()
        }
        unsafe extern "system" fn SetSyncSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclock: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDistributorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDistributorNotify_Impl::SetSyncSource(this, windows_core::from_raw_borrowed(&pclock)).into()
        }
        unsafe extern "system" fn NotifyGraphChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDistributorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDistributorNotify_Impl::NotifyGraphChange(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Stop: Stop::<Identity, OFFSET>,
            Pause: Pause::<Identity, OFFSET>,
            Run: Run::<Identity, OFFSET>,
            SetSyncSource: SetSyncSource::<Identity, OFFSET>,
            NotifyGraphChange: NotifyGraphChange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDistributorNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IDrawVideoImage_Impl: Sized {
    fn DrawVideoImageBegin(&self) -> windows_core::Result<()>;
    fn DrawVideoImageEnd(&self) -> windows_core::Result<()>;
    fn DrawVideoImageDraw(&self, hdc: super::super::Graphics::Gdi::HDC, lprcsrc: *const super::super::Foundation::RECT, lprcdst: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IDrawVideoImage {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IDrawVideoImage_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDrawVideoImage_Vtbl
    where
        Identity: IDrawVideoImage_Impl,
    {
        unsafe extern "system" fn DrawVideoImageBegin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDrawVideoImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDrawVideoImage_Impl::DrawVideoImageBegin(this).into()
        }
        unsafe extern "system" fn DrawVideoImageEnd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDrawVideoImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDrawVideoImage_Impl::DrawVideoImageEnd(this).into()
        }
        unsafe extern "system" fn DrawVideoImageDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, lprcsrc: *const super::super::Foundation::RECT, lprcdst: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDrawVideoImage_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDrawVideoImage_Impl::DrawVideoImageDraw(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&lprcsrc), core::mem::transmute_copy(&lprcdst)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DrawVideoImageBegin: DrawVideoImageBegin::<Identity, OFFSET>,
            DrawVideoImageEnd: DrawVideoImageEnd::<Identity, OFFSET>,
            DrawVideoImageDraw: DrawVideoImageDraw::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDrawVideoImage as windows_core::Interface>::IID
    }
}
pub trait IDvdCmd_Impl: Sized {
    fn WaitForStart(&self) -> windows_core::Result<()>;
    fn WaitForEnd(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvdCmd {}
impl IDvdCmd_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdCmd_Vtbl
    where
        Identity: IDvdCmd_Impl,
    {
        unsafe extern "system" fn WaitForStart<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdCmd_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdCmd_Impl::WaitForStart(this).into()
        }
        unsafe extern "system" fn WaitForEnd<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdCmd_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdCmd_Impl::WaitForEnd(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            WaitForStart: WaitForStart::<Identity, OFFSET>,
            WaitForEnd: WaitForEnd::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdCmd as windows_core::Interface>::IID
    }
}
pub trait IDvdControl_Impl: Sized {
    fn TitlePlay(&self, ultitle: u32) -> windows_core::Result<()>;
    fn ChapterPlay(&self, ultitle: u32, ulchapter: u32) -> windows_core::Result<()>;
    fn TimePlay(&self, ultitle: u32, bcdtime: u32) -> windows_core::Result<()>;
    fn StopForResume(&self) -> windows_core::Result<()>;
    fn GoUp(&self) -> windows_core::Result<()>;
    fn TimeSearch(&self, bcdtime: u32) -> windows_core::Result<()>;
    fn ChapterSearch(&self, ulchapter: u32) -> windows_core::Result<()>;
    fn PrevPGSearch(&self) -> windows_core::Result<()>;
    fn TopPGSearch(&self) -> windows_core::Result<()>;
    fn NextPGSearch(&self) -> windows_core::Result<()>;
    fn ForwardScan(&self, dwspeed: f64) -> windows_core::Result<()>;
    fn BackwardScan(&self, dwspeed: f64) -> windows_core::Result<()>;
    fn MenuCall(&self, menuid: DVD_MENU_ID) -> windows_core::Result<()>;
    fn Resume(&self) -> windows_core::Result<()>;
    fn UpperButtonSelect(&self) -> windows_core::Result<()>;
    fn LowerButtonSelect(&self) -> windows_core::Result<()>;
    fn LeftButtonSelect(&self) -> windows_core::Result<()>;
    fn RightButtonSelect(&self) -> windows_core::Result<()>;
    fn ButtonActivate(&self) -> windows_core::Result<()>;
    fn ButtonSelectAndActivate(&self, ulbutton: u32) -> windows_core::Result<()>;
    fn StillOff(&self) -> windows_core::Result<()>;
    fn PauseOn(&self) -> windows_core::Result<()>;
    fn PauseOff(&self) -> windows_core::Result<()>;
    fn MenuLanguageSelect(&self, language: u32) -> windows_core::Result<()>;
    fn AudioStreamChange(&self, ulaudio: u32) -> windows_core::Result<()>;
    fn SubpictureStreamChange(&self, ulsubpicture: u32, bdisplay: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn AngleChange(&self, ulangle: u32) -> windows_core::Result<()>;
    fn ParentalLevelSelect(&self, ulparentallevel: u32) -> windows_core::Result<()>;
    fn ParentalCountrySelect(&self, wcountry: u16) -> windows_core::Result<()>;
    fn KaraokeAudioPresentationModeChange(&self, ulmode: u32) -> windows_core::Result<()>;
    fn VideoModePreferrence(&self, ulpreferreddisplaymode: u32) -> windows_core::Result<()>;
    fn SetRoot(&self, pszpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn MouseActivate(&self, point: &super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn MouseSelect(&self, point: &super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn ChapterPlayAutoStop(&self, ultitle: u32, ulchapter: u32, ulchapterstoplay: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvdControl {}
impl IDvdControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdControl_Vtbl
    where
        Identity: IDvdControl_Impl,
    {
        unsafe extern "system" fn TitlePlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::TitlePlay(this, core::mem::transmute_copy(&ultitle)).into()
        }
        unsafe extern "system" fn ChapterPlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, ulchapter: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ChapterPlay(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&ulchapter)).into()
        }
        unsafe extern "system" fn TimePlay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, bcdtime: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::TimePlay(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&bcdtime)).into()
        }
        unsafe extern "system" fn StopForResume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::StopForResume(this).into()
        }
        unsafe extern "system" fn GoUp<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::GoUp(this).into()
        }
        unsafe extern "system" fn TimeSearch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bcdtime: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::TimeSearch(this, core::mem::transmute_copy(&bcdtime)).into()
        }
        unsafe extern "system" fn ChapterSearch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulchapter: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ChapterSearch(this, core::mem::transmute_copy(&ulchapter)).into()
        }
        unsafe extern "system" fn PrevPGSearch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::PrevPGSearch(this).into()
        }
        unsafe extern "system" fn TopPGSearch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::TopPGSearch(this).into()
        }
        unsafe extern "system" fn NextPGSearch<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::NextPGSearch(this).into()
        }
        unsafe extern "system" fn ForwardScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwspeed: f64) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ForwardScan(this, core::mem::transmute_copy(&dwspeed)).into()
        }
        unsafe extern "system" fn BackwardScan<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwspeed: f64) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::BackwardScan(this, core::mem::transmute_copy(&dwspeed)).into()
        }
        unsafe extern "system" fn MenuCall<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, menuid: DVD_MENU_ID) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::MenuCall(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: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::Resume(this).into()
        }
        unsafe extern "system" fn UpperButtonSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::UpperButtonSelect(this).into()
        }
        unsafe extern "system" fn LowerButtonSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::LowerButtonSelect(this).into()
        }
        unsafe extern "system" fn LeftButtonSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::LeftButtonSelect(this).into()
        }
        unsafe extern "system" fn RightButtonSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::RightButtonSelect(this).into()
        }
        unsafe extern "system" fn ButtonActivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ButtonActivate(this).into()
        }
        unsafe extern "system" fn ButtonSelectAndActivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulbutton: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ButtonSelectAndActivate(this, core::mem::transmute_copy(&ulbutton)).into()
        }
        unsafe extern "system" fn StillOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::StillOff(this).into()
        }
        unsafe extern "system" fn PauseOn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::PauseOn(this).into()
        }
        unsafe extern "system" fn PauseOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::PauseOff(this).into()
        }
        unsafe extern "system" fn MenuLanguageSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, language: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::MenuLanguageSelect(this, core::mem::transmute_copy(&language)).into()
        }
        unsafe extern "system" fn AudioStreamChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulaudio: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::AudioStreamChange(this, core::mem::transmute_copy(&ulaudio)).into()
        }
        unsafe extern "system" fn SubpictureStreamChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulsubpicture: u32, bdisplay: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::SubpictureStreamChange(this, core::mem::transmute_copy(&ulsubpicture), core::mem::transmute_copy(&bdisplay)).into()
        }
        unsafe extern "system" fn AngleChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulangle: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::AngleChange(this, core::mem::transmute_copy(&ulangle)).into()
        }
        unsafe extern "system" fn ParentalLevelSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulparentallevel: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ParentalLevelSelect(this, core::mem::transmute_copy(&ulparentallevel)).into()
        }
        unsafe extern "system" fn ParentalCountrySelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wcountry: u16) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ParentalCountrySelect(this, core::mem::transmute_copy(&wcountry)).into()
        }
        unsafe extern "system" fn KaraokeAudioPresentationModeChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulmode: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::KaraokeAudioPresentationModeChange(this, core::mem::transmute_copy(&ulmode)).into()
        }
        unsafe extern "system" fn VideoModePreferrence<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpreferreddisplaymode: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::VideoModePreferrence(this, core::mem::transmute_copy(&ulpreferreddisplaymode)).into()
        }
        unsafe extern "system" fn SetRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::SetRoot(this, core::mem::transmute(&pszpath)).into()
        }
        unsafe extern "system" fn MouseActivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, point: super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::MouseActivate(this, core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn MouseSelect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, point: super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::MouseSelect(this, core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn ChapterPlayAutoStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, ulchapter: u32, ulchapterstoplay: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl_Impl::ChapterPlayAutoStop(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&ulchapter), core::mem::transmute_copy(&ulchapterstoplay)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            TitlePlay: TitlePlay::<Identity, OFFSET>,
            ChapterPlay: ChapterPlay::<Identity, OFFSET>,
            TimePlay: TimePlay::<Identity, OFFSET>,
            StopForResume: StopForResume::<Identity, OFFSET>,
            GoUp: GoUp::<Identity, OFFSET>,
            TimeSearch: TimeSearch::<Identity, OFFSET>,
            ChapterSearch: ChapterSearch::<Identity, OFFSET>,
            PrevPGSearch: PrevPGSearch::<Identity, OFFSET>,
            TopPGSearch: TopPGSearch::<Identity, OFFSET>,
            NextPGSearch: NextPGSearch::<Identity, OFFSET>,
            ForwardScan: ForwardScan::<Identity, OFFSET>,
            BackwardScan: BackwardScan::<Identity, OFFSET>,
            MenuCall: MenuCall::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            UpperButtonSelect: UpperButtonSelect::<Identity, OFFSET>,
            LowerButtonSelect: LowerButtonSelect::<Identity, OFFSET>,
            LeftButtonSelect: LeftButtonSelect::<Identity, OFFSET>,
            RightButtonSelect: RightButtonSelect::<Identity, OFFSET>,
            ButtonActivate: ButtonActivate::<Identity, OFFSET>,
            ButtonSelectAndActivate: ButtonSelectAndActivate::<Identity, OFFSET>,
            StillOff: StillOff::<Identity, OFFSET>,
            PauseOn: PauseOn::<Identity, OFFSET>,
            PauseOff: PauseOff::<Identity, OFFSET>,
            MenuLanguageSelect: MenuLanguageSelect::<Identity, OFFSET>,
            AudioStreamChange: AudioStreamChange::<Identity, OFFSET>,
            SubpictureStreamChange: SubpictureStreamChange::<Identity, OFFSET>,
            AngleChange: AngleChange::<Identity, OFFSET>,
            ParentalLevelSelect: ParentalLevelSelect::<Identity, OFFSET>,
            ParentalCountrySelect: ParentalCountrySelect::<Identity, OFFSET>,
            KaraokeAudioPresentationModeChange: KaraokeAudioPresentationModeChange::<Identity, OFFSET>,
            VideoModePreferrence: VideoModePreferrence::<Identity, OFFSET>,
            SetRoot: SetRoot::<Identity, OFFSET>,
            MouseActivate: MouseActivate::<Identity, OFFSET>,
            MouseSelect: MouseSelect::<Identity, OFFSET>,
            ChapterPlayAutoStop: ChapterPlayAutoStop::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdControl as windows_core::Interface>::IID
    }
}
pub trait IDvdControl2_Impl: Sized {
    fn PlayTitle(&self, ultitle: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayChapterInTitle(&self, ultitle: u32, ulchapter: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayAtTimeInTitle(&self, ultitle: u32, pstarttime: *const DVD_HMSF_TIMECODE, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn Stop(&self) -> windows_core::Result<()>;
    fn ReturnFromSubmenu(&self, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayAtTime(&self, ptime: *const DVD_HMSF_TIMECODE, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayChapter(&self, ulchapter: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayPrevChapter(&self, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn ReplayChapter(&self, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayNextChapter(&self, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayForwards(&self, dspeed: f64, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayBackwards(&self, dspeed: f64, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn ShowMenu(&self, menuid: DVD_MENU_ID, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn Resume(&self, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SelectRelativeButton(&self, buttondir: DVD_RELATIVE_BUTTON) -> windows_core::Result<()>;
    fn ActivateButton(&self) -> windows_core::Result<()>;
    fn SelectButton(&self, ulbutton: u32) -> windows_core::Result<()>;
    fn SelectAndActivateButton(&self, ulbutton: u32) -> windows_core::Result<()>;
    fn StillOff(&self) -> windows_core::Result<()>;
    fn Pause(&self, bstate: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SelectAudioStream(&self, ulaudio: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SelectSubpictureStream(&self, ulsubpicture: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SetSubpictureState(&self, bstate: super::super::Foundation::BOOL, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SelectAngle(&self, ulangle: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SelectParentalLevel(&self, ulparentallevel: u32) -> windows_core::Result<()>;
    fn SelectParentalCountry(&self, bcountry: *const u8) -> windows_core::Result<()>;
    fn SelectKaraokeAudioPresentationMode(&self, ulmode: u32) -> windows_core::Result<()>;
    fn SelectVideoModePreference(&self, ulpreferreddisplaymode: u32) -> windows_core::Result<()>;
    fn SetDVDDirectory(&self, pszwpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ActivateAtPosition(&self, point: &super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn SelectAtPosition(&self, point: &super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn PlayChaptersAutoStop(&self, ultitle: u32, ulchapter: u32, ulchapterstoplay: u32, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn AcceptParentalLevelChange(&self, baccept: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetOption(&self, flag: DVD_OPTION_FLAG, fstate: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetState(&self, pstate: Option<&IDvdState>, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn PlayPeriodInTitleAutoStop(&self, ultitle: u32, pstarttime: *const DVD_HMSF_TIMECODE, pendtime: *const DVD_HMSF_TIMECODE, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SetGPRM(&self, ulindex: u32, wvalue: u16, dwflags: u32) -> windows_core::Result<IDvdCmd>;
    fn SelectDefaultMenuLanguage(&self, language: u32) -> windows_core::Result<()>;
    fn SelectDefaultAudioLanguage(&self, language: u32, audioextension: DVD_AUDIO_LANG_EXT) -> windows_core::Result<()>;
    fn SelectDefaultSubpictureLanguage(&self, language: u32, subpictureextension: DVD_SUBPICTURE_LANG_EXT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvdControl2 {}
impl IDvdControl2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdControl2_Vtbl
    where
        Identity: IDvdControl2_Impl,
    {
        unsafe extern "system" fn PlayTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayTitle(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayChapterInTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, ulchapter: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayChapterInTitle(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&ulchapter), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayAtTimeInTitle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pstarttime: *const DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayAtTimeInTitle(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&pstarttime), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::Stop(this).into()
        }
        unsafe extern "system" fn ReturnFromSubmenu<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::ReturnFromSubmenu(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayAtTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptime: *const DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayAtTime(this, core::mem::transmute_copy(&ptime), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulchapter: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayChapter(this, core::mem::transmute_copy(&ulchapter), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayPrevChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayPrevChapter(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReplayChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::ReplayChapter(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayNextChapter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayNextChapter(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayForwards<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dspeed: f64, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayForwards(this, core::mem::transmute_copy(&dspeed), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayBackwards<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dspeed: f64, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayBackwards(this, core::mem::transmute_copy(&dspeed), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.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: DVD_MENU_ID, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::ShowMenu(this, core::mem::transmute_copy(&menuid), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Resume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::Resume(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectRelativeButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, buttondir: DVD_RELATIVE_BUTTON) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectRelativeButton(this, core::mem::transmute_copy(&buttondir)).into()
        }
        unsafe extern "system" fn ActivateButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::ActivateButton(this).into()
        }
        unsafe extern "system" fn SelectButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulbutton: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectButton(this, core::mem::transmute_copy(&ulbutton)).into()
        }
        unsafe extern "system" fn SelectAndActivateButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulbutton: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectAndActivateButton(this, core::mem::transmute_copy(&ulbutton)).into()
        }
        unsafe extern "system" fn StillOff<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::StillOff(this).into()
        }
        unsafe extern "system" fn Pause<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstate: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::Pause(this, core::mem::transmute_copy(&bstate)).into()
        }
        unsafe extern "system" fn SelectAudioStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulaudio: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::SelectAudioStream(this, core::mem::transmute_copy(&ulaudio), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectSubpictureStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulsubpicture: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::SelectSubpictureStream(this, core::mem::transmute_copy(&ulsubpicture), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSubpictureState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstate: super::super::Foundation::BOOL, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::SetSubpictureState(this, core::mem::transmute_copy(&bstate), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectAngle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulangle: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::SelectAngle(this, core::mem::transmute_copy(&ulangle), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulparentallevel: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectParentalLevel(this, core::mem::transmute_copy(&ulparentallevel)).into()
        }
        unsafe extern "system" fn SelectParentalCountry<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bcountry: *const u8) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectParentalCountry(this, core::mem::transmute_copy(&bcountry)).into()
        }
        unsafe extern "system" fn SelectKaraokeAudioPresentationMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulmode: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectKaraokeAudioPresentationMode(this, core::mem::transmute_copy(&ulmode)).into()
        }
        unsafe extern "system" fn SelectVideoModePreference<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulpreferreddisplaymode: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectVideoModePreference(this, core::mem::transmute_copy(&ulpreferreddisplaymode)).into()
        }
        unsafe extern "system" fn SetDVDDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszwpath: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SetDVDDirectory(this, core::mem::transmute(&pszwpath)).into()
        }
        unsafe extern "system" fn ActivateAtPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, point: super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::ActivateAtPosition(this, core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn SelectAtPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, point: super::super::Foundation::POINT) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectAtPosition(this, core::mem::transmute(&point)).into()
        }
        unsafe extern "system" fn PlayChaptersAutoStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, ulchapter: u32, ulchapterstoplay: u32, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayChaptersAutoStop(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&ulchapter), core::mem::transmute_copy(&ulchapterstoplay), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.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, baccept: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::AcceptParentalLevelChange(this, core::mem::transmute_copy(&baccept)).into()
        }
        unsafe extern "system" fn SetOption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, flag: DVD_OPTION_FLAG, fstate: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SetOption(this, core::mem::transmute_copy(&flag), core::mem::transmute_copy(&fstate)).into()
        }
        unsafe extern "system" fn SetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstate: *mut core::ffi::c_void, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::SetState(this, windows_core::from_raw_borrowed(&pstate), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PlayPeriodInTitleAutoStop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pstarttime: *const DVD_HMSF_TIMECODE, pendtime: *const DVD_HMSF_TIMECODE, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::PlayPeriodInTitleAutoStop(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&pstarttime), core::mem::transmute_copy(&pendtime), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetGPRM<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulindex: u32, wvalue: u16, dwflags: u32, ppcmd: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdControl2_Impl::SetGPRM(this, core::mem::transmute_copy(&ulindex), core::mem::transmute_copy(&wvalue), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppcmd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SelectDefaultMenuLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, language: u32) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectDefaultMenuLanguage(this, core::mem::transmute_copy(&language)).into()
        }
        unsafe extern "system" fn SelectDefaultAudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, language: u32, audioextension: DVD_AUDIO_LANG_EXT) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectDefaultAudioLanguage(this, core::mem::transmute_copy(&language), core::mem::transmute_copy(&audioextension)).into()
        }
        unsafe extern "system" fn SelectDefaultSubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, language: u32, subpictureextension: DVD_SUBPICTURE_LANG_EXT) -> windows_core::HRESULT
        where
            Identity: IDvdControl2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdControl2_Impl::SelectDefaultSubpictureLanguage(this, core::mem::transmute_copy(&language), core::mem::transmute_copy(&subpictureextension)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PlayTitle: PlayTitle::<Identity, OFFSET>,
            PlayChapterInTitle: PlayChapterInTitle::<Identity, OFFSET>,
            PlayAtTimeInTitle: PlayAtTimeInTitle::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            ReturnFromSubmenu: ReturnFromSubmenu::<Identity, OFFSET>,
            PlayAtTime: PlayAtTime::<Identity, OFFSET>,
            PlayChapter: PlayChapter::<Identity, OFFSET>,
            PlayPrevChapter: PlayPrevChapter::<Identity, OFFSET>,
            ReplayChapter: ReplayChapter::<Identity, OFFSET>,
            PlayNextChapter: PlayNextChapter::<Identity, OFFSET>,
            PlayForwards: PlayForwards::<Identity, OFFSET>,
            PlayBackwards: PlayBackwards::<Identity, OFFSET>,
            ShowMenu: ShowMenu::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            SelectRelativeButton: SelectRelativeButton::<Identity, OFFSET>,
            ActivateButton: ActivateButton::<Identity, OFFSET>,
            SelectButton: SelectButton::<Identity, OFFSET>,
            SelectAndActivateButton: SelectAndActivateButton::<Identity, OFFSET>,
            StillOff: StillOff::<Identity, OFFSET>,
            Pause: Pause::<Identity, OFFSET>,
            SelectAudioStream: SelectAudioStream::<Identity, OFFSET>,
            SelectSubpictureStream: SelectSubpictureStream::<Identity, OFFSET>,
            SetSubpictureState: SetSubpictureState::<Identity, OFFSET>,
            SelectAngle: SelectAngle::<Identity, OFFSET>,
            SelectParentalLevel: SelectParentalLevel::<Identity, OFFSET>,
            SelectParentalCountry: SelectParentalCountry::<Identity, OFFSET>,
            SelectKaraokeAudioPresentationMode: SelectKaraokeAudioPresentationMode::<Identity, OFFSET>,
            SelectVideoModePreference: SelectVideoModePreference::<Identity, OFFSET>,
            SetDVDDirectory: SetDVDDirectory::<Identity, OFFSET>,
            ActivateAtPosition: ActivateAtPosition::<Identity, OFFSET>,
            SelectAtPosition: SelectAtPosition::<Identity, OFFSET>,
            PlayChaptersAutoStop: PlayChaptersAutoStop::<Identity, OFFSET>,
            AcceptParentalLevelChange: AcceptParentalLevelChange::<Identity, OFFSET>,
            SetOption: SetOption::<Identity, OFFSET>,
            SetState: SetState::<Identity, OFFSET>,
            PlayPeriodInTitleAutoStop: PlayPeriodInTitleAutoStop::<Identity, OFFSET>,
            SetGPRM: SetGPRM::<Identity, OFFSET>,
            SelectDefaultMenuLanguage: SelectDefaultMenuLanguage::<Identity, OFFSET>,
            SelectDefaultAudioLanguage: SelectDefaultAudioLanguage::<Identity, OFFSET>,
            SelectDefaultSubpictureLanguage: SelectDefaultSubpictureLanguage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdControl2 as windows_core::Interface>::IID
    }
}
pub trait IDvdGraphBuilder_Impl: Sized {
    fn GetFiltergraph(&self) -> windows_core::Result<IGraphBuilder>;
    fn GetDvdInterface(&self, riid: *const windows_core::GUID, ppvif: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RenderDvdVideoVolume(&self, lpcwszpathname: &windows_core::PCWSTR, dwflags: u32, pstatus: *mut AM_DVD_RENDERSTATUS) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvdGraphBuilder {}
impl IDvdGraphBuilder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdGraphBuilder_Vtbl
    where
        Identity: IDvdGraphBuilder_Impl,
    {
        unsafe extern "system" fn GetFiltergraph<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppgb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdGraphBuilder_Impl::GetFiltergraph(this) {
                Ok(ok__) => {
                    ppgb.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDvdInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppvif: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdGraphBuilder_Impl::GetDvdInterface(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvif)).into()
        }
        unsafe extern "system" fn RenderDvdVideoVolume<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpcwszpathname: windows_core::PCWSTR, dwflags: u32, pstatus: *mut AM_DVD_RENDERSTATUS) -> windows_core::HRESULT
        where
            Identity: IDvdGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdGraphBuilder_Impl::RenderDvdVideoVolume(this, core::mem::transmute(&lpcwszpathname), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&pstatus)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFiltergraph: GetFiltergraph::<Identity, OFFSET>,
            GetDvdInterface: GetDvdInterface::<Identity, OFFSET>,
            RenderDvdVideoVolume: RenderDvdVideoVolume::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdGraphBuilder as windows_core::Interface>::IID
    }
}
pub trait IDvdInfo_Impl: Sized {
    fn GetCurrentDomain(&self) -> windows_core::Result<DVD_DOMAIN>;
    fn GetCurrentLocation(&self) -> windows_core::Result<DVD_PLAYBACK_LOCATION>;
    fn GetTotalTitleTime(&self) -> windows_core::Result<u32>;
    fn GetCurrentButton(&self, pulbuttonsavailable: *mut u32, pulcurrentbutton: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentAngle(&self, pulanglesavailable: *mut u32, pulcurrentangle: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentAudio(&self, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentSubpicture(&self, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32, pisdisabled: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetCurrentUOPS(&self) -> windows_core::Result<u32>;
    fn GetAllSPRMs(&self) -> windows_core::Result<*mut u16>;
    fn GetAllGPRMs(&self) -> windows_core::Result<*mut u16>;
    fn GetAudioLanguage(&self, ulstream: u32) -> windows_core::Result<u32>;
    fn GetSubpictureLanguage(&self, ulstream: u32) -> windows_core::Result<u32>;
    fn GetTitleAttributes(&self, ultitle: u32, patr: *mut DVD_ATR) -> windows_core::Result<()>;
    fn GetVMGAttributes(&self, patr: *mut DVD_ATR) -> windows_core::Result<()>;
    fn GetCurrentVideoAttributes(&self) -> windows_core::Result<*mut u8>;
    fn GetCurrentAudioAttributes(&self) -> windows_core::Result<*mut u8>;
    fn GetCurrentSubpictureAttributes(&self) -> windows_core::Result<*mut u8>;
    fn GetCurrentVolumeInfo(&self, pulnumofvol: *mut u32, pulthisvolnum: *mut u32, pside: *mut DVD_DISC_SIDE, pulnumoftitles: *mut u32) -> windows_core::Result<()>;
    fn GetDVDTextInfo(&self, ptextmanager: *mut u8, ulbufsize: u32, pulactualsize: *mut u32) -> windows_core::Result<()>;
    fn GetPlayerParentalLevel(&self, pulparentallevel: *mut u32, pulcountrycode: *mut u32) -> windows_core::Result<()>;
    fn GetNumberOfChapters(&self, ultitle: u32) -> windows_core::Result<u32>;
    fn GetTitleParentalLevels(&self, ultitle: u32) -> windows_core::Result<u32>;
    fn GetRoot(&self, proot: windows_core::PSTR, ulbufsize: u32, pulactualsize: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IDvdInfo {}
impl IDvdInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdInfo_Vtbl
    where
        Identity: IDvdInfo_Impl,
    {
        unsafe extern "system" fn GetCurrentDomain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdomain: *mut DVD_DOMAIN) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetCurrentDomain(this) {
                Ok(ok__) => {
                    pdomain.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plocation: *mut DVD_PLAYBACK_LOCATION) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetCurrentLocation(this) {
                Ok(ok__) => {
                    plocation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTotalTitleTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pultotaltime: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetTotalTitleTime(this) {
                Ok(ok__) => {
                    pultotaltime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulbuttonsavailable: *mut u32, pulcurrentbutton: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetCurrentButton(this, core::mem::transmute_copy(&pulbuttonsavailable), core::mem::transmute_copy(&pulcurrentbutton)).into()
        }
        unsafe extern "system" fn GetCurrentAngle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulanglesavailable: *mut u32, pulcurrentangle: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetCurrentAngle(this, core::mem::transmute_copy(&pulanglesavailable), core::mem::transmute_copy(&pulcurrentangle)).into()
        }
        unsafe extern "system" fn GetCurrentAudio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetCurrentAudio(this, core::mem::transmute_copy(&pulstreamsavailable), core::mem::transmute_copy(&pulcurrentstream)).into()
        }
        unsafe extern "system" fn GetCurrentSubpicture<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32, pisdisabled: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetCurrentSubpicture(this, core::mem::transmute_copy(&pulstreamsavailable), core::mem::transmute_copy(&pulcurrentstream), core::mem::transmute_copy(&pisdisabled)).into()
        }
        unsafe extern "system" fn GetCurrentUOPS<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puop: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetCurrentUOPS(this) {
                Ok(ok__) => {
                    puop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllSPRMs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pregisterarray: *mut *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetAllSPRMs(this) {
                Ok(ok__) => {
                    pregisterarray.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllGPRMs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pregisterarray: *mut *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetAllGPRMs(this) {
                Ok(ok__) => {
                    pregisterarray.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetAudioLanguage(this, core::mem::transmute_copy(&ulstream)) {
                Ok(ok__) => {
                    planguage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetSubpictureLanguage(this, core::mem::transmute_copy(&ulstream)) {
                Ok(ok__) => {
                    planguage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, patr: *mut DVD_ATR) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetTitleAttributes(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&patr)).into()
        }
        unsafe extern "system" fn GetVMGAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, patr: *mut DVD_ATR) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetVMGAttributes(this, core::mem::transmute_copy(&patr)).into()
        }
        unsafe extern "system" fn GetCurrentVideoAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, patr: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetCurrentVideoAttributes(this) {
                Ok(ok__) => {
                    patr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentAudioAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, patr: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetCurrentAudioAttributes(this) {
                Ok(ok__) => {
                    patr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentSubpictureAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, patr: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetCurrentSubpictureAttributes(this) {
                Ok(ok__) => {
                    patr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentVolumeInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulnumofvol: *mut u32, pulthisvolnum: *mut u32, pside: *mut DVD_DISC_SIDE, pulnumoftitles: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetCurrentVolumeInfo(this, core::mem::transmute_copy(&pulnumofvol), core::mem::transmute_copy(&pulthisvolnum), core::mem::transmute_copy(&pside), core::mem::transmute_copy(&pulnumoftitles)).into()
        }
        unsafe extern "system" fn GetDVDTextInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptextmanager: *mut u8, ulbufsize: u32, pulactualsize: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetDVDTextInfo(this, core::mem::transmute_copy(&ptextmanager), core::mem::transmute_copy(&ulbufsize), core::mem::transmute_copy(&pulactualsize)).into()
        }
        unsafe extern "system" fn GetPlayerParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulparentallevel: *mut u32, pulcountrycode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetPlayerParentalLevel(this, core::mem::transmute_copy(&pulparentallevel), core::mem::transmute_copy(&pulcountrycode)).into()
        }
        unsafe extern "system" fn GetNumberOfChapters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pulnumberofchapters: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetNumberOfChapters(this, core::mem::transmute_copy(&ultitle)) {
                Ok(ok__) => {
                    pulnumberofchapters.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleParentalLevels<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pulparentallevels: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo_Impl::GetTitleParentalLevels(this, core::mem::transmute_copy(&ultitle)) {
                Ok(ok__) => {
                    pulparentallevels.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetRoot<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, proot: windows_core::PSTR, ulbufsize: u32, pulactualsize: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo_Impl::GetRoot(this, core::mem::transmute_copy(&proot), core::mem::transmute_copy(&ulbufsize), core::mem::transmute_copy(&pulactualsize)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCurrentDomain: GetCurrentDomain::<Identity, OFFSET>,
            GetCurrentLocation: GetCurrentLocation::<Identity, OFFSET>,
            GetTotalTitleTime: GetTotalTitleTime::<Identity, OFFSET>,
            GetCurrentButton: GetCurrentButton::<Identity, OFFSET>,
            GetCurrentAngle: GetCurrentAngle::<Identity, OFFSET>,
            GetCurrentAudio: GetCurrentAudio::<Identity, OFFSET>,
            GetCurrentSubpicture: GetCurrentSubpicture::<Identity, OFFSET>,
            GetCurrentUOPS: GetCurrentUOPS::<Identity, OFFSET>,
            GetAllSPRMs: GetAllSPRMs::<Identity, OFFSET>,
            GetAllGPRMs: GetAllGPRMs::<Identity, OFFSET>,
            GetAudioLanguage: GetAudioLanguage::<Identity, OFFSET>,
            GetSubpictureLanguage: GetSubpictureLanguage::<Identity, OFFSET>,
            GetTitleAttributes: GetTitleAttributes::<Identity, OFFSET>,
            GetVMGAttributes: GetVMGAttributes::<Identity, OFFSET>,
            GetCurrentVideoAttributes: GetCurrentVideoAttributes::<Identity, OFFSET>,
            GetCurrentAudioAttributes: GetCurrentAudioAttributes::<Identity, OFFSET>,
            GetCurrentSubpictureAttributes: GetCurrentSubpictureAttributes::<Identity, OFFSET>,
            GetCurrentVolumeInfo: GetCurrentVolumeInfo::<Identity, OFFSET>,
            GetDVDTextInfo: GetDVDTextInfo::<Identity, OFFSET>,
            GetPlayerParentalLevel: GetPlayerParentalLevel::<Identity, OFFSET>,
            GetNumberOfChapters: GetNumberOfChapters::<Identity, OFFSET>,
            GetTitleParentalLevels: GetTitleParentalLevels::<Identity, OFFSET>,
            GetRoot: GetRoot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdInfo as windows_core::Interface>::IID
    }
}
pub trait IDvdInfo2_Impl: Sized {
    fn GetCurrentDomain(&self) -> windows_core::Result<DVD_DOMAIN>;
    fn GetCurrentLocation(&self) -> windows_core::Result<DVD_PLAYBACK_LOCATION2>;
    fn GetTotalTitleTime(&self, ptotaltime: *mut DVD_HMSF_TIMECODE, ultimecodeflags: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentButton(&self, pulbuttonsavailable: *mut u32, pulcurrentbutton: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentAngle(&self, pulanglesavailable: *mut u32, pulcurrentangle: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentAudio(&self, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentSubpicture(&self, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32, pbisdisabled: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetCurrentUOPS(&self) -> windows_core::Result<u32>;
    fn GetAllSPRMs(&self) -> windows_core::Result<*mut u16>;
    fn GetAllGPRMs(&self) -> windows_core::Result<*mut u16>;
    fn GetAudioLanguage(&self, ulstream: u32) -> windows_core::Result<u32>;
    fn GetSubpictureLanguage(&self, ulstream: u32) -> windows_core::Result<u32>;
    fn GetTitleAttributes(&self, ultitle: u32, pmenu: *mut DVD_MenuAttributes, ptitle: *mut DVD_TitleAttributes) -> windows_core::Result<()>;
    fn GetVMGAttributes(&self, patr: *mut DVD_MenuAttributes) -> windows_core::Result<()>;
    fn GetCurrentVideoAttributes(&self, patr: *mut DVD_VideoAttributes) -> windows_core::Result<()>;
    fn GetAudioAttributes(&self, ulstream: u32, patr: *mut DVD_AudioAttributes) -> windows_core::Result<()>;
    fn GetKaraokeAttributes(&self, ulstream: u32, pattributes: *mut DVD_KaraokeAttributes) -> windows_core::Result<()>;
    fn GetSubpictureAttributes(&self, ulstream: u32) -> windows_core::Result<DVD_SubpictureAttributes>;
    fn GetDVDVolumeInfo(&self, pulnumofvolumes: *mut u32, pulvolume: *mut u32, pside: *mut DVD_DISC_SIDE, pulnumoftitles: *mut u32) -> windows_core::Result<()>;
    fn GetDVDTextNumberOfLanguages(&self) -> windows_core::Result<u32>;
    fn GetDVDTextLanguageInfo(&self, ullangindex: u32, pulnumofstrings: *mut u32, plangcode: *mut u32, pbcharacterset: *mut DVD_TextCharSet) -> windows_core::Result<()>;
    fn GetDVDTextStringAsNative(&self, ullangindex: u32, ulstringindex: u32, pbbuffer: *mut u8, ulmaxbuffersize: u32, pulactualsize: *mut u32, ptype: *mut DVD_TextStringType) -> windows_core::Result<()>;
    fn GetDVDTextStringAsUnicode(&self, ullangindex: u32, ulstringindex: u32, pchwbuffer: windows_core::PWSTR, ulmaxbuffersize: u32, pulactualsize: *mut u32, ptype: *mut DVD_TextStringType) -> windows_core::Result<()>;
    fn GetPlayerParentalLevel(&self, pulparentallevel: *mut u32, pbcountrycode: *mut u8) -> windows_core::Result<()>;
    fn GetNumberOfChapters(&self, ultitle: u32) -> windows_core::Result<u32>;
    fn GetTitleParentalLevels(&self, ultitle: u32) -> windows_core::Result<u32>;
    fn GetDVDDirectory(&self, pszwpath: windows_core::PWSTR, ulmaxsize: u32, pulactualsize: *mut u32) -> windows_core::Result<()>;
    fn IsAudioStreamEnabled(&self, ulstreamnum: u32) -> windows_core::Result<super::super::Foundation::BOOL>;
    fn GetDiscID(&self, pszwpath: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetState(&self) -> windows_core::Result<IDvdState>;
    fn GetMenuLanguages(&self, planguages: *mut u32, ulmaxlanguages: u32, pulactuallanguages: *mut u32) -> windows_core::Result<()>;
    fn GetButtonAtPosition(&self, point: &super::super::Foundation::POINT) -> windows_core::Result<u32>;
    fn GetCmdFromEvent(&self, lparam1: isize) -> windows_core::Result<IDvdCmd>;
    fn GetDefaultMenuLanguage(&self) -> windows_core::Result<u32>;
    fn GetDefaultAudioLanguage(&self, planguage: *mut u32, paudioextension: *mut DVD_AUDIO_LANG_EXT) -> windows_core::Result<()>;
    fn GetDefaultSubpictureLanguage(&self, planguage: *mut u32, psubpictureextension: *mut DVD_SUBPICTURE_LANG_EXT) -> windows_core::Result<()>;
    fn GetDecoderCaps(&self, pcaps: *mut DVD_DECODER_CAPS) -> windows_core::Result<()>;
    fn GetButtonRect(&self, ulbutton: u32) -> windows_core::Result<super::super::Foundation::RECT>;
    fn IsSubpictureStreamEnabled(&self, ulstreamnum: u32) -> windows_core::Result<super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for IDvdInfo2 {}
impl IDvdInfo2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdInfo2_Vtbl
    where
        Identity: IDvdInfo2_Impl,
    {
        unsafe extern "system" fn GetCurrentDomain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdomain: *mut DVD_DOMAIN) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetCurrentDomain(this) {
                Ok(ok__) => {
                    pdomain.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentLocation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plocation: *mut DVD_PLAYBACK_LOCATION2) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetCurrentLocation(this) {
                Ok(ok__) => {
                    plocation.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTotalTitleTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptotaltime: *mut DVD_HMSF_TIMECODE, ultimecodeflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetTotalTitleTime(this, core::mem::transmute_copy(&ptotaltime), core::mem::transmute_copy(&ultimecodeflags)).into()
        }
        unsafe extern "system" fn GetCurrentButton<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulbuttonsavailable: *mut u32, pulcurrentbutton: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetCurrentButton(this, core::mem::transmute_copy(&pulbuttonsavailable), core::mem::transmute_copy(&pulcurrentbutton)).into()
        }
        unsafe extern "system" fn GetCurrentAngle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulanglesavailable: *mut u32, pulcurrentangle: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetCurrentAngle(this, core::mem::transmute_copy(&pulanglesavailable), core::mem::transmute_copy(&pulcurrentangle)).into()
        }
        unsafe extern "system" fn GetCurrentAudio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetCurrentAudio(this, core::mem::transmute_copy(&pulstreamsavailable), core::mem::transmute_copy(&pulcurrentstream)).into()
        }
        unsafe extern "system" fn GetCurrentSubpicture<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulstreamsavailable: *mut u32, pulcurrentstream: *mut u32, pbisdisabled: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetCurrentSubpicture(this, core::mem::transmute_copy(&pulstreamsavailable), core::mem::transmute_copy(&pulcurrentstream), core::mem::transmute_copy(&pbisdisabled)).into()
        }
        unsafe extern "system" fn GetCurrentUOPS<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, puluops: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetCurrentUOPS(this) {
                Ok(ok__) => {
                    puluops.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllSPRMs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pregisterarray: *mut *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetAllSPRMs(this) {
                Ok(ok__) => {
                    pregisterarray.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAllGPRMs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pregisterarray: *mut *mut u16) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetAllGPRMs(this) {
                Ok(ok__) => {
                    pregisterarray.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetAudioLanguage(this, core::mem::transmute_copy(&ulstream)) {
                Ok(ok__) => {
                    planguage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, planguage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetSubpictureLanguage(this, core::mem::transmute_copy(&ulstream)) {
                Ok(ok__) => {
                    planguage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pmenu: *mut DVD_MenuAttributes, ptitle: *mut DVD_TitleAttributes) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetTitleAttributes(this, core::mem::transmute_copy(&ultitle), core::mem::transmute_copy(&pmenu), core::mem::transmute_copy(&ptitle)).into()
        }
        unsafe extern "system" fn GetVMGAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, patr: *mut DVD_MenuAttributes) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetVMGAttributes(this, core::mem::transmute_copy(&patr)).into()
        }
        unsafe extern "system" fn GetCurrentVideoAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, patr: *mut DVD_VideoAttributes) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetCurrentVideoAttributes(this, core::mem::transmute_copy(&patr)).into()
        }
        unsafe extern "system" fn GetAudioAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, patr: *mut DVD_AudioAttributes) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetAudioAttributes(this, core::mem::transmute_copy(&ulstream), core::mem::transmute_copy(&patr)).into()
        }
        unsafe extern "system" fn GetKaraokeAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, pattributes: *mut DVD_KaraokeAttributes) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetKaraokeAttributes(this, core::mem::transmute_copy(&ulstream), core::mem::transmute_copy(&pattributes)).into()
        }
        unsafe extern "system" fn GetSubpictureAttributes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstream: u32, patr: *mut DVD_SubpictureAttributes) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetSubpictureAttributes(this, core::mem::transmute_copy(&ulstream)) {
                Ok(ok__) => {
                    patr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDVDVolumeInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulnumofvolumes: *mut u32, pulvolume: *mut u32, pside: *mut DVD_DISC_SIDE, pulnumoftitles: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDVDVolumeInfo(this, core::mem::transmute_copy(&pulnumofvolumes), core::mem::transmute_copy(&pulvolume), core::mem::transmute_copy(&pside), core::mem::transmute_copy(&pulnumoftitles)).into()
        }
        unsafe extern "system" fn GetDVDTextNumberOfLanguages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulnumoflangs: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetDVDTextNumberOfLanguages(this) {
                Ok(ok__) => {
                    pulnumoflangs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDVDTextLanguageInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullangindex: u32, pulnumofstrings: *mut u32, plangcode: *mut u32, pbcharacterset: *mut DVD_TextCharSet) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDVDTextLanguageInfo(this, core::mem::transmute_copy(&ullangindex), core::mem::transmute_copy(&pulnumofstrings), core::mem::transmute_copy(&plangcode), core::mem::transmute_copy(&pbcharacterset)).into()
        }
        unsafe extern "system" fn GetDVDTextStringAsNative<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullangindex: u32, ulstringindex: u32, pbbuffer: *mut u8, ulmaxbuffersize: u32, pulactualsize: *mut u32, ptype: *mut DVD_TextStringType) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDVDTextStringAsNative(this, core::mem::transmute_copy(&ullangindex), core::mem::transmute_copy(&ulstringindex), core::mem::transmute_copy(&pbbuffer), core::mem::transmute_copy(&ulmaxbuffersize), core::mem::transmute_copy(&pulactualsize), core::mem::transmute_copy(&ptype)).into()
        }
        unsafe extern "system" fn GetDVDTextStringAsUnicode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullangindex: u32, ulstringindex: u32, pchwbuffer: windows_core::PWSTR, ulmaxbuffersize: u32, pulactualsize: *mut u32, ptype: *mut DVD_TextStringType) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDVDTextStringAsUnicode(this, core::mem::transmute_copy(&ullangindex), core::mem::transmute_copy(&ulstringindex), core::mem::transmute_copy(&pchwbuffer), core::mem::transmute_copy(&ulmaxbuffersize), core::mem::transmute_copy(&pulactualsize), core::mem::transmute_copy(&ptype)).into()
        }
        unsafe extern "system" fn GetPlayerParentalLevel<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulparentallevel: *mut u32, pbcountrycode: *mut u8) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetPlayerParentalLevel(this, core::mem::transmute_copy(&pulparentallevel), core::mem::transmute_copy(&pbcountrycode)).into()
        }
        unsafe extern "system" fn GetNumberOfChapters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pulnumofchapters: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetNumberOfChapters(this, core::mem::transmute_copy(&ultitle)) {
                Ok(ok__) => {
                    pulnumofchapters.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTitleParentalLevels<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ultitle: u32, pulparentallevels: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetTitleParentalLevels(this, core::mem::transmute_copy(&ultitle)) {
                Ok(ok__) => {
                    pulparentallevels.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDVDDirectory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszwpath: windows_core::PWSTR, ulmaxsize: u32, pulactualsize: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDVDDirectory(this, core::mem::transmute_copy(&pszwpath), core::mem::transmute_copy(&ulmaxsize), core::mem::transmute_copy(&pulactualsize)).into()
        }
        unsafe extern "system" fn IsAudioStreamEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstreamnum: u32, pbenabled: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::IsAudioStreamEnabled(this, core::mem::transmute_copy(&ulstreamnum)) {
                Ok(ok__) => {
                    pbenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDiscID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszwpath: windows_core::PCWSTR, pulldiscid: *mut u64) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetDiscID(this, core::mem::transmute(&pszwpath)) {
                Ok(ok__) => {
                    pulldiscid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstatedata: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetState(this) {
                Ok(ok__) => {
                    pstatedata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetMenuLanguages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planguages: *mut u32, ulmaxlanguages: u32, pulactuallanguages: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetMenuLanguages(this, core::mem::transmute_copy(&planguages), core::mem::transmute_copy(&ulmaxlanguages), core::mem::transmute_copy(&pulactuallanguages)).into()
        }
        unsafe extern "system" fn GetButtonAtPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, point: super::super::Foundation::POINT, pulbuttonindex: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetButtonAtPosition(this, core::mem::transmute(&point)) {
                Ok(ok__) => {
                    pulbuttonindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCmdFromEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lparam1: isize, pcmdobj: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetCmdFromEvent(this, core::mem::transmute_copy(&lparam1)) {
                Ok(ok__) => {
                    pcmdobj.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultMenuLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planguage: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetDefaultMenuLanguage(this) {
                Ok(ok__) => {
                    planguage.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetDefaultAudioLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planguage: *mut u32, paudioextension: *mut DVD_AUDIO_LANG_EXT) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDefaultAudioLanguage(this, core::mem::transmute_copy(&planguage), core::mem::transmute_copy(&paudioextension)).into()
        }
        unsafe extern "system" fn GetDefaultSubpictureLanguage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, planguage: *mut u32, psubpictureextension: *mut DVD_SUBPICTURE_LANG_EXT) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDefaultSubpictureLanguage(this, core::mem::transmute_copy(&planguage), core::mem::transmute_copy(&psubpictureextension)).into()
        }
        unsafe extern "system" fn GetDecoderCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcaps: *mut DVD_DECODER_CAPS) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IDvdInfo2_Impl::GetDecoderCaps(this, core::mem::transmute_copy(&pcaps)).into()
        }
        unsafe extern "system" fn GetButtonRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulbutton: u32, prect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::GetButtonRect(this, core::mem::transmute_copy(&ulbutton)) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsSubpictureStreamEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstreamnum: u32, pbenabled: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IDvdInfo2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdInfo2_Impl::IsSubpictureStreamEnabled(this, core::mem::transmute_copy(&ulstreamnum)) {
                Ok(ok__) => {
                    pbenabled.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCurrentDomain: GetCurrentDomain::<Identity, OFFSET>,
            GetCurrentLocation: GetCurrentLocation::<Identity, OFFSET>,
            GetTotalTitleTime: GetTotalTitleTime::<Identity, OFFSET>,
            GetCurrentButton: GetCurrentButton::<Identity, OFFSET>,
            GetCurrentAngle: GetCurrentAngle::<Identity, OFFSET>,
            GetCurrentAudio: GetCurrentAudio::<Identity, OFFSET>,
            GetCurrentSubpicture: GetCurrentSubpicture::<Identity, OFFSET>,
            GetCurrentUOPS: GetCurrentUOPS::<Identity, OFFSET>,
            GetAllSPRMs: GetAllSPRMs::<Identity, OFFSET>,
            GetAllGPRMs: GetAllGPRMs::<Identity, OFFSET>,
            GetAudioLanguage: GetAudioLanguage::<Identity, OFFSET>,
            GetSubpictureLanguage: GetSubpictureLanguage::<Identity, OFFSET>,
            GetTitleAttributes: GetTitleAttributes::<Identity, OFFSET>,
            GetVMGAttributes: GetVMGAttributes::<Identity, OFFSET>,
            GetCurrentVideoAttributes: GetCurrentVideoAttributes::<Identity, OFFSET>,
            GetAudioAttributes: GetAudioAttributes::<Identity, OFFSET>,
            GetKaraokeAttributes: GetKaraokeAttributes::<Identity, OFFSET>,
            GetSubpictureAttributes: GetSubpictureAttributes::<Identity, OFFSET>,
            GetDVDVolumeInfo: GetDVDVolumeInfo::<Identity, OFFSET>,
            GetDVDTextNumberOfLanguages: GetDVDTextNumberOfLanguages::<Identity, OFFSET>,
            GetDVDTextLanguageInfo: GetDVDTextLanguageInfo::<Identity, OFFSET>,
            GetDVDTextStringAsNative: GetDVDTextStringAsNative::<Identity, OFFSET>,
            GetDVDTextStringAsUnicode: GetDVDTextStringAsUnicode::<Identity, OFFSET>,
            GetPlayerParentalLevel: GetPlayerParentalLevel::<Identity, OFFSET>,
            GetNumberOfChapters: GetNumberOfChapters::<Identity, OFFSET>,
            GetTitleParentalLevels: GetTitleParentalLevels::<Identity, OFFSET>,
            GetDVDDirectory: GetDVDDirectory::<Identity, OFFSET>,
            IsAudioStreamEnabled: IsAudioStreamEnabled::<Identity, OFFSET>,
            GetDiscID: GetDiscID::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            GetMenuLanguages: GetMenuLanguages::<Identity, OFFSET>,
            GetButtonAtPosition: GetButtonAtPosition::<Identity, OFFSET>,
            GetCmdFromEvent: GetCmdFromEvent::<Identity, OFFSET>,
            GetDefaultMenuLanguage: GetDefaultMenuLanguage::<Identity, OFFSET>,
            GetDefaultAudioLanguage: GetDefaultAudioLanguage::<Identity, OFFSET>,
            GetDefaultSubpictureLanguage: GetDefaultSubpictureLanguage::<Identity, OFFSET>,
            GetDecoderCaps: GetDecoderCaps::<Identity, OFFSET>,
            GetButtonRect: GetButtonRect::<Identity, OFFSET>,
            IsSubpictureStreamEnabled: IsSubpictureStreamEnabled::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdInfo2 as windows_core::Interface>::IID
    }
}
pub trait IDvdState_Impl: Sized {
    fn GetDiscID(&self) -> windows_core::Result<u64>;
    fn GetParentalLevel(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IDvdState {}
impl IDvdState_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IDvdState_Vtbl
    where
        Identity: IDvdState_Impl,
    {
        unsafe extern "system" fn GetDiscID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulluniqueid: *mut u64) -> windows_core::HRESULT
        where
            Identity: IDvdState_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdState_Impl::GetDiscID(this) {
                Ok(ok__) => {
                    pulluniqueid.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, pulparentallevel: *mut u32) -> windows_core::HRESULT
        where
            Identity: IDvdState_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IDvdState_Impl::GetParentalLevel(this) {
                Ok(ok__) => {
                    pulparentallevel.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDiscID: GetDiscID::<Identity, OFFSET>,
            GetParentalLevel: GetParentalLevel::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDvdState as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IESEvent_Impl: Sized {
    fn GetEventId(&self) -> windows_core::Result<u32>;
    fn GetEventType(&self) -> windows_core::Result<windows_core::GUID>;
    fn SetCompletionStatus(&self, dwresult: u32) -> windows_core::Result<()>;
    fn GetData(&self) -> windows_core::Result<*mut super::super::System::Com::SAFEARRAY>;
    fn GetStringData(&self) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IESEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IESEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESEvent_Vtbl
    where
        Identity: IESEvent_Impl,
    {
        unsafe extern "system" fn GetEventId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdweventid: *mut u32) -> windows_core::HRESULT
        where
            Identity: IESEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESEvent_Impl::GetEventId(this) {
                Ok(ok__) => {
                    pdweventid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEventType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguideventtype: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IESEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESEvent_Impl::GetEventType(this) {
                Ok(ok__) => {
                    pguideventtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetCompletionStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwresult: u32) -> windows_core::HRESULT
        where
            Identity: IESEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEvent_Impl::SetCompletionStatus(this, core::mem::transmute_copy(&dwresult)).into()
        }
        unsafe extern "system" fn GetData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbdata: *mut *mut super::super::System::Com::SAFEARRAY) -> windows_core::HRESULT
        where
            Identity: IESEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESEvent_Impl::GetData(this) {
                Ok(ok__) => {
                    pbdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStringData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrdata: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IESEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IESEvent_Impl::GetStringData(this) {
                Ok(ok__) => {
                    pbstrdata.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventId: GetEventId::<Identity, OFFSET>,
            GetEventType: GetEventType::<Identity, OFFSET>,
            SetCompletionStatus: SetCompletionStatus::<Identity, OFFSET>,
            GetData: GetData::<Identity, OFFSET>,
            GetStringData: GetStringData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESEvent as windows_core::Interface>::IID
    }
}
pub trait IESEvents_Impl: Sized {
    fn OnESEventReceived(&self, guideventtype: &windows_core::GUID, pesevent: Option<&IESEvent>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IESEvents {}
impl IESEvents_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IESEvents_Vtbl
    where
        Identity: IESEvents_Impl,
    {
        unsafe extern "system" fn OnESEventReceived<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guideventtype: windows_core::GUID, pesevent: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IESEvents_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IESEvents_Impl::OnESEventReceived(this, core::mem::transmute(&guideventtype), windows_core::from_raw_borrowed(&pesevent)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnESEventReceived: OnESEventReceived::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IESEvents as windows_core::Interface>::IID
    }
}
pub trait IEncoderAPI_Impl: Sized {
    fn IsSupported(&self, api: *const windows_core::GUID) -> windows_core::Result<()>;
    fn IsAvailable(&self, api: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetParameterRange(&self, api: *const windows_core::GUID, valuemin: *mut windows_core::VARIANT, valuemax: *mut windows_core::VARIANT, steppingdelta: *mut windows_core::VARIANT) -> windows_core::Result<()>;
    fn GetParameterValues(&self, api: *const windows_core::GUID, values: *mut *mut windows_core::VARIANT, valuescount: *mut u32) -> windows_core::Result<()>;
    fn GetDefaultValue(&self, api: *const windows_core::GUID) -> windows_core::Result<windows_core::VARIANT>;
    fn GetValue(&self, api: *const windows_core::GUID) -> windows_core::Result<windows_core::VARIANT>;
    fn SetValue(&self, api: *const windows_core::GUID, value: *const windows_core::VARIANT) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IEncoderAPI {}
impl IEncoderAPI_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEncoderAPI_Vtbl
    where
        Identity: IEncoderAPI_Impl,
    {
        unsafe extern "system" fn IsSupported<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEncoderAPI_Impl::IsSupported(this, core::mem::transmute_copy(&api)).into()
        }
        unsafe extern "system" fn IsAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEncoderAPI_Impl::IsAvailable(this, core::mem::transmute_copy(&api)).into()
        }
        unsafe extern "system" fn GetParameterRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID, valuemin: *mut core::mem::MaybeUninit<windows_core::VARIANT>, valuemax: *mut core::mem::MaybeUninit<windows_core::VARIANT>, steppingdelta: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEncoderAPI_Impl::GetParameterRange(this, core::mem::transmute_copy(&api), core::mem::transmute_copy(&valuemin), core::mem::transmute_copy(&valuemax), core::mem::transmute_copy(&steppingdelta)).into()
        }
        unsafe extern "system" fn GetParameterValues<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID, values: *mut *mut windows_core::VARIANT, valuescount: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEncoderAPI_Impl::GetParameterValues(this, core::mem::transmute_copy(&api), core::mem::transmute_copy(&values), core::mem::transmute_copy(&valuescount)).into()
        }
        unsafe extern "system" fn GetDefaultValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID, value: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEncoderAPI_Impl::GetDefaultValue(this, core::mem::transmute_copy(&api)) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID, value: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEncoderAPI_Impl::GetValue(this, core::mem::transmute_copy(&api)) {
                Ok(ok__) => {
                    value.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetValue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *const windows_core::GUID, value: *const core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IEncoderAPI_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEncoderAPI_Impl::SetValue(this, core::mem::transmute_copy(&api), core::mem::transmute_copy(&value)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsSupported: IsSupported::<Identity, OFFSET>,
            IsAvailable: IsAvailable::<Identity, OFFSET>,
            GetParameterRange: GetParameterRange::<Identity, OFFSET>,
            GetParameterValues: GetParameterValues::<Identity, OFFSET>,
            GetDefaultValue: GetDefaultValue::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
            SetValue: SetValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEncoderAPI as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumFilters_Impl: Sized {
    fn Next(&self, cfilters: u32, ppfilter: *mut Option<IBaseFilter>, pcfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, cfilters: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumFilters>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumFilters {}
#[cfg(feature = "Win32_System_Com")]
impl IEnumFilters_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumFilters_Vtbl
    where
        Identity: IEnumFilters_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cfilters: u32, ppfilter: *mut *mut core::ffi::c_void, pcfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumFilters_Impl::Next(this, core::mem::transmute_copy(&cfilters), core::mem::transmute_copy(&ppfilter), core::mem::transmute_copy(&pcfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cfilters: u32) -> windows_core::HRESULT
        where
            Identity: IEnumFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumFilters_Impl::Skip(this, core::mem::transmute_copy(&cfilters)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumFilters_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: IEnumFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumFilters_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 == &<IEnumFilters as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IEnumMediaTypes_Impl: Sized {
    fn Next(&self, cmediatypes: u32, ppmediatypes: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE, pcfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, cmediatypes: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumMediaTypes>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IEnumMediaTypes {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IEnumMediaTypes_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumMediaTypes_Vtbl
    where
        Identity: IEnumMediaTypes_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmediatypes: u32, ppmediatypes: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE, pcfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumMediaTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumMediaTypes_Impl::Next(this, core::mem::transmute_copy(&cmediatypes), core::mem::transmute_copy(&ppmediatypes), core::mem::transmute_copy(&pcfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmediatypes: u32) -> windows_core::HRESULT
        where
            Identity: IEnumMediaTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumMediaTypes_Impl::Skip(this, core::mem::transmute_copy(&cmediatypes)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumMediaTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumMediaTypes_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: IEnumMediaTypes_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumMediaTypes_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 == &<IEnumMediaTypes as windows_core::Interface>::IID
    }
}
pub trait IEnumPIDMap_Impl: Sized {
    fn Next(&self, crequest: u32, ppidmap: *mut PID_MAP, pcreceived: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, crecords: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumPIDMap>;
}
impl windows_core::RuntimeName for IEnumPIDMap {}
impl IEnumPIDMap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumPIDMap_Vtbl
    where
        Identity: IEnumPIDMap_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, crequest: u32, ppidmap: *mut PID_MAP, pcreceived: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumPIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPIDMap_Impl::Next(this, core::mem::transmute_copy(&crequest), core::mem::transmute_copy(&ppidmap), core::mem::transmute_copy(&pcreceived))
        }
        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: IEnumPIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPIDMap_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: IEnumPIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPIDMap_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumpidmap: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumPIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumPIDMap_Impl::Clone(this) {
                Ok(ok__) => {
                    ppienumpidmap.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 == &<IEnumPIDMap as windows_core::Interface>::IID
    }
}
pub trait IEnumPins_Impl: Sized {
    fn Next(&self, cpins: u32, pppins: *mut Option<IPin>, pcfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, cpins: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumPins>;
}
impl windows_core::RuntimeName for IEnumPins {}
impl IEnumPins_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumPins_Vtbl
    where
        Identity: IEnumPins_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cpins: u32, pppins: *mut *mut core::ffi::c_void, pcfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumPins_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPins_Impl::Next(this, core::mem::transmute_copy(&cpins), core::mem::transmute_copy(&pppins), core::mem::transmute_copy(&pcfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cpins: u32) -> windows_core::HRESULT
        where
            Identity: IEnumPins_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPins_Impl::Skip(this, core::mem::transmute_copy(&cpins)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumPins_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumPins_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: IEnumPins_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumPins_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 == &<IEnumPins as windows_core::Interface>::IID
    }
}
pub trait IEnumRegFilters_Impl: Sized {
    fn Next(&self, cfilters: u32, apregfilter: *mut *mut REGFILTER, pcfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, cfilters: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumRegFilters>;
}
impl windows_core::RuntimeName for IEnumRegFilters {}
impl IEnumRegFilters_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumRegFilters_Vtbl
    where
        Identity: IEnumRegFilters_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cfilters: u32, apregfilter: *mut *mut REGFILTER, pcfetched: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumRegFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumRegFilters_Impl::Next(this, core::mem::transmute_copy(&cfilters), core::mem::transmute_copy(&apregfilter), core::mem::transmute_copy(&pcfetched))
        }
        unsafe extern "system" fn Skip<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cfilters: u32) -> windows_core::HRESULT
        where
            Identity: IEnumRegFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumRegFilters_Impl::Skip(this, core::mem::transmute_copy(&cfilters)).into()
        }
        unsafe extern "system" fn Reset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumRegFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumRegFilters_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: IEnumRegFilters_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumRegFilters_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 == &<IEnumRegFilters as windows_core::Interface>::IID
    }
}
pub trait IEnumStreamIdMap_Impl: Sized {
    fn Next(&self, crequest: u32, pstreamidmap: *mut STREAM_ID_MAP, 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<IEnumStreamIdMap>;
}
impl windows_core::RuntimeName for IEnumStreamIdMap {}
impl IEnumStreamIdMap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IEnumStreamIdMap_Vtbl
    where
        Identity: IEnumStreamIdMap_Impl,
    {
        unsafe extern "system" fn Next<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, crequest: u32, pstreamidmap: *mut STREAM_ID_MAP, pcreceived: *mut u32) -> windows_core::HRESULT
        where
            Identity: IEnumStreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumStreamIdMap_Impl::Next(this, core::mem::transmute_copy(&crequest), core::mem::transmute_copy(&pstreamidmap), 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: IEnumStreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumStreamIdMap_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: IEnumStreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IEnumStreamIdMap_Impl::Reset(this).into()
        }
        unsafe extern "system" fn Clone<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumstreamidmap: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IEnumStreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IEnumStreamIdMap_Impl::Clone(this) {
                Ok(ok__) => {
                    ppienumstreamidmap.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 == &<IEnumStreamIdMap as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IFileSinkFilter_Impl: Sized {
    fn SetFileName(&self, pszfilename: &windows_core::PCWSTR, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn GetCurFile(&self, ppszfilename: *mut windows_core::PWSTR, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IFileSinkFilter {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IFileSinkFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSinkFilter_Vtbl
    where
        Identity: IFileSinkFilter_Impl,
    {
        unsafe extern "system" fn SetFileName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: windows_core::PCWSTR, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IFileSinkFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSinkFilter_Impl::SetFileName(this, core::mem::transmute(&pszfilename), core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn GetCurFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszfilename: *mut windows_core::PWSTR, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IFileSinkFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSinkFilter_Impl::GetCurFile(this, core::mem::transmute_copy(&ppszfilename), core::mem::transmute_copy(&pmt)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFileName: SetFileName::<Identity, OFFSET>,
            GetCurFile: GetCurFile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSinkFilter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IFileSinkFilter2_Impl: Sized + IFileSinkFilter_Impl {
    fn SetMode(&self, dwflags: u32) -> windows_core::Result<()>;
    fn GetMode(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IFileSinkFilter2 {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IFileSinkFilter2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSinkFilter2_Vtbl
    where
        Identity: IFileSinkFilter2_Impl,
    {
        unsafe extern "system" fn SetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IFileSinkFilter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSinkFilter2_Impl::SetMode(this, core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFileSinkFilter2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFileSinkFilter2_Impl::GetMode(this) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IFileSinkFilter_Vtbl::new::<Identity, OFFSET>(), SetMode: SetMode::<Identity, OFFSET>, GetMode: GetMode::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSinkFilter2 as windows_core::Interface>::IID || iid == &<IFileSinkFilter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IFileSourceFilter_Impl: Sized {
    fn Load(&self, pszfilename: &windows_core::PCWSTR, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn GetCurFile(&self, ppszfilename: *mut windows_core::PWSTR, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IFileSourceFilter {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IFileSourceFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFileSourceFilter_Vtbl
    where
        Identity: IFileSourceFilter_Impl,
    {
        unsafe extern "system" fn Load<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: windows_core::PCWSTR, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IFileSourceFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSourceFilter_Impl::Load(this, core::mem::transmute(&pszfilename), core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn GetCurFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszfilename: *mut windows_core::PWSTR, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IFileSourceFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFileSourceFilter_Impl::GetCurFile(this, core::mem::transmute_copy(&ppszfilename), core::mem::transmute_copy(&pmt)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Load: Load::<Identity, OFFSET>, GetCurFile: GetCurFile::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSourceFilter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFilterChain_Impl: Sized {
    fn StartChain(&self, pstartfilter: Option<&IBaseFilter>, pendfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn PauseChain(&self, pstartfilter: Option<&IBaseFilter>, pendfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn StopChain(&self, pstartfilter: Option<&IBaseFilter>, pendfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn RemoveChain(&self, pstartfilter: Option<&IBaseFilter>, pendfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFilterChain {}
#[cfg(feature = "Win32_System_Com")]
impl IFilterChain_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterChain_Vtbl
    where
        Identity: IFilterChain_Impl,
    {
        unsafe extern "system" fn StartChain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstartfilter: *mut core::ffi::c_void, pendfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterChain_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterChain_Impl::StartChain(this, windows_core::from_raw_borrowed(&pstartfilter), windows_core::from_raw_borrowed(&pendfilter)).into()
        }
        unsafe extern "system" fn PauseChain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstartfilter: *mut core::ffi::c_void, pendfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterChain_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterChain_Impl::PauseChain(this, windows_core::from_raw_borrowed(&pstartfilter), windows_core::from_raw_borrowed(&pendfilter)).into()
        }
        unsafe extern "system" fn StopChain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstartfilter: *mut core::ffi::c_void, pendfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterChain_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterChain_Impl::StopChain(this, windows_core::from_raw_borrowed(&pstartfilter), windows_core::from_raw_borrowed(&pendfilter)).into()
        }
        unsafe extern "system" fn RemoveChain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstartfilter: *mut core::ffi::c_void, pendfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterChain_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterChain_Impl::RemoveChain(this, windows_core::from_raw_borrowed(&pstartfilter), windows_core::from_raw_borrowed(&pendfilter)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartChain: StartChain::<Identity, OFFSET>,
            PauseChain: PauseChain::<Identity, OFFSET>,
            StopChain: StopChain::<Identity, OFFSET>,
            RemoveChain: RemoveChain::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterChain as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IFilterGraph_Impl: Sized {
    fn AddFilter(&self, pfilter: Option<&IBaseFilter>, pname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn RemoveFilter(&self, pfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn EnumFilters(&self) -> windows_core::Result<IEnumFilters>;
    fn FindFilterByName(&self, pname: &windows_core::PCWSTR) -> windows_core::Result<IBaseFilter>;
    fn ConnectDirect(&self, ppinout: Option<&IPin>, ppinin: Option<&IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn Reconnect(&self, ppin: Option<&IPin>) -> windows_core::Result<()>;
    fn Disconnect(&self, ppin: Option<&IPin>) -> windows_core::Result<()>;
    fn SetDefaultSyncSource(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IFilterGraph {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IFilterGraph_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterGraph_Vtbl
    where
        Identity: IFilterGraph_Impl,
    {
        unsafe extern "system" fn AddFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void, pname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph_Impl::AddFilter(this, windows_core::from_raw_borrowed(&pfilter), core::mem::transmute(&pname)).into()
        }
        unsafe extern "system" fn RemoveFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph_Impl::RemoveFilter(this, windows_core::from_raw_borrowed(&pfilter)).into()
        }
        unsafe extern "system" fn EnumFilters<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: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterGraph_Impl::EnumFilters(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FindFilterByName<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pname: windows_core::PCWSTR, ppfilter: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterGraph_Impl::FindFilterByName(this, core::mem::transmute(&pname)) {
                Ok(ok__) => {
                    ppfilter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectDirect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinout: *mut core::ffi::c_void, ppinin: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph_Impl::ConnectDirect(this, windows_core::from_raw_borrowed(&ppinout), windows_core::from_raw_borrowed(&ppinin), core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn Reconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph_Impl::Reconnect(this, windows_core::from_raw_borrowed(&ppin)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph_Impl::Disconnect(this, windows_core::from_raw_borrowed(&ppin)).into()
        }
        unsafe extern "system" fn SetDefaultSyncSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph_Impl::SetDefaultSyncSource(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddFilter: AddFilter::<Identity, OFFSET>,
            RemoveFilter: RemoveFilter::<Identity, OFFSET>,
            EnumFilters: EnumFilters::<Identity, OFFSET>,
            FindFilterByName: FindFilterByName::<Identity, OFFSET>,
            ConnectDirect: ConnectDirect::<Identity, OFFSET>,
            Reconnect: Reconnect::<Identity, OFFSET>,
            Disconnect: Disconnect::<Identity, OFFSET>,
            SetDefaultSyncSource: SetDefaultSyncSource::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterGraph as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IFilterGraph2_Impl: Sized + IGraphBuilder_Impl {
    fn AddSourceFilterForMoniker(&self, pmoniker: Option<&super::super::System::Com::IMoniker>, pctx: Option<&super::super::System::Com::IBindCtx>, lpcwstrfiltername: &windows_core::PCWSTR) -> windows_core::Result<IBaseFilter>;
    fn ReconnectEx(&self, ppin: Option<&IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn RenderEx(&self, ppinout: Option<&IPin>, dwflags: u32, pvcontext: *const u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IFilterGraph2 {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IFilterGraph2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterGraph2_Vtbl
    where
        Identity: IFilterGraph2_Impl,
    {
        unsafe extern "system" fn AddSourceFilterForMoniker<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmoniker: *mut core::ffi::c_void, pctx: *mut core::ffi::c_void, lpcwstrfiltername: windows_core::PCWSTR, ppfilter: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterGraph2_Impl::AddSourceFilterForMoniker(this, windows_core::from_raw_borrowed(&pmoniker), windows_core::from_raw_borrowed(&pctx), core::mem::transmute(&lpcwstrfiltername)) {
                Ok(ok__) => {
                    ppfilter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReconnectEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IFilterGraph2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph2_Impl::ReconnectEx(this, windows_core::from_raw_borrowed(&ppin), core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn RenderEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinout: *mut core::ffi::c_void, dwflags: u32, pvcontext: *const u32) -> windows_core::HRESULT
        where
            Identity: IFilterGraph2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph2_Impl::RenderEx(this, windows_core::from_raw_borrowed(&ppinout), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&pvcontext)).into()
        }
        Self {
            base__: IGraphBuilder_Vtbl::new::<Identity, OFFSET>(),
            AddSourceFilterForMoniker: AddSourceFilterForMoniker::<Identity, OFFSET>,
            ReconnectEx: ReconnectEx::<Identity, OFFSET>,
            RenderEx: RenderEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterGraph2 as windows_core::Interface>::IID || iid == &<IFilterGraph as windows_core::Interface>::IID || iid == &<IGraphBuilder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IFilterGraph3_Impl: Sized + IFilterGraph2_Impl {
    fn SetSyncSourceEx(&self, pclockformostoffiltergraph: Option<&super::IReferenceClock>, pclockforfilter: Option<&super::IReferenceClock>, pfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IFilterGraph3 {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IFilterGraph3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterGraph3_Vtbl
    where
        Identity: IFilterGraph3_Impl,
    {
        unsafe extern "system" fn SetSyncSourceEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclockformostoffiltergraph: *mut core::ffi::c_void, pclockforfilter: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterGraph3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterGraph3_Impl::SetSyncSourceEx(this, windows_core::from_raw_borrowed(&pclockformostoffiltergraph), windows_core::from_raw_borrowed(&pclockforfilter), windows_core::from_raw_borrowed(&pfilter)).into()
        }
        Self { base__: IFilterGraph2_Vtbl::new::<Identity, OFFSET>(), SetSyncSourceEx: SetSyncSourceEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterGraph3 as windows_core::Interface>::IID || iid == &<IFilterGraph as windows_core::Interface>::IID || iid == &<IGraphBuilder as windows_core::Interface>::IID || iid == &<IFilterGraph2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFilterInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn FindPin(&self, strpinid: &windows_core::BSTR) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn VendorInfo(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Filter(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn Pins(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn IsFileSource(&self) -> windows_core::Result<i32>;
    fn Filename(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetFilename(&self, strfilename: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFilterInfo {}
#[cfg(feature = "Win32_System_Com")]
impl IFilterInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterInfo_Vtbl
    where
        Identity: IFilterInfo_Impl,
    {
        unsafe extern "system" fn FindPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strpinid: core::mem::MaybeUninit<windows_core::BSTR>, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::FindPin(this, core::mem::transmute(&strpinid)) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::Name(this) {
                Ok(ok__) => {
                    strname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn VendorInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strvendorinfo: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::VendorInfo(this) {
                Ok(ok__) => {
                    strvendorinfo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Filter<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: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::Filter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Pins<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: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::Pins(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsFileSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbissource: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::IsFileSource(this) {
                Ok(ok__) => {
                    pbissource.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Filename<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstrfilename: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterInfo_Impl::Filename(this) {
                Ok(ok__) => {
                    pstrfilename.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, strfilename: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterInfo_Impl::SetFilename(this, core::mem::transmute(&strfilename)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            FindPin: FindPin::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            VendorInfo: VendorInfo::<Identity, OFFSET>,
            Filter: Filter::<Identity, OFFSET>,
            Pins: Pins::<Identity, OFFSET>,
            IsFileSource: IsFileSource::<Identity, OFFSET>,
            Filename: Filename::<Identity, OFFSET>,
            SetFilename: SetFilename::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterInfo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IFilterMapper_Impl: Sized {
    fn RegisterFilter(&self, clsid: &windows_core::GUID, name: &windows_core::PCWSTR, dwmerit: u32) -> windows_core::Result<()>;
    fn RegisterFilterInstance(&self, clsid: &windows_core::GUID, name: &windows_core::PCWSTR) -> windows_core::Result<windows_core::GUID>;
    fn RegisterPin(&self, filter: &windows_core::GUID, name: &windows_core::PCWSTR, brendered: super::super::Foundation::BOOL, boutput: super::super::Foundation::BOOL, bzero: super::super::Foundation::BOOL, bmany: super::super::Foundation::BOOL, connectstofilter: &windows_core::GUID, connectstopin: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn RegisterPinType(&self, clsfilter: &windows_core::GUID, strname: &windows_core::PCWSTR, clsmajortype: &windows_core::GUID, clssubtype: &windows_core::GUID) -> windows_core::Result<()>;
    fn UnregisterFilter(&self, filter: &windows_core::GUID) -> windows_core::Result<()>;
    fn UnregisterFilterInstance(&self, mrid: &windows_core::GUID) -> windows_core::Result<()>;
    fn UnregisterPin(&self, filter: &windows_core::GUID, name: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EnumMatchingFilters(&self, ppenum: *mut Option<IEnumRegFilters>, dwmerit: u32, binputneeded: super::super::Foundation::BOOL, clsinmaj: &windows_core::GUID, clsinsub: &windows_core::GUID, brender: super::super::Foundation::BOOL, boututneeded: super::super::Foundation::BOOL, clsoutmaj: &windows_core::GUID, clsoutsub: &windows_core::GUID) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFilterMapper {}
impl IFilterMapper_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterMapper_Vtbl
    where
        Identity: IFilterMapper_Impl,
    {
        unsafe extern "system" fn RegisterFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: windows_core::GUID, name: windows_core::PCWSTR, dwmerit: u32) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::RegisterFilter(this, core::mem::transmute(&clsid), core::mem::transmute(&name), core::mem::transmute_copy(&dwmerit)).into()
        }
        unsafe extern "system" fn RegisterFilterInstance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: windows_core::GUID, name: windows_core::PCWSTR, mrid: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterMapper_Impl::RegisterFilterInstance(this, core::mem::transmute(&clsid), core::mem::transmute(&name)) {
                Ok(ok__) => {
                    mrid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filter: windows_core::GUID, name: windows_core::PCWSTR, brendered: super::super::Foundation::BOOL, boutput: super::super::Foundation::BOOL, bzero: super::super::Foundation::BOOL, bmany: super::super::Foundation::BOOL, connectstofilter: windows_core::GUID, connectstopin: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::RegisterPin(this, core::mem::transmute(&filter), core::mem::transmute(&name), core::mem::transmute_copy(&brendered), core::mem::transmute_copy(&boutput), core::mem::transmute_copy(&bzero), core::mem::transmute_copy(&bmany), core::mem::transmute(&connectstofilter), core::mem::transmute(&connectstopin)).into()
        }
        unsafe extern "system" fn RegisterPinType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsfilter: windows_core::GUID, strname: windows_core::PCWSTR, clsmajortype: windows_core::GUID, clssubtype: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::RegisterPinType(this, core::mem::transmute(&clsfilter), core::mem::transmute(&strname), core::mem::transmute(&clsmajortype), core::mem::transmute(&clssubtype)).into()
        }
        unsafe extern "system" fn UnregisterFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filter: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::UnregisterFilter(this, core::mem::transmute(&filter)).into()
        }
        unsafe extern "system" fn UnregisterFilterInstance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mrid: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::UnregisterFilterInstance(this, core::mem::transmute(&mrid)).into()
        }
        unsafe extern "system" fn UnregisterPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, filter: windows_core::GUID, name: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::UnregisterPin(this, core::mem::transmute(&filter), core::mem::transmute(&name)).into()
        }
        unsafe extern "system" fn EnumMatchingFilters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void, dwmerit: u32, binputneeded: super::super::Foundation::BOOL, clsinmaj: windows_core::GUID, clsinsub: windows_core::GUID, brender: super::super::Foundation::BOOL, boututneeded: super::super::Foundation::BOOL, clsoutmaj: windows_core::GUID, clsoutsub: windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper_Impl::EnumMatchingFilters(this, core::mem::transmute_copy(&ppenum), core::mem::transmute_copy(&dwmerit), core::mem::transmute_copy(&binputneeded), core::mem::transmute(&clsinmaj), core::mem::transmute(&clsinsub), core::mem::transmute_copy(&brender), core::mem::transmute_copy(&boututneeded), core::mem::transmute(&clsoutmaj), core::mem::transmute(&clsoutsub)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterFilter: RegisterFilter::<Identity, OFFSET>,
            RegisterFilterInstance: RegisterFilterInstance::<Identity, OFFSET>,
            RegisterPin: RegisterPin::<Identity, OFFSET>,
            RegisterPinType: RegisterPinType::<Identity, OFFSET>,
            UnregisterFilter: UnregisterFilter::<Identity, OFFSET>,
            UnregisterFilterInstance: UnregisterFilterInstance::<Identity, OFFSET>,
            UnregisterPin: UnregisterPin::<Identity, OFFSET>,
            EnumMatchingFilters: EnumMatchingFilters::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterMapper as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFilterMapper2_Impl: Sized {
    fn CreateCategory(&self, clsidcategory: *const windows_core::GUID, dwcategorymerit: u32, description: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn UnregisterFilter(&self, pclsidcategory: *const windows_core::GUID, szinstance: &windows_core::PCWSTR, filter: *const windows_core::GUID) -> windows_core::Result<()>;
    fn RegisterFilter(&self, clsidfilter: *const windows_core::GUID, name: &windows_core::PCWSTR, ppmoniker: *mut Option<super::super::System::Com::IMoniker>, pclsidcategory: *const windows_core::GUID, szinstance: &windows_core::PCWSTR, prf2: *const REGFILTER2) -> windows_core::Result<()>;
    fn EnumMatchingFilters(&self, ppenum: *mut Option<super::super::System::Com::IEnumMoniker>, dwflags: u32, bexactmatch: super::super::Foundation::BOOL, dwmerit: u32, binputneeded: super::super::Foundation::BOOL, cinputtypes: u32, pinputtypes: *const windows_core::GUID, pmedin: *const REGPINMEDIUM, ppincategoryin: *const windows_core::GUID, brender: super::super::Foundation::BOOL, boutputneeded: super::super::Foundation::BOOL, coutputtypes: u32, poutputtypes: *const windows_core::GUID, pmedout: *const REGPINMEDIUM, ppincategoryout: *const windows_core::GUID) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFilterMapper2 {}
#[cfg(feature = "Win32_System_Com")]
impl IFilterMapper2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterMapper2_Vtbl
    where
        Identity: IFilterMapper2_Impl,
    {
        unsafe extern "system" fn CreateCategory<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidcategory: *const windows_core::GUID, dwcategorymerit: u32, description: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IFilterMapper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper2_Impl::CreateCategory(this, core::mem::transmute_copy(&clsidcategory), core::mem::transmute_copy(&dwcategorymerit), core::mem::transmute(&description)).into()
        }
        unsafe extern "system" fn UnregisterFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclsidcategory: *const windows_core::GUID, szinstance: windows_core::PCWSTR, filter: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper2_Impl::UnregisterFilter(this, core::mem::transmute_copy(&pclsidcategory), core::mem::transmute(&szinstance), core::mem::transmute_copy(&filter)).into()
        }
        unsafe extern "system" fn RegisterFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidfilter: *const windows_core::GUID, name: windows_core::PCWSTR, ppmoniker: *mut *mut core::ffi::c_void, pclsidcategory: *const windows_core::GUID, szinstance: windows_core::PCWSTR, prf2: *const REGFILTER2) -> windows_core::HRESULT
        where
            Identity: IFilterMapper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper2_Impl::RegisterFilter(this, core::mem::transmute_copy(&clsidfilter), core::mem::transmute(&name), core::mem::transmute_copy(&ppmoniker), core::mem::transmute_copy(&pclsidcategory), core::mem::transmute(&szinstance), core::mem::transmute_copy(&prf2)).into()
        }
        unsafe extern "system" fn EnumMatchingFilters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void, dwflags: u32, bexactmatch: super::super::Foundation::BOOL, dwmerit: u32, binputneeded: super::super::Foundation::BOOL, cinputtypes: u32, pinputtypes: *const windows_core::GUID, pmedin: *const REGPINMEDIUM, ppincategoryin: *const windows_core::GUID, brender: super::super::Foundation::BOOL, boutputneeded: super::super::Foundation::BOOL, coutputtypes: u32, poutputtypes: *const windows_core::GUID, pmedout: *const REGPINMEDIUM, ppincategoryout: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IFilterMapper2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFilterMapper2_Impl::EnumMatchingFilters(
                this,
                core::mem::transmute_copy(&ppenum),
                core::mem::transmute_copy(&dwflags),
                core::mem::transmute_copy(&bexactmatch),
                core::mem::transmute_copy(&dwmerit),
                core::mem::transmute_copy(&binputneeded),
                core::mem::transmute_copy(&cinputtypes),
                core::mem::transmute_copy(&pinputtypes),
                core::mem::transmute_copy(&pmedin),
                core::mem::transmute_copy(&ppincategoryin),
                core::mem::transmute_copy(&brender),
                core::mem::transmute_copy(&boutputneeded),
                core::mem::transmute_copy(&coutputtypes),
                core::mem::transmute_copy(&poutputtypes),
                core::mem::transmute_copy(&pmedout),
                core::mem::transmute_copy(&ppincategoryout),
            )
            .into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateCategory: CreateCategory::<Identity, OFFSET>,
            UnregisterFilter: UnregisterFilter::<Identity, OFFSET>,
            RegisterFilter: RegisterFilter::<Identity, OFFSET>,
            EnumMatchingFilters: EnumMatchingFilters::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterMapper2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFilterMapper3_Impl: Sized + IFilterMapper2_Impl {
    fn GetICreateDevEnum(&self) -> windows_core::Result<ICreateDevEnum>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFilterMapper3 {}
#[cfg(feature = "Win32_System_Com")]
impl IFilterMapper3_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFilterMapper3_Vtbl
    where
        Identity: IFilterMapper3_Impl,
    {
        unsafe extern "system" fn GetICreateDevEnum<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: IFilterMapper3_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFilterMapper3_Impl::GetICreateDevEnum(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IFilterMapper2_Vtbl::new::<Identity, OFFSET>(), GetICreateDevEnum: GetICreateDevEnum::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFilterMapper3 as windows_core::Interface>::IID || iid == &<IFilterMapper2 as windows_core::Interface>::IID
    }
}
pub trait IFrequencyMap_Impl: Sized {
    fn get_FrequencyMapping(&self, ulcount: *mut u32, ppullist: *mut *mut u32) -> windows_core::Result<()>;
    fn put_FrequencyMapping(&self, ulcount: u32, plist: *const u32) -> windows_core::Result<()>;
    fn CountryCode(&self) -> windows_core::Result<u32>;
    fn SetCountryCode(&self, ulcountrycode: u32) -> windows_core::Result<()>;
    fn get_DefaultFrequencyMapping(&self, ulcountrycode: u32, pulcount: *mut u32, ppullist: *mut *mut u32) -> windows_core::Result<()>;
    fn get_CountryCodeList(&self, pulcount: *mut u32, ppullist: *mut *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFrequencyMap {}
impl IFrequencyMap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFrequencyMap_Vtbl
    where
        Identity: IFrequencyMap_Impl,
    {
        unsafe extern "system" fn get_FrequencyMapping<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcount: *mut u32, ppullist: *mut *mut u32) -> windows_core::HRESULT
        where
            Identity: IFrequencyMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrequencyMap_Impl::get_FrequencyMapping(this, core::mem::transmute_copy(&ulcount), core::mem::transmute_copy(&ppullist)).into()
        }
        unsafe extern "system" fn put_FrequencyMapping<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcount: u32, plist: *const u32) -> windows_core::HRESULT
        where
            Identity: IFrequencyMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrequencyMap_Impl::put_FrequencyMapping(this, core::mem::transmute_copy(&ulcount), core::mem::transmute_copy(&plist)).into()
        }
        unsafe extern "system" fn CountryCode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcountrycode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IFrequencyMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFrequencyMap_Impl::CountryCode(this) {
                Ok(ok__) => {
                    pulcountrycode.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, ulcountrycode: u32) -> windows_core::HRESULT
        where
            Identity: IFrequencyMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrequencyMap_Impl::SetCountryCode(this, core::mem::transmute_copy(&ulcountrycode)).into()
        }
        unsafe extern "system" fn get_DefaultFrequencyMapping<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcountrycode: u32, pulcount: *mut u32, ppullist: *mut *mut u32) -> windows_core::HRESULT
        where
            Identity: IFrequencyMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrequencyMap_Impl::get_DefaultFrequencyMapping(this, core::mem::transmute_copy(&ulcountrycode), core::mem::transmute_copy(&pulcount), core::mem::transmute_copy(&ppullist)).into()
        }
        unsafe extern "system" fn get_CountryCodeList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pulcount: *mut u32, ppullist: *mut *mut u32) -> windows_core::HRESULT
        where
            Identity: IFrequencyMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFrequencyMap_Impl::get_CountryCodeList(this, core::mem::transmute_copy(&pulcount), core::mem::transmute_copy(&ppullist)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_FrequencyMapping: get_FrequencyMapping::<Identity, OFFSET>,
            put_FrequencyMapping: put_FrequencyMapping::<Identity, OFFSET>,
            CountryCode: CountryCode::<Identity, OFFSET>,
            SetCountryCode: SetCountryCode::<Identity, OFFSET>,
            get_DefaultFrequencyMapping: get_DefaultFrequencyMapping::<Identity, OFFSET>,
            get_CountryCodeList: get_CountryCodeList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFrequencyMap as windows_core::Interface>::IID
    }
}
pub trait IFullScreenVideo_Impl: Sized {
    fn CountModes(&self) -> windows_core::Result<i32>;
    fn GetModeInfo(&self, mode: i32, pwidth: *mut i32, pheight: *mut i32, pdepth: *mut i32) -> windows_core::Result<()>;
    fn GetCurrentMode(&self) -> windows_core::Result<i32>;
    fn IsModeAvailable(&self, mode: i32) -> windows_core::Result<()>;
    fn IsModeEnabled(&self, mode: i32) -> windows_core::Result<()>;
    fn SetEnabled(&self, mode: i32, benabled: i32) -> windows_core::Result<()>;
    fn GetClipFactor(&self) -> windows_core::Result<i32>;
    fn SetClipFactor(&self, clipfactor: i32) -> windows_core::Result<()>;
    fn SetMessageDrain(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetMessageDrain(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn SetMonitor(&self, monitor: i32) -> windows_core::Result<()>;
    fn GetMonitor(&self) -> windows_core::Result<i32>;
    fn HideOnDeactivate(&self, hide: i32) -> windows_core::Result<()>;
    fn IsHideOnDeactivate(&self) -> windows_core::Result<()>;
    fn SetCaption(&self, strcaption: &windows_core::BSTR) -> windows_core::Result<()>;
    fn GetCaption(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetDefault(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IFullScreenVideo {}
impl IFullScreenVideo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFullScreenVideo_Vtbl
    where
        Identity: IFullScreenVideo_Impl,
    {
        unsafe extern "system" fn CountModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmodes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideo_Impl::CountModes(this) {
                Ok(ok__) => {
                    pmodes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetModeInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: i32, pwidth: *mut i32, pheight: *mut i32, pdepth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::GetModeInfo(this, core::mem::transmute_copy(&mode), core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight), core::mem::transmute_copy(&pdepth)).into()
        }
        unsafe extern "system" fn GetCurrentMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideo_Impl::GetCurrentMode(this) {
                Ok(ok__) => {
                    pmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsModeAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::IsModeAvailable(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn IsModeEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::IsModeEnabled(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn SetEnabled<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: i32, benabled: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::SetEnabled(this, core::mem::transmute_copy(&mode), core::mem::transmute_copy(&benabled)).into()
        }
        unsafe extern "system" fn GetClipFactor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclipfactor: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideo_Impl::GetClipFactor(this) {
                Ok(ok__) => {
                    pclipfactor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetClipFactor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clipfactor: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::SetClipFactor(this, core::mem::transmute_copy(&clipfactor)).into()
        }
        unsafe extern "system" fn SetMessageDrain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::SetMessageDrain(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn GetMessageDrain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideo_Impl::GetMessageDrain(this) {
                Ok(ok__) => {
                    hwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitor: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::SetMonitor(this, core::mem::transmute_copy(&monitor)).into()
        }
        unsafe extern "system" fn GetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitor: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideo_Impl::GetMonitor(this) {
                Ok(ok__) => {
                    monitor.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn HideOnDeactivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hide: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::HideOnDeactivate(this, core::mem::transmute_copy(&hide)).into()
        }
        unsafe extern "system" fn IsHideOnDeactivate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::IsHideOnDeactivate(this).into()
        }
        unsafe extern "system" fn SetCaption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strcaption: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::SetCaption(this, core::mem::transmute(&strcaption)).into()
        }
        unsafe extern "system" fn GetCaption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstrcaption: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideo_Impl::GetCaption(this) {
                Ok(ok__) => {
                    pstrcaption.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefault<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideo_Impl::SetDefault(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CountModes: CountModes::<Identity, OFFSET>,
            GetModeInfo: GetModeInfo::<Identity, OFFSET>,
            GetCurrentMode: GetCurrentMode::<Identity, OFFSET>,
            IsModeAvailable: IsModeAvailable::<Identity, OFFSET>,
            IsModeEnabled: IsModeEnabled::<Identity, OFFSET>,
            SetEnabled: SetEnabled::<Identity, OFFSET>,
            GetClipFactor: GetClipFactor::<Identity, OFFSET>,
            SetClipFactor: SetClipFactor::<Identity, OFFSET>,
            SetMessageDrain: SetMessageDrain::<Identity, OFFSET>,
            GetMessageDrain: GetMessageDrain::<Identity, OFFSET>,
            SetMonitor: SetMonitor::<Identity, OFFSET>,
            GetMonitor: GetMonitor::<Identity, OFFSET>,
            HideOnDeactivate: HideOnDeactivate::<Identity, OFFSET>,
            IsHideOnDeactivate: IsHideOnDeactivate::<Identity, OFFSET>,
            SetCaption: SetCaption::<Identity, OFFSET>,
            GetCaption: GetCaption::<Identity, OFFSET>,
            SetDefault: SetDefault::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFullScreenVideo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IFullScreenVideoEx_Impl: Sized + IFullScreenVideo_Impl {
    fn SetAcceleratorTable(&self, hwnd: super::super::Foundation::HWND, haccel: super::super::UI::WindowsAndMessaging::HACCEL) -> windows_core::Result<()>;
    fn GetAcceleratorTable(&self, phwnd: *mut super::super::Foundation::HWND, phaccel: *mut super::super::UI::WindowsAndMessaging::HACCEL) -> windows_core::Result<()>;
    fn KeepPixelAspectRatio(&self, keepaspect: i32) -> windows_core::Result<()>;
    fn IsKeepPixelAspectRatio(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IFullScreenVideoEx {}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IFullScreenVideoEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IFullScreenVideoEx_Vtbl
    where
        Identity: IFullScreenVideoEx_Impl,
    {
        unsafe extern "system" fn SetAcceleratorTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, haccel: super::super::UI::WindowsAndMessaging::HACCEL) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideoEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideoEx_Impl::SetAcceleratorTable(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&haccel)).into()
        }
        unsafe extern "system" fn GetAcceleratorTable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND, phaccel: *mut super::super::UI::WindowsAndMessaging::HACCEL) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideoEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideoEx_Impl::GetAcceleratorTable(this, core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&phaccel)).into()
        }
        unsafe extern "system" fn KeepPixelAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, keepaspect: i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideoEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IFullScreenVideoEx_Impl::KeepPixelAspectRatio(this, core::mem::transmute_copy(&keepaspect)).into()
        }
        unsafe extern "system" fn IsKeepPixelAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkeepaspect: *mut i32) -> windows_core::HRESULT
        where
            Identity: IFullScreenVideoEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IFullScreenVideoEx_Impl::IsKeepPixelAspectRatio(this) {
                Ok(ok__) => {
                    pkeepaspect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IFullScreenVideo_Vtbl::new::<Identity, OFFSET>(),
            SetAcceleratorTable: SetAcceleratorTable::<Identity, OFFSET>,
            GetAcceleratorTable: GetAcceleratorTable::<Identity, OFFSET>,
            KeepPixelAspectRatio: KeepPixelAspectRatio::<Identity, OFFSET>,
            IsKeepPixelAspectRatio: IsKeepPixelAspectRatio::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFullScreenVideoEx as windows_core::Interface>::IID || iid == &<IFullScreenVideo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
pub trait IGetCapabilitiesKey_Impl: Sized {
    fn GetCapabilitiesKey(&self) -> windows_core::Result<super::super::System::Registry::HKEY>;
}
#[cfg(feature = "Win32_System_Registry")]
impl windows_core::RuntimeName for IGetCapabilitiesKey {}
#[cfg(feature = "Win32_System_Registry")]
impl IGetCapabilitiesKey_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGetCapabilitiesKey_Vtbl
    where
        Identity: IGetCapabilitiesKey_Impl,
    {
        unsafe extern "system" fn GetCapabilitiesKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phkey: *mut super::super::System::Registry::HKEY) -> windows_core::HRESULT
        where
            Identity: IGetCapabilitiesKey_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGetCapabilitiesKey_Impl::GetCapabilitiesKey(this) {
                Ok(ok__) => {
                    phkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCapabilitiesKey: GetCapabilitiesKey::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGetCapabilitiesKey as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IGraphBuilder_Impl: Sized + IFilterGraph_Impl {
    fn Connect(&self, ppinout: Option<&IPin>, ppinin: Option<&IPin>) -> windows_core::Result<()>;
    fn Render(&self, ppinout: Option<&IPin>) -> windows_core::Result<()>;
    fn RenderFile(&self, lpcwstrfile: &windows_core::PCWSTR, lpcwstrplaylist: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddSourceFilter(&self, lpcwstrfilename: &windows_core::PCWSTR, lpcwstrfiltername: &windows_core::PCWSTR) -> windows_core::Result<IBaseFilter>;
    fn SetLogFile(&self, hfile: usize) -> windows_core::Result<()>;
    fn Abort(&self) -> windows_core::Result<()>;
    fn ShouldOperationContinue(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IGraphBuilder {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IGraphBuilder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGraphBuilder_Vtbl
    where
        Identity: IGraphBuilder_Impl,
    {
        unsafe extern "system" fn Connect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinout: *mut core::ffi::c_void, ppinin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphBuilder_Impl::Connect(this, windows_core::from_raw_borrowed(&ppinout), windows_core::from_raw_borrowed(&ppinin)).into()
        }
        unsafe extern "system" fn Render<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinout: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphBuilder_Impl::Render(this, windows_core::from_raw_borrowed(&ppinout)).into()
        }
        unsafe extern "system" fn RenderFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpcwstrfile: windows_core::PCWSTR, lpcwstrplaylist: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphBuilder_Impl::RenderFile(this, core::mem::transmute(&lpcwstrfile), core::mem::transmute(&lpcwstrplaylist)).into()
        }
        unsafe extern "system" fn AddSourceFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpcwstrfilename: windows_core::PCWSTR, lpcwstrfiltername: windows_core::PCWSTR, ppfilter: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGraphBuilder_Impl::AddSourceFilter(this, core::mem::transmute(&lpcwstrfilename), core::mem::transmute(&lpcwstrfiltername)) {
                Ok(ok__) => {
                    ppfilter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLogFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hfile: usize) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphBuilder_Impl::SetLogFile(this, core::mem::transmute_copy(&hfile)).into()
        }
        unsafe extern "system" fn Abort<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphBuilder_Impl::Abort(this).into()
        }
        unsafe extern "system" fn ShouldOperationContinue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphBuilder_Impl::ShouldOperationContinue(this).into()
        }
        Self {
            base__: IFilterGraph_Vtbl::new::<Identity, OFFSET>(),
            Connect: Connect::<Identity, OFFSET>,
            Render: Render::<Identity, OFFSET>,
            RenderFile: RenderFile::<Identity, OFFSET>,
            AddSourceFilter: AddSourceFilter::<Identity, OFFSET>,
            SetLogFile: SetLogFile::<Identity, OFFSET>,
            Abort: Abort::<Identity, OFFSET>,
            ShouldOperationContinue: ShouldOperationContinue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGraphBuilder as windows_core::Interface>::IID || iid == &<IFilterGraph as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IGraphConfig_Impl: Sized {
    fn Reconnect(&self, poutputpin: Option<&IPin>, pinputpin: Option<&IPin>, pmtfirstconnection: *const super::MediaFoundation::AM_MEDIA_TYPE, pusingfilter: Option<&IBaseFilter>, habortevent: super::super::Foundation::HANDLE, dwflags: u32) -> windows_core::Result<()>;
    fn Reconfigure(&self, pcallback: Option<&IGraphConfigCallback>, pvcontext: *const core::ffi::c_void, dwflags: u32, habortevent: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn AddFilterToCache(&self, pfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn EnumCacheFilter(&self) -> windows_core::Result<IEnumFilters>;
    fn RemoveFilterFromCache(&self, pfilter: Option<&IBaseFilter>) -> windows_core::Result<()>;
    fn GetStartTime(&self) -> windows_core::Result<i64>;
    fn PushThroughData(&self, poutputpin: Option<&IPin>, pconnection: Option<&IPinConnection>, heventabort: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn SetFilterFlags(&self, pfilter: Option<&IBaseFilter>, dwflags: u32) -> windows_core::Result<()>;
    fn GetFilterFlags(&self, pfilter: Option<&IBaseFilter>) -> windows_core::Result<u32>;
    fn RemoveFilterEx(&self, pfilter: Option<&IBaseFilter>, flags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IGraphConfig {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IGraphConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGraphConfig_Vtbl
    where
        Identity: IGraphConfig_Impl,
    {
        unsafe extern "system" fn Reconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, poutputpin: *mut core::ffi::c_void, pinputpin: *mut core::ffi::c_void, pmtfirstconnection: *const super::MediaFoundation::AM_MEDIA_TYPE, pusingfilter: *mut core::ffi::c_void, habortevent: super::super::Foundation::HANDLE, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::Reconnect(this, windows_core::from_raw_borrowed(&poutputpin), windows_core::from_raw_borrowed(&pinputpin), core::mem::transmute_copy(&pmtfirstconnection), windows_core::from_raw_borrowed(&pusingfilter), core::mem::transmute_copy(&habortevent), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn Reconfigure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcallback: *mut core::ffi::c_void, pvcontext: *const core::ffi::c_void, dwflags: u32, habortevent: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::Reconfigure(this, windows_core::from_raw_borrowed(&pcallback), core::mem::transmute_copy(&pvcontext), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&habortevent)).into()
        }
        unsafe extern "system" fn AddFilterToCache<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::AddFilterToCache(this, windows_core::from_raw_borrowed(&pfilter)).into()
        }
        unsafe extern "system" fn EnumCacheFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, penum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGraphConfig_Impl::EnumCacheFilter(this) {
                Ok(ok__) => {
                    penum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveFilterFromCache<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::RemoveFilterFromCache(this, windows_core::from_raw_borrowed(&pfilter)).into()
        }
        unsafe extern "system" fn GetStartTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prtstart: *mut i64) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGraphConfig_Impl::GetStartTime(this) {
                Ok(ok__) => {
                    prtstart.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PushThroughData<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, poutputpin: *mut core::ffi::c_void, pconnection: *mut core::ffi::c_void, heventabort: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::PushThroughData(this, windows_core::from_raw_borrowed(&poutputpin), windows_core::from_raw_borrowed(&pconnection), core::mem::transmute_copy(&heventabort)).into()
        }
        unsafe extern "system" fn SetFilterFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::SetFilterFlags(this, windows_core::from_raw_borrowed(&pfilter), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetFilterFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGraphConfig_Impl::GetFilterFlags(this, windows_core::from_raw_borrowed(&pfilter)) {
                Ok(ok__) => {
                    pdwflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RemoveFilterEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT
        where
            Identity: IGraphConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfig_Impl::RemoveFilterEx(this, windows_core::from_raw_borrowed(&pfilter), core::mem::transmute_copy(&flags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Reconnect: Reconnect::<Identity, OFFSET>,
            Reconfigure: Reconfigure::<Identity, OFFSET>,
            AddFilterToCache: AddFilterToCache::<Identity, OFFSET>,
            EnumCacheFilter: EnumCacheFilter::<Identity, OFFSET>,
            RemoveFilterFromCache: RemoveFilterFromCache::<Identity, OFFSET>,
            GetStartTime: GetStartTime::<Identity, OFFSET>,
            PushThroughData: PushThroughData::<Identity, OFFSET>,
            SetFilterFlags: SetFilterFlags::<Identity, OFFSET>,
            GetFilterFlags: GetFilterFlags::<Identity, OFFSET>,
            RemoveFilterEx: RemoveFilterEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGraphConfig as windows_core::Interface>::IID
    }
}
pub trait IGraphConfigCallback_Impl: Sized {
    fn Reconfigure(&self, pvcontext: *mut core::ffi::c_void, dwflags: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IGraphConfigCallback {}
impl IGraphConfigCallback_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGraphConfigCallback_Vtbl
    where
        Identity: IGraphConfigCallback_Impl,
    {
        unsafe extern "system" fn Reconfigure<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvcontext: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IGraphConfigCallback_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IGraphConfigCallback_Impl::Reconfigure(this, core::mem::transmute_copy(&pvcontext), core::mem::transmute_copy(&dwflags)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reconfigure: Reconfigure::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGraphConfigCallback as windows_core::Interface>::IID
    }
}
pub trait IGraphVersion_Impl: Sized {
    fn QueryVersion(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IGraphVersion {}
impl IGraphVersion_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IGraphVersion_Vtbl
    where
        Identity: IGraphVersion_Impl,
    {
        unsafe extern "system" fn QueryVersion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pversion: *mut i32) -> windows_core::HRESULT
        where
            Identity: IGraphVersion_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IGraphVersion_Impl::QueryVersion(this) {
                Ok(ok__) => {
                    pversion.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryVersion: QueryVersion::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGraphVersion as windows_core::Interface>::IID
    }
}
pub trait IIPDVDec_Impl: Sized {
    fn IPDisplay(&self) -> windows_core::Result<i32>;
    fn SetIPDisplay(&self, displaypix: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IIPDVDec {}
impl IIPDVDec_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IIPDVDec_Vtbl
    where
        Identity: IIPDVDec_Impl,
    {
        unsafe extern "system" fn IPDisplay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, displaypix: *mut i32) -> windows_core::HRESULT
        where
            Identity: IIPDVDec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IIPDVDec_Impl::IPDisplay(this) {
                Ok(ok__) => {
                    displaypix.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIPDisplay<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, displaypix: i32) -> windows_core::HRESULT
        where
            Identity: IIPDVDec_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IIPDVDec_Impl::SetIPDisplay(this, core::mem::transmute_copy(&displaypix)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IPDisplay: IPDisplay::<Identity, OFFSET>,
            SetIPDisplay: SetIPDisplay::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIPDVDec as windows_core::Interface>::IID
    }
}
pub trait IMPEG2PIDMap_Impl: Sized {
    fn MapPID(&self, culpid: u32, pulpid: *const u32, mediasamplecontent: MEDIA_SAMPLE_CONTENT) -> windows_core::Result<()>;
    fn UnmapPID(&self, culpid: u32, pulpid: *const u32) -> windows_core::Result<()>;
    fn EnumPIDMap(&self) -> windows_core::Result<IEnumPIDMap>;
}
impl windows_core::RuntimeName for IMPEG2PIDMap {}
impl IMPEG2PIDMap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2PIDMap_Vtbl
    where
        Identity: IMPEG2PIDMap_Impl,
    {
        unsafe extern "system" fn MapPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, culpid: u32, pulpid: *const u32, mediasamplecontent: MEDIA_SAMPLE_CONTENT) -> windows_core::HRESULT
        where
            Identity: IMPEG2PIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2PIDMap_Impl::MapPID(this, core::mem::transmute_copy(&culpid), core::mem::transmute_copy(&pulpid), core::mem::transmute_copy(&mediasamplecontent)).into()
        }
        unsafe extern "system" fn UnmapPID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, culpid: u32, pulpid: *const u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2PIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2PIDMap_Impl::UnmapPID(this, core::mem::transmute_copy(&culpid), core::mem::transmute_copy(&pulpid)).into()
        }
        unsafe extern "system" fn EnumPIDMap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pienumpidmap: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMPEG2PIDMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2PIDMap_Impl::EnumPIDMap(this) {
                Ok(ok__) => {
                    pienumpidmap.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            MapPID: MapPID::<Identity, OFFSET>,
            UnmapPID: UnmapPID::<Identity, OFFSET>,
            EnumPIDMap: EnumPIDMap::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2PIDMap as windows_core::Interface>::IID
    }
}
pub trait IMPEG2StreamIdMap_Impl: Sized {
    fn MapStreamId(&self, ulstreamid: u32, mediasamplecontent: u32, ulsubstreamfiltervalue: u32, idataoffset: i32) -> windows_core::Result<()>;
    fn UnmapStreamId(&self, culstreamid: u32, pulstreamid: *const u32) -> windows_core::Result<()>;
    fn EnumStreamIdMap(&self) -> windows_core::Result<IEnumStreamIdMap>;
}
impl windows_core::RuntimeName for IMPEG2StreamIdMap {}
impl IMPEG2StreamIdMap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMPEG2StreamIdMap_Vtbl
    where
        Identity: IMPEG2StreamIdMap_Impl,
    {
        unsafe extern "system" fn MapStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstreamid: u32, mediasamplecontent: u32, ulsubstreamfiltervalue: u32, idataoffset: i32) -> windows_core::HRESULT
        where
            Identity: IMPEG2StreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2StreamIdMap_Impl::MapStreamId(this, core::mem::transmute_copy(&ulstreamid), core::mem::transmute_copy(&mediasamplecontent), core::mem::transmute_copy(&ulsubstreamfiltervalue), core::mem::transmute_copy(&idataoffset)).into()
        }
        unsafe extern "system" fn UnmapStreamId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, culstreamid: u32, pulstreamid: *const u32) -> windows_core::HRESULT
        where
            Identity: IMPEG2StreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMPEG2StreamIdMap_Impl::UnmapStreamId(this, core::mem::transmute_copy(&culstreamid), core::mem::transmute_copy(&pulstreamid)).into()
        }
        unsafe extern "system" fn EnumStreamIdMap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumstreamidmap: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMPEG2StreamIdMap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMPEG2StreamIdMap_Impl::EnumStreamIdMap(this) {
                Ok(ok__) => {
                    ppienumstreamidmap.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            MapStreamId: MapStreamId::<Identity, OFFSET>,
            UnmapStreamId: UnmapStreamId::<Identity, OFFSET>,
            EnumStreamIdMap: EnumStreamIdMap::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMPEG2StreamIdMap as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaControl_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Run(&self) -> windows_core::Result<()>;
    fn Pause(&self) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
    fn GetState(&self, mstimeout: i32) -> windows_core::Result<i32>;
    fn RenderFile(&self, strfilename: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AddSourceFilter(&self, strfilename: &windows_core::BSTR) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn FilterCollection(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn RegFilterCollection(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn StopWhenReady(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaControl {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaControl_Vtbl
    where
        Identity: IMediaControl_Impl,
    {
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaControl_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: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaControl_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: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaControl_Impl::Stop(this).into()
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mstimeout: i32, pfs: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaControl_Impl::GetState(this, core::mem::transmute_copy(&mstimeout)) {
                Ok(ok__) => {
                    pfs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RenderFile<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strfilename: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaControl_Impl::RenderFile(this, core::mem::transmute(&strfilename)).into()
        }
        unsafe extern "system" fn AddSourceFilter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strfilename: core::mem::MaybeUninit<windows_core::BSTR>, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaControl_Impl::AddSourceFilter(this, core::mem::transmute(&strfilename)) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FilterCollection<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: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaControl_Impl::FilterCollection(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegFilterCollection<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: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaControl_Impl::RegFilterCollection(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StopWhenReady<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaControl_Impl::StopWhenReady(this).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Run: Run::<Identity, OFFSET>,
            Pause: Pause::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            RenderFile: RenderFile::<Identity, OFFSET>,
            AddSourceFilter: AddSourceFilter::<Identity, OFFSET>,
            FilterCollection: FilterCollection::<Identity, OFFSET>,
            RegFilterCollection: RegFilterCollection::<Identity, OFFSET>,
            StopWhenReady: StopWhenReady::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaControl as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaEvent_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn GetEventHandle(&self) -> windows_core::Result<isize>;
    fn GetEvent(&self, leventcode: *mut i32, lparam1: *mut isize, lparam2: *mut isize, mstimeout: i32) -> windows_core::Result<()>;
    fn WaitForCompletion(&self, mstimeout: i32) -> windows_core::Result<i32>;
    fn CancelDefaultHandling(&self, levcode: i32) -> windows_core::Result<()>;
    fn RestoreDefaultHandling(&self, levcode: i32) -> windows_core::Result<()>;
    fn FreeEventParams(&self, levcode: i32, lparam1: isize, lparam2: isize) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaEvent {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaEvent_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaEvent_Vtbl
    where
        Identity: IMediaEvent_Impl,
    {
        unsafe extern "system" fn GetEventHandle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hevent: *mut isize) -> windows_core::HRESULT
        where
            Identity: IMediaEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaEvent_Impl::GetEventHandle(this) {
                Ok(ok__) => {
                    hevent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, leventcode: *mut i32, lparam1: *mut isize, lparam2: *mut isize, mstimeout: i32) -> windows_core::HRESULT
        where
            Identity: IMediaEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEvent_Impl::GetEvent(this, core::mem::transmute_copy(&leventcode), core::mem::transmute_copy(&lparam1), core::mem::transmute_copy(&lparam2), core::mem::transmute_copy(&mstimeout)).into()
        }
        unsafe extern "system" fn WaitForCompletion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mstimeout: i32, pevcode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMediaEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaEvent_Impl::WaitForCompletion(this, core::mem::transmute_copy(&mstimeout)) {
                Ok(ok__) => {
                    pevcode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CancelDefaultHandling<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, levcode: i32) -> windows_core::HRESULT
        where
            Identity: IMediaEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEvent_Impl::CancelDefaultHandling(this, core::mem::transmute_copy(&levcode)).into()
        }
        unsafe extern "system" fn RestoreDefaultHandling<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, levcode: i32) -> windows_core::HRESULT
        where
            Identity: IMediaEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEvent_Impl::RestoreDefaultHandling(this, core::mem::transmute_copy(&levcode)).into()
        }
        unsafe extern "system" fn FreeEventParams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, levcode: i32, lparam1: isize, lparam2: isize) -> windows_core::HRESULT
        where
            Identity: IMediaEvent_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEvent_Impl::FreeEventParams(this, core::mem::transmute_copy(&levcode), core::mem::transmute_copy(&lparam1), core::mem::transmute_copy(&lparam2)).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            GetEventHandle: GetEventHandle::<Identity, OFFSET>,
            GetEvent: GetEvent::<Identity, OFFSET>,
            WaitForCompletion: WaitForCompletion::<Identity, OFFSET>,
            CancelDefaultHandling: CancelDefaultHandling::<Identity, OFFSET>,
            RestoreDefaultHandling: RestoreDefaultHandling::<Identity, OFFSET>,
            FreeEventParams: FreeEventParams::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaEvent as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaEventEx_Impl: Sized + IMediaEvent_Impl {
    fn SetNotifyWindow(&self, hwnd: isize, lmsg: i32, linstancedata: isize) -> windows_core::Result<()>;
    fn SetNotifyFlags(&self, lnonotifyflags: i32) -> windows_core::Result<()>;
    fn GetNotifyFlags(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaEventEx {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaEventEx_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaEventEx_Vtbl
    where
        Identity: IMediaEventEx_Impl,
    {
        unsafe extern "system" fn SetNotifyWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: isize, lmsg: i32, linstancedata: isize) -> windows_core::HRESULT
        where
            Identity: IMediaEventEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEventEx_Impl::SetNotifyWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&lmsg), core::mem::transmute_copy(&linstancedata)).into()
        }
        unsafe extern "system" fn SetNotifyFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lnonotifyflags: i32) -> windows_core::HRESULT
        where
            Identity: IMediaEventEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEventEx_Impl::SetNotifyFlags(this, core::mem::transmute_copy(&lnonotifyflags)).into()
        }
        unsafe extern "system" fn GetNotifyFlags<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplnonotifyflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMediaEventEx_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaEventEx_Impl::GetNotifyFlags(this) {
                Ok(ok__) => {
                    lplnonotifyflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: IMediaEvent_Vtbl::new::<Identity, OFFSET>(),
            SetNotifyWindow: SetNotifyWindow::<Identity, OFFSET>,
            SetNotifyFlags: SetNotifyFlags::<Identity, OFFSET>,
            GetNotifyFlags: GetNotifyFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaEventEx as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IMediaEvent as windows_core::Interface>::IID
    }
}
pub trait IMediaEventSink_Impl: Sized {
    fn Notify(&self, eventcode: i32, eventparam1: isize, eventparam2: isize) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMediaEventSink {}
impl IMediaEventSink_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaEventSink_Vtbl
    where
        Identity: IMediaEventSink_Impl,
    {
        unsafe extern "system" fn Notify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventcode: i32, eventparam1: isize, eventparam2: isize) -> windows_core::HRESULT
        where
            Identity: IMediaEventSink_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaEventSink_Impl::Notify(this, core::mem::transmute_copy(&eventcode), core::mem::transmute_copy(&eventparam1), core::mem::transmute_copy(&eventparam2)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Notify: Notify::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaEventSink as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaFilter_Impl: Sized + super::super::System::Com::IPersist_Impl {
    fn Stop(&self) -> windows_core::Result<()>;
    fn Pause(&self) -> windows_core::Result<()>;
    fn Run(&self, tstart: i64) -> windows_core::Result<()>;
    fn GetState(&self, dwmillisecstimeout: u32) -> windows_core::Result<FILTER_STATE>;
    fn SetSyncSource(&self, pclock: Option<&super::IReferenceClock>) -> windows_core::Result<()>;
    fn GetSyncSource(&self) -> windows_core::Result<super::IReferenceClock>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaFilter {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaFilter_Vtbl
    where
        Identity: IMediaFilter_Impl,
    {
        unsafe extern "system" fn Stop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaFilter_Impl::Stop(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: IMediaFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaFilter_Impl::Pause(this).into()
        }
        unsafe extern "system" fn Run<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tstart: i64) -> windows_core::HRESULT
        where
            Identity: IMediaFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaFilter_Impl::Run(this, core::mem::transmute_copy(&tstart)).into()
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmillisecstimeout: u32, state: *mut FILTER_STATE) -> windows_core::HRESULT
        where
            Identity: IMediaFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaFilter_Impl::GetState(this, core::mem::transmute_copy(&dwmillisecstimeout)) {
                Ok(ok__) => {
                    state.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSyncSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclock: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaFilter_Impl::SetSyncSource(this, windows_core::from_raw_borrowed(&pclock)).into()
        }
        unsafe extern "system" fn GetSyncSource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclock: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaFilter_Impl::GetSyncSource(this) {
                Ok(ok__) => {
                    pclock.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
            Stop: Stop::<Identity, OFFSET>,
            Pause: Pause::<Identity, OFFSET>,
            Run: Run::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            SetSyncSource: SetSyncSource::<Identity, OFFSET>,
            GetSyncSource: GetSyncSource::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaFilter as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
pub trait IMediaParamInfo_Impl: Sized {
    fn GetParamCount(&self) -> windows_core::Result<u32>;
    fn GetParamInfo(&self, dwparamindex: u32, pinfo: *mut MP_PARAMINFO) -> windows_core::Result<()>;
    fn GetParamText(&self, dwparamindex: u32) -> windows_core::Result<*mut u16>;
    fn GetNumTimeFormats(&self) -> windows_core::Result<u32>;
    fn GetSupportedTimeFormat(&self, dwformatindex: u32) -> windows_core::Result<windows_core::GUID>;
    fn GetCurrentTimeFormat(&self, pguidtimeformat: *mut windows_core::GUID, ptimedata: *mut u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMediaParamInfo {}
impl IMediaParamInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaParamInfo_Vtbl
    where
        Identity: IMediaParamInfo_Impl,
    {
        unsafe extern "system" fn GetParamCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwparams: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMediaParamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaParamInfo_Impl::GetParamCount(this) {
                Ok(ok__) => {
                    pdwparams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetParamInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparamindex: u32, pinfo: *mut MP_PARAMINFO) -> windows_core::HRESULT
        where
            Identity: IMediaParamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaParamInfo_Impl::GetParamInfo(this, core::mem::transmute_copy(&dwparamindex), core::mem::transmute_copy(&pinfo)).into()
        }
        unsafe extern "system" fn GetParamText<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparamindex: u32, ppwchtext: *mut *mut u16) -> windows_core::HRESULT
        where
            Identity: IMediaParamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaParamInfo_Impl::GetParamText(this, core::mem::transmute_copy(&dwparamindex)) {
                Ok(ok__) => {
                    ppwchtext.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetNumTimeFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumtimeformats: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMediaParamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaParamInfo_Impl::GetNumTimeFormats(this) {
                Ok(ok__) => {
                    pdwnumtimeformats.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSupportedTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwformatindex: u32, pguidtimeformat: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaParamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaParamInfo_Impl::GetSupportedTimeFormat(this, core::mem::transmute_copy(&dwformatindex)) {
                Ok(ok__) => {
                    pguidtimeformat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidtimeformat: *mut windows_core::GUID, ptimedata: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMediaParamInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaParamInfo_Impl::GetCurrentTimeFormat(this, core::mem::transmute_copy(&pguidtimeformat), core::mem::transmute_copy(&ptimedata)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParamCount: GetParamCount::<Identity, OFFSET>,
            GetParamInfo: GetParamInfo::<Identity, OFFSET>,
            GetParamText: GetParamText::<Identity, OFFSET>,
            GetNumTimeFormats: GetNumTimeFormats::<Identity, OFFSET>,
            GetSupportedTimeFormat: GetSupportedTimeFormat::<Identity, OFFSET>,
            GetCurrentTimeFormat: GetCurrentTimeFormat::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaParamInfo as windows_core::Interface>::IID
    }
}
pub trait IMediaParams_Impl: Sized {
    fn GetParam(&self, dwparamindex: u32) -> windows_core::Result<f32>;
    fn SetParam(&self, dwparamindex: u32, value: f32) -> windows_core::Result<()>;
    fn AddEnvelope(&self, dwparamindex: u32, csegments: u32, penvelopesegments: *const MP_ENVELOPE_SEGMENT) -> windows_core::Result<()>;
    fn FlushEnvelope(&self, dwparamindex: u32, reftimestart: i64, reftimeend: i64) -> windows_core::Result<()>;
    fn SetTimeFormat(&self, guidtimeformat: &windows_core::GUID, mptimedata: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMediaParams {}
impl IMediaParams_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaParams_Vtbl
    where
        Identity: IMediaParams_Impl,
    {
        unsafe extern "system" fn GetParam<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparamindex: u32, pvalue: *mut f32) -> windows_core::HRESULT
        where
            Identity: IMediaParams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaParams_Impl::GetParam(this, core::mem::transmute_copy(&dwparamindex)) {
                Ok(ok__) => {
                    pvalue.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetParam<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparamindex: u32, value: f32) -> windows_core::HRESULT
        where
            Identity: IMediaParams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaParams_Impl::SetParam(this, core::mem::transmute_copy(&dwparamindex), core::mem::transmute_copy(&value)).into()
        }
        unsafe extern "system" fn AddEnvelope<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparamindex: u32, csegments: u32, penvelopesegments: *const MP_ENVELOPE_SEGMENT) -> windows_core::HRESULT
        where
            Identity: IMediaParams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaParams_Impl::AddEnvelope(this, core::mem::transmute_copy(&dwparamindex), core::mem::transmute_copy(&csegments), core::mem::transmute_copy(&penvelopesegments)).into()
        }
        unsafe extern "system" fn FlushEnvelope<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwparamindex: u32, reftimestart: i64, reftimeend: i64) -> windows_core::HRESULT
        where
            Identity: IMediaParams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaParams_Impl::FlushEnvelope(this, core::mem::transmute_copy(&dwparamindex), core::mem::transmute_copy(&reftimestart), core::mem::transmute_copy(&reftimeend)).into()
        }
        unsafe extern "system" fn SetTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidtimeformat: windows_core::GUID, mptimedata: u32) -> windows_core::HRESULT
        where
            Identity: IMediaParams_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaParams_Impl::SetTimeFormat(this, core::mem::transmute(&guidtimeformat), core::mem::transmute_copy(&mptimedata)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParam: GetParam::<Identity, OFFSET>,
            SetParam: SetParam::<Identity, OFFSET>,
            AddEnvelope: AddEnvelope::<Identity, OFFSET>,
            FlushEnvelope: FlushEnvelope::<Identity, OFFSET>,
            SetTimeFormat: SetTimeFormat::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaParams as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaPosition_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Duration(&self) -> windows_core::Result<f64>;
    fn SetCurrentPosition(&self, lltime: f64) -> windows_core::Result<()>;
    fn CurrentPosition(&self) -> windows_core::Result<f64>;
    fn StopTime(&self) -> windows_core::Result<f64>;
    fn SetStopTime(&self, lltime: f64) -> windows_core::Result<()>;
    fn PrerollTime(&self) -> windows_core::Result<f64>;
    fn SetPrerollTime(&self, lltime: f64) -> windows_core::Result<()>;
    fn SetRate(&self, drate: f64) -> windows_core::Result<()>;
    fn Rate(&self) -> windows_core::Result<f64>;
    fn CanSeekForward(&self) -> windows_core::Result<i32>;
    fn CanSeekBackward(&self) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaPosition {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaPosition_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaPosition_Vtbl
    where
        Identity: IMediaPosition_Impl,
    {
        unsafe extern "system" fn Duration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plength: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::Duration(this) {
                Ok(ok__) => {
                    plength.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, lltime: f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaPosition_Impl::SetCurrentPosition(this, core::mem::transmute_copy(&lltime)).into()
        }
        unsafe extern "system" fn CurrentPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plltime: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::CurrentPosition(this) {
                Ok(ok__) => {
                    plltime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn StopTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plltime: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::StopTime(this) {
                Ok(ok__) => {
                    plltime.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, lltime: f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaPosition_Impl::SetStopTime(this, core::mem::transmute_copy(&lltime)).into()
        }
        unsafe extern "system" fn PrerollTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plltime: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::PrerollTime(this) {
                Ok(ok__) => {
                    plltime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetPrerollTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lltime: f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaPosition_Impl::SetPrerollTime(this, core::mem::transmute_copy(&lltime)).into()
        }
        unsafe extern "system" fn SetRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, drate: f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaPosition_Impl::SetRate(this, core::mem::transmute_copy(&drate)).into()
        }
        unsafe extern "system" fn Rate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdrate: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::Rate(this) {
                Ok(ok__) => {
                    pdrate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanSeekForward<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcanseekforward: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::CanSeekForward(this) {
                Ok(ok__) => {
                    pcanseekforward.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CanSeekBackward<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcanseekbackward: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMediaPosition_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaPosition_Impl::CanSeekBackward(this) {
                Ok(ok__) => {
                    pcanseekbackward.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Duration: Duration::<Identity, OFFSET>,
            SetCurrentPosition: SetCurrentPosition::<Identity, OFFSET>,
            CurrentPosition: CurrentPosition::<Identity, OFFSET>,
            StopTime: StopTime::<Identity, OFFSET>,
            SetStopTime: SetStopTime::<Identity, OFFSET>,
            PrerollTime: PrerollTime::<Identity, OFFSET>,
            SetPrerollTime: SetPrerollTime::<Identity, OFFSET>,
            SetRate: SetRate::<Identity, OFFSET>,
            Rate: Rate::<Identity, OFFSET>,
            CanSeekForward: CanSeekForward::<Identity, OFFSET>,
            CanSeekBackward: CanSeekBackward::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaPosition as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IMediaPropertyBag_Impl: Sized + super::super::System::Com::StructuredStorage::IPropertyBag_Impl {
    fn EnumProperty(&self, iproperty: u32, pvarpropertyname: *mut windows_core::VARIANT, pvarpropertyvalue: *mut windows_core::VARIANT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IMediaPropertyBag {}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IMediaPropertyBag_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaPropertyBag_Vtbl
    where
        Identity: IMediaPropertyBag_Impl,
    {
        unsafe extern "system" fn EnumProperty<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, iproperty: u32, pvarpropertyname: *mut core::mem::MaybeUninit<windows_core::VARIANT>, pvarpropertyvalue: *mut core::mem::MaybeUninit<windows_core::VARIANT>) -> windows_core::HRESULT
        where
            Identity: IMediaPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaPropertyBag_Impl::EnumProperty(this, core::mem::transmute_copy(&iproperty), core::mem::transmute_copy(&pvarpropertyname), core::mem::transmute_copy(&pvarpropertyvalue)).into()
        }
        Self {
            base__: super::super::System::Com::StructuredStorage::IPropertyBag_Vtbl::new::<Identity, OFFSET>(),
            EnumProperty: EnumProperty::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaPropertyBag as windows_core::Interface>::IID || iid == &<super::super::System::Com::StructuredStorage::IPropertyBag as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IMediaSample_Impl: Sized {
    fn GetPointer(&self) -> windows_core::Result<*mut u8>;
    fn GetSize(&self) -> i32;
    fn GetTime(&self, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()>;
    fn SetTime(&self, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::Result<()>;
    fn IsSyncPoint(&self) -> windows_core::HRESULT;
    fn SetSyncPoint(&self, bissyncpoint: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn IsPreroll(&self) -> windows_core::HRESULT;
    fn SetPreroll(&self, bispreroll: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetActualDataLength(&self) -> i32;
    fn SetActualDataLength(&self, __midl__imediasample0000: i32) -> windows_core::Result<()>;
    fn GetMediaType(&self) -> windows_core::Result<*mut super::MediaFoundation::AM_MEDIA_TYPE>;
    fn SetMediaType(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn IsDiscontinuity(&self) -> windows_core::HRESULT;
    fn SetDiscontinuity(&self, bdiscontinuity: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetMediaTime(&self, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::Result<()>;
    fn SetMediaTime(&self, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IMediaSample {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IMediaSample_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaSample_Vtbl
    where
        Identity: IMediaSample_Impl,
    {
        unsafe extern "system" fn GetPointer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbuffer: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSample_Impl::GetPointer(this) {
                Ok(ok__) => {
                    ppbuffer.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> i32
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::GetSize(this)
        }
        unsafe extern "system" fn GetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::GetTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn IsSyncPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::IsSyncPoint(this)
        }
        unsafe extern "system" fn SetSyncPoint<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bissyncpoint: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetSyncPoint(this, core::mem::transmute_copy(&bissyncpoint)).into()
        }
        unsafe extern "system" fn IsPreroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::IsPreroll(this)
        }
        unsafe extern "system" fn SetPreroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bispreroll: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetPreroll(this, core::mem::transmute_copy(&bispreroll)).into()
        }
        unsafe extern "system" fn GetActualDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> i32
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::GetActualDataLength(this)
        }
        unsafe extern "system" fn SetActualDataLength<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, __midl__imediasample0000: i32) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetActualDataLength(this, core::mem::transmute_copy(&__midl__imediasample0000)).into()
        }
        unsafe extern "system" fn GetMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmediatype: *mut *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSample_Impl::GetMediaType(this) {
                Ok(ok__) => {
                    ppmediatype.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, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetMediaType(this, core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn IsDiscontinuity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::IsDiscontinuity(this)
        }
        unsafe extern "system" fn SetDiscontinuity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bdiscontinuity: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetDiscontinuity(this, core::mem::transmute_copy(&bdiscontinuity)).into()
        }
        unsafe extern "system" fn GetMediaTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *mut i64, ptimeend: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::GetMediaTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        unsafe extern "system" fn SetMediaTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptimestart: *const i64, ptimeend: *const i64) -> windows_core::HRESULT
        where
            Identity: IMediaSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample_Impl::SetMediaTime(this, core::mem::transmute_copy(&ptimestart), core::mem::transmute_copy(&ptimeend)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPointer: GetPointer::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetTime: GetTime::<Identity, OFFSET>,
            SetTime: SetTime::<Identity, OFFSET>,
            IsSyncPoint: IsSyncPoint::<Identity, OFFSET>,
            SetSyncPoint: SetSyncPoint::<Identity, OFFSET>,
            IsPreroll: IsPreroll::<Identity, OFFSET>,
            SetPreroll: SetPreroll::<Identity, OFFSET>,
            GetActualDataLength: GetActualDataLength::<Identity, OFFSET>,
            SetActualDataLength: SetActualDataLength::<Identity, OFFSET>,
            GetMediaType: GetMediaType::<Identity, OFFSET>,
            SetMediaType: SetMediaType::<Identity, OFFSET>,
            IsDiscontinuity: IsDiscontinuity::<Identity, OFFSET>,
            SetDiscontinuity: SetDiscontinuity::<Identity, OFFSET>,
            GetMediaTime: GetMediaTime::<Identity, OFFSET>,
            SetMediaTime: SetMediaTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaSample as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IMediaSample2_Impl: Sized + IMediaSample_Impl {
    fn GetProperties(&self, cbproperties: u32, pbproperties: *mut u8) -> windows_core::Result<()>;
    fn SetProperties(&self, cbproperties: u32, pbproperties: *const u8) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IMediaSample2 {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IMediaSample2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaSample2_Vtbl
    where
        Identity: IMediaSample2_Impl,
    {
        unsafe extern "system" fn GetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbproperties: u32, pbproperties: *mut u8) -> windows_core::HRESULT
        where
            Identity: IMediaSample2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample2_Impl::GetProperties(this, core::mem::transmute_copy(&cbproperties), core::mem::transmute_copy(&pbproperties)).into()
        }
        unsafe extern "system" fn SetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbproperties: u32, pbproperties: *const u8) -> windows_core::HRESULT
        where
            Identity: IMediaSample2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSample2_Impl::SetProperties(this, core::mem::transmute_copy(&cbproperties), core::mem::transmute_copy(&pbproperties)).into()
        }
        Self {
            base__: IMediaSample_Vtbl::new::<Identity, OFFSET>(),
            GetProperties: GetProperties::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaSample2 as windows_core::Interface>::IID || iid == &<IMediaSample as windows_core::Interface>::IID
    }
}
pub trait IMediaSample2Config_Impl: Sized {
    fn GetSurface(&self) -> windows_core::Result<windows_core::IUnknown>;
}
impl windows_core::RuntimeName for IMediaSample2Config {}
impl IMediaSample2Config_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaSample2Config_Vtbl
    where
        Identity: IMediaSample2Config_Impl,
    {
        unsafe extern "system" fn GetSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirect3dsurface9: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaSample2Config_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSample2Config_Impl::GetSurface(this) {
                Ok(ok__) => {
                    ppdirect3dsurface9.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSurface: GetSurface::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaSample2Config as windows_core::Interface>::IID
    }
}
pub trait IMediaSeeking_Impl: Sized {
    fn GetCapabilities(&self) -> windows_core::Result<u32>;
    fn CheckCapabilities(&self, pcapabilities: *mut u32) -> windows_core::Result<()>;
    fn IsFormatSupported(&self, pformat: *const windows_core::GUID) -> windows_core::Result<()>;
    fn QueryPreferredFormat(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetTimeFormat(&self) -> windows_core::Result<windows_core::GUID>;
    fn IsUsingTimeFormat(&self, pformat: *const windows_core::GUID) -> windows_core::Result<()>;
    fn SetTimeFormat(&self, pformat: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetDuration(&self) -> windows_core::Result<i64>;
    fn GetStopPosition(&self) -> windows_core::Result<i64>;
    fn GetCurrentPosition(&self) -> windows_core::Result<i64>;
    fn ConvertTimeFormat(&self, ptarget: *mut i64, ptargetformat: *const windows_core::GUID, source: i64, psourceformat: *const windows_core::GUID) -> windows_core::Result<()>;
    fn SetPositions(&self, pcurrent: *mut i64, dwcurrentflags: u32, pstop: *mut i64, dwstopflags: u32) -> windows_core::Result<()>;
    fn GetPositions(&self, pcurrent: *mut i64, pstop: *mut i64) -> windows_core::Result<()>;
    fn GetAvailable(&self, pearliest: *mut i64, platest: *mut i64) -> windows_core::Result<()>;
    fn SetRate(&self, drate: f64) -> windows_core::Result<()>;
    fn GetRate(&self) -> windows_core::Result<f64>;
    fn GetPreroll(&self) -> windows_core::Result<i64>;
}
impl windows_core::RuntimeName for IMediaSeeking {}
impl IMediaSeeking_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaSeeking_Vtbl
    where
        Identity: IMediaSeeking_Impl,
    {
        unsafe extern "system" fn GetCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcapabilities: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetCapabilities(this) {
                Ok(ok__) => {
                    pcapabilities.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CheckCapabilities<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcapabilities: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::CheckCapabilities(this, core::mem::transmute_copy(&pcapabilities)).into()
        }
        unsafe extern "system" fn IsFormatSupported<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::IsFormatSupported(this, core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn QueryPreferredFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::QueryPreferredFormat(this) {
                Ok(ok__) => {
                    pformat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetTimeFormat(this) {
                Ok(ok__) => {
                    pformat.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn IsUsingTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::IsUsingTimeFormat(this, core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn SetTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::SetTimeFormat(this, core::mem::transmute_copy(&pformat)).into()
        }
        unsafe extern "system" fn GetDuration<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pduration: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetDuration(this) {
                Ok(ok__) => {
                    pduration.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetStopPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstop: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetStopPosition(this) {
                Ok(ok__) => {
                    pstop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetCurrentPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrent: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetCurrentPosition(this) {
                Ok(ok__) => {
                    pcurrent.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConvertTimeFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptarget: *mut i64, ptargetformat: *const windows_core::GUID, source: i64, psourceformat: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::ConvertTimeFormat(this, core::mem::transmute_copy(&ptarget), core::mem::transmute_copy(&ptargetformat), core::mem::transmute_copy(&source), core::mem::transmute_copy(&psourceformat)).into()
        }
        unsafe extern "system" fn SetPositions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrent: *mut i64, dwcurrentflags: u32, pstop: *mut i64, dwstopflags: u32) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::SetPositions(this, core::mem::transmute_copy(&pcurrent), core::mem::transmute_copy(&dwcurrentflags), core::mem::transmute_copy(&pstop), core::mem::transmute_copy(&dwstopflags)).into()
        }
        unsafe extern "system" fn GetPositions<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrent: *mut i64, pstop: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::GetPositions(this, core::mem::transmute_copy(&pcurrent), core::mem::transmute_copy(&pstop)).into()
        }
        unsafe extern "system" fn GetAvailable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pearliest: *mut i64, platest: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::GetAvailable(this, core::mem::transmute_copy(&pearliest), core::mem::transmute_copy(&platest)).into()
        }
        unsafe extern "system" fn SetRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, drate: f64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaSeeking_Impl::SetRate(this, core::mem::transmute_copy(&drate)).into()
        }
        unsafe extern "system" fn GetRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdrate: *mut f64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetRate(this) {
                Ok(ok__) => {
                    pdrate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetPreroll<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pllpreroll: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaSeeking_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaSeeking_Impl::GetPreroll(this) {
                Ok(ok__) => {
                    pllpreroll.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            CheckCapabilities: CheckCapabilities::<Identity, OFFSET>,
            IsFormatSupported: IsFormatSupported::<Identity, OFFSET>,
            QueryPreferredFormat: QueryPreferredFormat::<Identity, OFFSET>,
            GetTimeFormat: GetTimeFormat::<Identity, OFFSET>,
            IsUsingTimeFormat: IsUsingTimeFormat::<Identity, OFFSET>,
            SetTimeFormat: SetTimeFormat::<Identity, OFFSET>,
            GetDuration: GetDuration::<Identity, OFFSET>,
            GetStopPosition: GetStopPosition::<Identity, OFFSET>,
            GetCurrentPosition: GetCurrentPosition::<Identity, OFFSET>,
            ConvertTimeFormat: ConvertTimeFormat::<Identity, OFFSET>,
            SetPositions: SetPositions::<Identity, OFFSET>,
            GetPositions: GetPositions::<Identity, OFFSET>,
            GetAvailable: GetAvailable::<Identity, OFFSET>,
            SetRate: SetRate::<Identity, OFFSET>,
            GetRate: GetRate::<Identity, OFFSET>,
            GetPreroll: GetPreroll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaSeeking as windows_core::Interface>::IID
    }
}
pub trait IMediaStream_Impl: Sized {
    fn GetMultiMediaStream(&self) -> windows_core::Result<IMultiMediaStream>;
    fn GetInformation(&self, ppurposeid: *mut windows_core::GUID, ptype: *mut STREAM_TYPE) -> windows_core::Result<()>;
    fn SetSameFormat(&self, pstreamthathasdesiredformat: Option<&IMediaStream>, dwflags: u32) -> windows_core::Result<()>;
    fn AllocateSample(&self, dwflags: u32) -> windows_core::Result<IStreamSample>;
    fn CreateSharedSample(&self, pexistingsample: Option<&IStreamSample>, dwflags: u32) -> windows_core::Result<IStreamSample>;
    fn SendEndOfStream(&self, dwflags: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMediaStream {}
impl IMediaStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaStream_Vtbl
    where
        Identity: IMediaStream_Impl,
    {
        unsafe extern "system" fn GetMultiMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmultimediastream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaStream_Impl::GetMultiMediaStream(this) {
                Ok(ok__) => {
                    ppmultimediastream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppurposeid: *mut windows_core::GUID, ptype: *mut STREAM_TYPE) -> windows_core::HRESULT
        where
            Identity: IMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStream_Impl::GetInformation(this, core::mem::transmute_copy(&ppurposeid), core::mem::transmute_copy(&ptype)).into()
        }
        unsafe extern "system" fn SetSameFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstreamthathasdesiredformat: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStream_Impl::SetSameFormat(this, windows_core::from_raw_borrowed(&pstreamthathasdesiredformat), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn AllocateSample<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppsample: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaStream_Impl::AllocateSample(this, core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppsample.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn CreateSharedSample<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pexistingsample: *mut core::ffi::c_void, dwflags: u32, ppnewsample: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaStream_Impl::CreateSharedSample(this, windows_core::from_raw_borrowed(&pexistingsample), core::mem::transmute_copy(&dwflags)) {
                Ok(ok__) => {
                    ppnewsample.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SendEndOfStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStream_Impl::SendEndOfStream(this, core::mem::transmute_copy(&dwflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMultiMediaStream: GetMultiMediaStream::<Identity, OFFSET>,
            GetInformation: GetInformation::<Identity, OFFSET>,
            SetSameFormat: SetSameFormat::<Identity, OFFSET>,
            AllocateSample: AllocateSample::<Identity, OFFSET>,
            CreateSharedSample: CreateSharedSample::<Identity, OFFSET>,
            SendEndOfStream: SendEndOfStream::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaStream as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaStreamFilter_Impl: Sized + IBaseFilter_Impl {
    fn AddMediaStream(&self, pammediastream: Option<&IAMMediaStream>) -> windows_core::Result<()>;
    fn GetMediaStream(&self, idpurpose: *const windows_core::GUID) -> windows_core::Result<IMediaStream>;
    fn EnumMediaStreams(&self, index: i32) -> windows_core::Result<IMediaStream>;
    fn SupportSeeking(&self, brenderer: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn ReferenceTimeToStreamTime(&self, ptime: *mut i64) -> windows_core::Result<()>;
    fn GetCurrentStreamTime(&self) -> windows_core::Result<i64>;
    fn WaitUntil(&self, waitstreamtime: i64) -> windows_core::Result<()>;
    fn Flush(&self, bcanceleos: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn EndOfStream(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaStreamFilter {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaStreamFilter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaStreamFilter_Vtbl
    where
        Identity: IMediaStreamFilter_Impl,
    {
        unsafe extern "system" fn AddMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pammediastream: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStreamFilter_Impl::AddMediaStream(this, windows_core::from_raw_borrowed(&pammediastream)).into()
        }
        unsafe extern "system" fn GetMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idpurpose: *const windows_core::GUID, ppmediastream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaStreamFilter_Impl::GetMediaStream(this, core::mem::transmute_copy(&idpurpose)) {
                Ok(ok__) => {
                    ppmediastream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumMediaStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: i32, ppmediastream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaStreamFilter_Impl::EnumMediaStreams(this, core::mem::transmute_copy(&index)) {
                Ok(ok__) => {
                    ppmediastream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SupportSeeking<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, brenderer: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStreamFilter_Impl::SupportSeeking(this, core::mem::transmute_copy(&brenderer)).into()
        }
        unsafe extern "system" fn ReferenceTimeToStreamTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptime: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStreamFilter_Impl::ReferenceTimeToStreamTime(this, core::mem::transmute_copy(&ptime)).into()
        }
        unsafe extern "system" fn GetCurrentStreamTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrentstreamtime: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaStreamFilter_Impl::GetCurrentStreamTime(this) {
                Ok(ok__) => {
                    pcurrentstreamtime.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn WaitUntil<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, waitstreamtime: i64) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStreamFilter_Impl::WaitUntil(this, core::mem::transmute_copy(&waitstreamtime)).into()
        }
        unsafe extern "system" fn Flush<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bcanceleos: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStreamFilter_Impl::Flush(this, core::mem::transmute_copy(&bcanceleos)).into()
        }
        unsafe extern "system" fn EndOfStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMediaStreamFilter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMediaStreamFilter_Impl::EndOfStream(this).into()
        }
        Self {
            base__: IBaseFilter_Vtbl::new::<Identity, OFFSET>(),
            AddMediaStream: AddMediaStream::<Identity, OFFSET>,
            GetMediaStream: GetMediaStream::<Identity, OFFSET>,
            EnumMediaStreams: EnumMediaStreams::<Identity, OFFSET>,
            SupportSeeking: SupportSeeking::<Identity, OFFSET>,
            ReferenceTimeToStreamTime: ReferenceTimeToStreamTime::<Identity, OFFSET>,
            GetCurrentStreamTime: GetCurrentStreamTime::<Identity, OFFSET>,
            WaitUntil: WaitUntil::<Identity, OFFSET>,
            Flush: Flush::<Identity, OFFSET>,
            EndOfStream: EndOfStream::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaStreamFilter as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IMediaFilter as windows_core::Interface>::IID || iid == &<IBaseFilter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IMediaTypeInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Type(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Subtype(&self) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IMediaTypeInfo {}
#[cfg(feature = "Win32_System_Com")]
impl IMediaTypeInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMediaTypeInfo_Vtbl
    where
        Identity: IMediaTypeInfo_Impl,
    {
        unsafe extern "system" fn Type<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strtype: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMediaTypeInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaTypeInfo_Impl::Type(this) {
                Ok(ok__) => {
                    strtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Subtype<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strtype: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IMediaTypeInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMediaTypeInfo_Impl::Subtype(this) {
                Ok(ok__) => {
                    strtype.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Type: Type::<Identity, OFFSET>,
            Subtype: Subtype::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMediaTypeInfo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IMemAllocator_Impl: Sized {
    fn SetProperties(&self, prequest: *const ALLOCATOR_PROPERTIES) -> windows_core::Result<ALLOCATOR_PROPERTIES>;
    fn GetProperties(&self) -> windows_core::Result<ALLOCATOR_PROPERTIES>;
    fn Commit(&self) -> windows_core::Result<()>;
    fn Decommit(&self) -> windows_core::Result<()>;
    fn GetBuffer(&self, ppbuffer: *mut Option<IMediaSample>, pstarttime: *const i64, pendtime: *const i64, dwflags: u32) -> windows_core::Result<()>;
    fn ReleaseBuffer(&self, pbuffer: Option<&IMediaSample>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMemAllocator {}
impl IMemAllocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMemAllocator_Vtbl
    where
        Identity: IMemAllocator_Impl,
    {
        unsafe extern "system" fn SetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, prequest: *const ALLOCATOR_PROPERTIES, pactual: *mut ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IMemAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMemAllocator_Impl::SetProperties(this, core::mem::transmute_copy(&prequest)) {
                Ok(ok__) => {
                    pactual.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetProperties<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprops: *mut ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IMemAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMemAllocator_Impl::GetProperties(this) {
                Ok(ok__) => {
                    pprops.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Commit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemAllocator_Impl::Commit(this).into()
        }
        unsafe extern "system" fn Decommit<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemAllocator_Impl::Decommit(this).into()
        }
        unsafe extern "system" fn GetBuffer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppbuffer: *mut *mut core::ffi::c_void, pstarttime: *const i64, pendtime: *const i64, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IMemAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemAllocator_Impl::GetBuffer(this, core::mem::transmute_copy(&ppbuffer), core::mem::transmute_copy(&pstarttime), core::mem::transmute_copy(&pendtime), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn ReleaseBuffer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbuffer: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemAllocator_Impl::ReleaseBuffer(this, windows_core::from_raw_borrowed(&pbuffer)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetProperties: SetProperties::<Identity, OFFSET>,
            GetProperties: GetProperties::<Identity, OFFSET>,
            Commit: Commit::<Identity, OFFSET>,
            Decommit: Decommit::<Identity, OFFSET>,
            GetBuffer: GetBuffer::<Identity, OFFSET>,
            ReleaseBuffer: ReleaseBuffer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMemAllocator as windows_core::Interface>::IID
    }
}
pub trait IMemAllocatorCallbackTemp_Impl: Sized + IMemAllocator_Impl {
    fn SetNotify(&self, pnotify: Option<&IMemAllocatorNotifyCallbackTemp>) -> windows_core::Result<()>;
    fn GetFreeCount(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IMemAllocatorCallbackTemp {}
impl IMemAllocatorCallbackTemp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMemAllocatorCallbackTemp_Vtbl
    where
        Identity: IMemAllocatorCallbackTemp_Impl,
    {
        unsafe extern "system" fn SetNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnotify: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemAllocatorCallbackTemp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemAllocatorCallbackTemp_Impl::SetNotify(this, windows_core::from_raw_borrowed(&pnotify)).into()
        }
        unsafe extern "system" fn GetFreeCount<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, plbuffersfree: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMemAllocatorCallbackTemp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMemAllocatorCallbackTemp_Impl::GetFreeCount(this) {
                Ok(ok__) => {
                    plbuffersfree.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: IMemAllocator_Vtbl::new::<Identity, OFFSET>(), SetNotify: SetNotify::<Identity, OFFSET>, GetFreeCount: GetFreeCount::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMemAllocatorCallbackTemp as windows_core::Interface>::IID || iid == &<IMemAllocator as windows_core::Interface>::IID
    }
}
pub trait IMemAllocatorNotifyCallbackTemp_Impl: Sized {
    fn NotifyRelease(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMemAllocatorNotifyCallbackTemp {}
impl IMemAllocatorNotifyCallbackTemp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMemAllocatorNotifyCallbackTemp_Vtbl
    where
        Identity: IMemAllocatorNotifyCallbackTemp_Impl,
    {
        unsafe extern "system" fn NotifyRelease<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemAllocatorNotifyCallbackTemp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemAllocatorNotifyCallbackTemp_Impl::NotifyRelease(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), NotifyRelease: NotifyRelease::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMemAllocatorNotifyCallbackTemp as windows_core::Interface>::IID
    }
}
pub trait IMemInputPin_Impl: Sized {
    fn GetAllocator(&self) -> windows_core::Result<IMemAllocator>;
    fn NotifyAllocator(&self, pallocator: Option<&IMemAllocator>, breadonly: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetAllocatorRequirements(&self) -> windows_core::Result<ALLOCATOR_PROPERTIES>;
    fn Receive(&self, psample: Option<&IMediaSample>) -> windows_core::Result<()>;
    fn ReceiveMultiple(&self, psamples: *const Option<IMediaSample>, nsamples: i32) -> windows_core::Result<i32>;
    fn ReceiveCanBlock(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMemInputPin {}
impl IMemInputPin_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMemInputPin_Vtbl
    where
        Identity: IMemInputPin_Impl,
    {
        unsafe extern "system" fn GetAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppallocator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemInputPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMemInputPin_Impl::GetAllocator(this) {
                Ok(ok__) => {
                    ppallocator.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn NotifyAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pallocator: *mut core::ffi::c_void, breadonly: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMemInputPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemInputPin_Impl::NotifyAllocator(this, windows_core::from_raw_borrowed(&pallocator), core::mem::transmute_copy(&breadonly)).into()
        }
        unsafe extern "system" fn GetAllocatorRequirements<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pprops: *mut ALLOCATOR_PROPERTIES) -> windows_core::HRESULT
        where
            Identity: IMemInputPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMemInputPin_Impl::GetAllocatorRequirements(this) {
                Ok(ok__) => {
                    pprops.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Receive<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psample: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemInputPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemInputPin_Impl::Receive(this, windows_core::from_raw_borrowed(&psample)).into()
        }
        unsafe extern "system" fn ReceiveMultiple<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psamples: *const *mut core::ffi::c_void, nsamples: i32, nsamplesprocessed: *mut i32) -> windows_core::HRESULT
        where
            Identity: IMemInputPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMemInputPin_Impl::ReceiveMultiple(this, core::mem::transmute_copy(&psamples), core::mem::transmute_copy(&nsamples)) {
                Ok(ok__) => {
                    nsamplesprocessed.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ReceiveCanBlock<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMemInputPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemInputPin_Impl::ReceiveCanBlock(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAllocator: GetAllocator::<Identity, OFFSET>,
            NotifyAllocator: NotifyAllocator::<Identity, OFFSET>,
            GetAllocatorRequirements: GetAllocatorRequirements::<Identity, OFFSET>,
            Receive: Receive::<Identity, OFFSET>,
            ReceiveMultiple: ReceiveMultiple::<Identity, OFFSET>,
            ReceiveCanBlock: ReceiveCanBlock::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMemInputPin as windows_core::Interface>::IID
    }
}
pub trait IMemoryData_Impl: Sized {
    fn SetBuffer(&self, cbsize: u32, pbdata: *const u8, dwflags: u32) -> windows_core::Result<()>;
    fn GetInfo(&self, pdwlength: *mut u32, ppbdata: *mut *mut u8, pcbactualdata: *mut u32) -> windows_core::Result<()>;
    fn SetActual(&self, cbdatavalid: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMemoryData {}
impl IMemoryData_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMemoryData_Vtbl
    where
        Identity: IMemoryData_Impl,
    {
        unsafe extern "system" fn SetBuffer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbsize: u32, pbdata: *const u8, dwflags: u32) -> windows_core::HRESULT
        where
            Identity: IMemoryData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemoryData_Impl::SetBuffer(this, core::mem::transmute_copy(&cbsize), core::mem::transmute_copy(&pbdata), core::mem::transmute_copy(&dwflags)).into()
        }
        unsafe extern "system" fn GetInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwlength: *mut u32, ppbdata: *mut *mut u8, pcbactualdata: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMemoryData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemoryData_Impl::GetInfo(this, core::mem::transmute_copy(&pdwlength), core::mem::transmute_copy(&ppbdata), core::mem::transmute_copy(&pcbactualdata)).into()
        }
        unsafe extern "system" fn SetActual<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbdatavalid: u32) -> windows_core::HRESULT
        where
            Identity: IMemoryData_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMemoryData_Impl::SetActual(this, core::mem::transmute_copy(&cbdatavalid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBuffer: SetBuffer::<Identity, OFFSET>,
            GetInfo: GetInfo::<Identity, OFFSET>,
            SetActual: SetActual::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMemoryData as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IMixerOCX_Impl: Sized {
    fn OnDisplayChange(&self, ulbitsperpixel: u32, ulscreenwidth: u32, ulscreenheight: u32) -> windows_core::Result<()>;
    fn GetAspectRatio(&self, pdwpictaspectratiox: *mut u32, pdwpictaspectratioy: *mut u32) -> windows_core::Result<()>;
    fn GetVideoSize(&self, pdwvideowidth: *mut u32, pdwvideoheight: *mut u32) -> windows_core::Result<()>;
    fn GetStatus(&self) -> windows_core::Result<*mut u32>;
    fn OnDraw(&self, hdcdraw: super::super::Graphics::Gdi::HDC, prcdraw: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetDrawRegion(&self, lppttopleftsc: *const super::super::Foundation::POINT, prcdrawcc: *const super::super::Foundation::RECT, lprcclip: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn Advise(&self, pmdns: Option<&IMixerOCXNotify>) -> windows_core::Result<()>;
    fn UnAdvise(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IMixerOCX {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IMixerOCX_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMixerOCX_Vtbl
    where
        Identity: IMixerOCX_Impl,
    {
        unsafe extern "system" fn OnDisplayChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulbitsperpixel: u32, ulscreenwidth: u32, ulscreenheight: u32) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::OnDisplayChange(this, core::mem::transmute_copy(&ulbitsperpixel), core::mem::transmute_copy(&ulscreenwidth), core::mem::transmute_copy(&ulscreenheight)).into()
        }
        unsafe extern "system" fn GetAspectRatio<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwpictaspectratiox: *mut u32, pdwpictaspectratioy: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::GetAspectRatio(this, core::mem::transmute_copy(&pdwpictaspectratiox), core::mem::transmute_copy(&pdwpictaspectratioy)).into()
        }
        unsafe extern "system" fn GetVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwvideowidth: *mut u32, pdwvideoheight: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::GetVideoSize(this, core::mem::transmute_copy(&pdwvideowidth), core::mem::transmute_copy(&pdwvideoheight)).into()
        }
        unsafe extern "system" fn GetStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwstatus: *mut *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMixerOCX_Impl::GetStatus(this) {
                Ok(ok__) => {
                    pdwstatus.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn OnDraw<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdcdraw: super::super::Graphics::Gdi::HDC, prcdraw: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::OnDraw(this, core::mem::transmute_copy(&hdcdraw), core::mem::transmute_copy(&prcdraw)).into()
        }
        unsafe extern "system" fn SetDrawRegion<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lppttopleftsc: *const super::super::Foundation::POINT, prcdrawcc: *const super::super::Foundation::RECT, lprcclip: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::SetDrawRegion(this, core::mem::transmute_copy(&lppttopleftsc), core::mem::transmute_copy(&prcdrawcc), core::mem::transmute_copy(&lprcclip)).into()
        }
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmdns: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::Advise(this, windows_core::from_raw_borrowed(&pmdns)).into()
        }
        unsafe extern "system" fn UnAdvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMixerOCX_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCX_Impl::UnAdvise(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnDisplayChange: OnDisplayChange::<Identity, OFFSET>,
            GetAspectRatio: GetAspectRatio::<Identity, OFFSET>,
            GetVideoSize: GetVideoSize::<Identity, OFFSET>,
            GetStatus: GetStatus::<Identity, OFFSET>,
            OnDraw: OnDraw::<Identity, OFFSET>,
            SetDrawRegion: SetDrawRegion::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            UnAdvise: UnAdvise::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMixerOCX as windows_core::Interface>::IID
    }
}
pub trait IMixerOCXNotify_Impl: Sized {
    fn OnInvalidateRect(&self, lpcrect: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn OnStatusChange(&self, ulstatusflags: u32) -> windows_core::Result<()>;
    fn OnDataChange(&self, uldataflags: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMixerOCXNotify {}
impl IMixerOCXNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMixerOCXNotify_Vtbl
    where
        Identity: IMixerOCXNotify_Impl,
    {
        unsafe extern "system" fn OnInvalidateRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpcrect: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IMixerOCXNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCXNotify_Impl::OnInvalidateRect(this, core::mem::transmute_copy(&lpcrect)).into()
        }
        unsafe extern "system" fn OnStatusChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulstatusflags: u32) -> windows_core::HRESULT
        where
            Identity: IMixerOCXNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCXNotify_Impl::OnStatusChange(this, core::mem::transmute_copy(&ulstatusflags)).into()
        }
        unsafe extern "system" fn OnDataChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, uldataflags: u32) -> windows_core::HRESULT
        where
            Identity: IMixerOCXNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerOCXNotify_Impl::OnDataChange(this, core::mem::transmute_copy(&uldataflags)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnInvalidateRect: OnInvalidateRect::<Identity, OFFSET>,
            OnStatusChange: OnStatusChange::<Identity, OFFSET>,
            OnDataChange: OnDataChange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMixerOCXNotify as windows_core::Interface>::IID
    }
}
pub trait IMixerPinConfig_Impl: Sized {
    fn SetRelativePosition(&self, dwleft: u32, dwtop: u32, dwright: u32, dwbottom: u32) -> windows_core::Result<()>;
    fn GetRelativePosition(&self, pdwleft: *mut u32, pdwtop: *mut u32, pdwright: *mut u32, pdwbottom: *mut u32) -> windows_core::Result<()>;
    fn SetZOrder(&self, dwzorder: u32) -> windows_core::Result<()>;
    fn GetZOrder(&self, pdwzorder: *mut u32) -> windows_core::Result<()>;
    fn SetColorKey(&self, pcolorkey: *mut COLORKEY) -> windows_core::Result<()>;
    fn GetColorKey(&self, pcolorkey: *mut COLORKEY, pcolor: *mut u32) -> windows_core::Result<()>;
    fn SetBlendingParameter(&self, dwblendingparameter: u32) -> windows_core::Result<()>;
    fn GetBlendingParameter(&self, pdwblendingparameter: *mut u32) -> windows_core::Result<()>;
    fn SetAspectRatioMode(&self, amaspectratiomode: AM_ASPECT_RATIO_MODE) -> windows_core::Result<()>;
    fn GetAspectRatioMode(&self, pamaspectratiomode: *mut AM_ASPECT_RATIO_MODE) -> windows_core::Result<()>;
    fn SetStreamTransparent(&self, bstreamtransparent: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetStreamTransparent(&self, pbstreamtransparent: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IMixerPinConfig {}
impl IMixerPinConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMixerPinConfig_Vtbl
    where
        Identity: IMixerPinConfig_Impl,
    {
        unsafe extern "system" fn SetRelativePosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwleft: u32, dwtop: u32, dwright: u32, dwbottom: u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::SetRelativePosition(this, core::mem::transmute_copy(&dwleft), core::mem::transmute_copy(&dwtop), core::mem::transmute_copy(&dwright), core::mem::transmute_copy(&dwbottom)).into()
        }
        unsafe extern "system" fn GetRelativePosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwleft: *mut u32, pdwtop: *mut u32, pdwright: *mut u32, pdwbottom: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::GetRelativePosition(this, core::mem::transmute_copy(&pdwleft), core::mem::transmute_copy(&pdwtop), core::mem::transmute_copy(&pdwright), core::mem::transmute_copy(&pdwbottom)).into()
        }
        unsafe extern "system" fn SetZOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwzorder: u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::SetZOrder(this, core::mem::transmute_copy(&dwzorder)).into()
        }
        unsafe extern "system" fn GetZOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwzorder: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::GetZOrder(this, core::mem::transmute_copy(&pdwzorder)).into()
        }
        unsafe extern "system" fn SetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorkey: *mut COLORKEY) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::SetColorKey(this, core::mem::transmute_copy(&pcolorkey)).into()
        }
        unsafe extern "system" fn GetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorkey: *mut COLORKEY, pcolor: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::GetColorKey(this, core::mem::transmute_copy(&pcolorkey), core::mem::transmute_copy(&pcolor)).into()
        }
        unsafe extern "system" fn SetBlendingParameter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwblendingparameter: u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::SetBlendingParameter(this, core::mem::transmute_copy(&dwblendingparameter)).into()
        }
        unsafe extern "system" fn GetBlendingParameter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwblendingparameter: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::GetBlendingParameter(this, core::mem::transmute_copy(&pdwblendingparameter)).into()
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, amaspectratiomode: AM_ASPECT_RATIO_MODE) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::SetAspectRatioMode(this, core::mem::transmute_copy(&amaspectratiomode)).into()
        }
        unsafe extern "system" fn GetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pamaspectratiomode: *mut AM_ASPECT_RATIO_MODE) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::GetAspectRatioMode(this, core::mem::transmute_copy(&pamaspectratiomode)).into()
        }
        unsafe extern "system" fn SetStreamTransparent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstreamtransparent: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::SetStreamTransparent(this, core::mem::transmute_copy(&bstreamtransparent)).into()
        }
        unsafe extern "system" fn GetStreamTransparent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstreamtransparent: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig_Impl::GetStreamTransparent(this, core::mem::transmute_copy(&pbstreamtransparent)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetRelativePosition: SetRelativePosition::<Identity, OFFSET>,
            GetRelativePosition: GetRelativePosition::<Identity, OFFSET>,
            SetZOrder: SetZOrder::<Identity, OFFSET>,
            GetZOrder: GetZOrder::<Identity, OFFSET>,
            SetColorKey: SetColorKey::<Identity, OFFSET>,
            GetColorKey: GetColorKey::<Identity, OFFSET>,
            SetBlendingParameter: SetBlendingParameter::<Identity, OFFSET>,
            GetBlendingParameter: GetBlendingParameter::<Identity, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, OFFSET>,
            GetAspectRatioMode: GetAspectRatioMode::<Identity, OFFSET>,
            SetStreamTransparent: SetStreamTransparent::<Identity, OFFSET>,
            GetStreamTransparent: GetStreamTransparent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMixerPinConfig as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IMixerPinConfig2_Impl: Sized + IMixerPinConfig_Impl {
    fn SetOverlaySurfaceColorControls(&self, pcolorcontrol: *mut super::super::Graphics::DirectDraw::DDCOLORCONTROL) -> windows_core::Result<()>;
    fn GetOverlaySurfaceColorControls(&self, pcolorcontrol: *mut super::super::Graphics::DirectDraw::DDCOLORCONTROL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IMixerPinConfig2 {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IMixerPinConfig2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMixerPinConfig2_Vtbl
    where
        Identity: IMixerPinConfig2_Impl,
    {
        unsafe extern "system" fn SetOverlaySurfaceColorControls<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorcontrol: *mut super::super::Graphics::DirectDraw::DDCOLORCONTROL) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig2_Impl::SetOverlaySurfaceColorControls(this, core::mem::transmute_copy(&pcolorcontrol)).into()
        }
        unsafe extern "system" fn GetOverlaySurfaceColorControls<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorcontrol: *mut super::super::Graphics::DirectDraw::DDCOLORCONTROL) -> windows_core::HRESULT
        where
            Identity: IMixerPinConfig2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMixerPinConfig2_Impl::GetOverlaySurfaceColorControls(this, core::mem::transmute_copy(&pcolorcontrol)).into()
        }
        Self {
            base__: IMixerPinConfig_Vtbl::new::<Identity, OFFSET>(),
            SetOverlaySurfaceColorControls: SetOverlaySurfaceColorControls::<Identity, OFFSET>,
            GetOverlaySurfaceColorControls: GetOverlaySurfaceColorControls::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMixerPinConfig2 as windows_core::Interface>::IID || iid == &<IMixerPinConfig as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IMpeg2Demultiplexer_Impl: Sized {
    fn CreateOutputPin(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE, pszpinname: &windows_core::PCWSTR) -> windows_core::Result<IPin>;
    fn SetOutputPinMediaType(&self, pszpinname: &windows_core::PCWSTR, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn DeleteOutputPin(&self, pszpinname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IMpeg2Demultiplexer {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IMpeg2Demultiplexer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMpeg2Demultiplexer_Vtbl
    where
        Identity: IMpeg2Demultiplexer_Impl,
    {
        unsafe extern "system" fn CreateOutputPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE, pszpinname: windows_core::PCWSTR, ppipin: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMpeg2Demultiplexer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpeg2Demultiplexer_Impl::CreateOutputPin(this, core::mem::transmute_copy(&pmediatype), core::mem::transmute(&pszpinname)) {
                Ok(ok__) => {
                    ppipin.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputPinMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpinname: windows_core::PCWSTR, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IMpeg2Demultiplexer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2Demultiplexer_Impl::SetOutputPinMediaType(this, core::mem::transmute(&pszpinname), core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn DeleteOutputPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpinname: windows_core::PCWSTR) -> windows_core::HRESULT
        where
            Identity: IMpeg2Demultiplexer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpeg2Demultiplexer_Impl::DeleteOutputPin(this, core::mem::transmute(&pszpinname)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateOutputPin: CreateOutputPin::<Identity, OFFSET>,
            SetOutputPinMediaType: SetOutputPinMediaType::<Identity, OFFSET>,
            DeleteOutputPin: DeleteOutputPin::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMpeg2Demultiplexer as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_Audio")]
pub trait IMpegAudioDecoder_Impl: Sized {
    fn FrequencyDivider(&self) -> windows_core::Result<u32>;
    fn SetFrequencyDivider(&self, divider: u32) -> windows_core::Result<()>;
    fn DecoderAccuracy(&self) -> windows_core::Result<u32>;
    fn SetDecoderAccuracy(&self, accuracy: u32) -> windows_core::Result<()>;
    fn Stereo(&self) -> windows_core::Result<u32>;
    fn SetStereo(&self, stereo: u32) -> windows_core::Result<()>;
    fn DecoderWordSize(&self) -> windows_core::Result<u32>;
    fn SetDecoderWordSize(&self, wordsize: u32) -> windows_core::Result<()>;
    fn IntegerDecode(&self) -> windows_core::Result<u32>;
    fn SetIntegerDecode(&self, intdecode: u32) -> windows_core::Result<()>;
    fn DualMode(&self, pintdecode: *mut u32) -> windows_core::Result<()>;
    fn SetDualMode(&self, intdecode: u32) -> windows_core::Result<()>;
    fn AudioFormat(&self, lpfmt: *mut MPEG1WAVEFORMAT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_Audio")]
impl windows_core::RuntimeName for IMpegAudioDecoder {}
#[cfg(feature = "Win32_Media_Audio")]
impl IMpegAudioDecoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMpegAudioDecoder_Vtbl
    where
        Identity: IMpegAudioDecoder_Impl,
    {
        unsafe extern "system" fn FrequencyDivider<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdivider: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpegAudioDecoder_Impl::FrequencyDivider(this) {
                Ok(ok__) => {
                    pdivider.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFrequencyDivider<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, divider: u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::SetFrequencyDivider(this, core::mem::transmute_copy(&divider)).into()
        }
        unsafe extern "system" fn DecoderAccuracy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, paccuracy: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpegAudioDecoder_Impl::DecoderAccuracy(this) {
                Ok(ok__) => {
                    paccuracy.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecoderAccuracy<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, accuracy: u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::SetDecoderAccuracy(this, core::mem::transmute_copy(&accuracy)).into()
        }
        unsafe extern "system" fn Stereo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstereo: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpegAudioDecoder_Impl::Stereo(this) {
                Ok(ok__) => {
                    pstereo.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStereo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, stereo: u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::SetStereo(this, core::mem::transmute_copy(&stereo)).into()
        }
        unsafe extern "system" fn DecoderWordSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwordsize: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpegAudioDecoder_Impl::DecoderWordSize(this) {
                Ok(ok__) => {
                    pwordsize.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDecoderWordSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, wordsize: u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::SetDecoderWordSize(this, core::mem::transmute_copy(&wordsize)).into()
        }
        unsafe extern "system" fn IntegerDecode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pintdecode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMpegAudioDecoder_Impl::IntegerDecode(this) {
                Ok(ok__) => {
                    pintdecode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetIntegerDecode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, intdecode: u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::SetIntegerDecode(this, core::mem::transmute_copy(&intdecode)).into()
        }
        unsafe extern "system" fn DualMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pintdecode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::DualMode(this, core::mem::transmute_copy(&pintdecode)).into()
        }
        unsafe extern "system" fn SetDualMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, intdecode: u32) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::SetDualMode(this, core::mem::transmute_copy(&intdecode)).into()
        }
        unsafe extern "system" fn AudioFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpfmt: *mut MPEG1WAVEFORMAT) -> windows_core::HRESULT
        where
            Identity: IMpegAudioDecoder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMpegAudioDecoder_Impl::AudioFormat(this, core::mem::transmute_copy(&lpfmt)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FrequencyDivider: FrequencyDivider::<Identity, OFFSET>,
            SetFrequencyDivider: SetFrequencyDivider::<Identity, OFFSET>,
            DecoderAccuracy: DecoderAccuracy::<Identity, OFFSET>,
            SetDecoderAccuracy: SetDecoderAccuracy::<Identity, OFFSET>,
            Stereo: Stereo::<Identity, OFFSET>,
            SetStereo: SetStereo::<Identity, OFFSET>,
            DecoderWordSize: DecoderWordSize::<Identity, OFFSET>,
            SetDecoderWordSize: SetDecoderWordSize::<Identity, OFFSET>,
            IntegerDecode: IntegerDecode::<Identity, OFFSET>,
            SetIntegerDecode: SetIntegerDecode::<Identity, OFFSET>,
            DualMode: DualMode::<Identity, OFFSET>,
            SetDualMode: SetDualMode::<Identity, OFFSET>,
            AudioFormat: AudioFormat::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMpegAudioDecoder as windows_core::Interface>::IID
    }
}
pub trait IMultiMediaStream_Impl: Sized {
    fn GetInformation(&self, pdwflags: *mut MMSSF_GET_INFORMATION_FLAGS, pstreamtype: *mut STREAM_TYPE) -> windows_core::Result<()>;
    fn GetMediaStream(&self, idpurpose: *const windows_core::GUID) -> windows_core::Result<IMediaStream>;
    fn EnumMediaStreams(&self, index: i32) -> windows_core::Result<IMediaStream>;
    fn GetState(&self) -> windows_core::Result<STREAM_STATE>;
    fn SetState(&self, newstate: STREAM_STATE) -> windows_core::Result<()>;
    fn GetTime(&self) -> windows_core::Result<i64>;
    fn GetDuration(&self) -> windows_core::Result<i64>;
    fn Seek(&self, seektime: i64) -> windows_core::Result<()>;
    fn GetEndOfStreamEventHandle(&self) -> windows_core::Result<super::super::Foundation::HANDLE>;
}
impl windows_core::RuntimeName for IMultiMediaStream {}
impl IMultiMediaStream_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IMultiMediaStream_Vtbl
    where
        Identity: IMultiMediaStream_Impl,
    {
        unsafe extern "system" fn GetInformation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut MMSSF_GET_INFORMATION_FLAGS, pstreamtype: *mut STREAM_TYPE) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMultiMediaStream_Impl::GetInformation(this, core::mem::transmute_copy(&pdwflags), core::mem::transmute_copy(&pstreamtype)).into()
        }
        unsafe extern "system" fn GetMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idpurpose: *const windows_core::GUID, ppmediastream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMultiMediaStream_Impl::GetMediaStream(this, core::mem::transmute_copy(&idpurpose)) {
                Ok(ok__) => {
                    ppmediastream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn EnumMediaStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: i32, ppmediastream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMultiMediaStream_Impl::EnumMediaStreams(this, core::mem::transmute_copy(&index)) {
                Ok(ok__) => {
                    ppmediastream.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrentstate: *mut STREAM_STATE) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMultiMediaStream_Impl::GetState(this) {
                Ok(ok__) => {
                    pcurrentstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, newstate: STREAM_STATE) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMultiMediaStream_Impl::SetState(this, core::mem::transmute_copy(&newstate)).into()
        }
        unsafe extern "system" fn GetTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcurrenttime: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMultiMediaStream_Impl::GetTime(this) {
                Ok(ok__) => {
                    pcurrenttime.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, pduration: *mut i64) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMultiMediaStream_Impl::GetDuration(this) {
                Ok(ok__) => {
                    pduration.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Seek<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, seektime: i64) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IMultiMediaStream_Impl::Seek(this, core::mem::transmute_copy(&seektime)).into()
        }
        unsafe extern "system" fn GetEndOfStreamEventHandle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pheos: *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IMultiMediaStream_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IMultiMediaStream_Impl::GetEndOfStreamEventHandle(this) {
                Ok(ok__) => {
                    pheos.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInformation: GetInformation::<Identity, OFFSET>,
            GetMediaStream: GetMediaStream::<Identity, OFFSET>,
            EnumMediaStreams: EnumMediaStreams::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            SetState: SetState::<Identity, OFFSET>,
            GetTime: GetTime::<Identity, OFFSET>,
            GetDuration: GetDuration::<Identity, OFFSET>,
            Seek: Seek::<Identity, OFFSET>,
            GetEndOfStreamEventHandle: GetEndOfStreamEventHandle::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMultiMediaStream as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IOverlay_Impl: Sized {
    fn GetPalette(&self, pdwcolors: *mut u32, pppalette: *mut *mut super::super::Graphics::Gdi::PALETTEENTRY) -> windows_core::Result<()>;
    fn SetPalette(&self, dwcolors: u32, ppalette: *const super::super::Graphics::Gdi::PALETTEENTRY) -> windows_core::Result<()>;
    fn GetDefaultColorKey(&self) -> windows_core::Result<COLORKEY>;
    fn GetColorKey(&self) -> windows_core::Result<COLORKEY>;
    fn SetColorKey(&self, pcolorkey: *mut COLORKEY) -> windows_core::Result<()>;
    fn GetWindowHandle(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn GetClipList(&self, psourcerect: *mut super::super::Foundation::RECT, pdestinationrect: *mut super::super::Foundation::RECT, pprgndata: *mut *mut super::super::Graphics::Gdi::RGNDATA) -> windows_core::Result<()>;
    fn GetVideoPosition(&self, psourcerect: *mut super::super::Foundation::RECT, pdestinationrect: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn Advise(&self, poverlaynotify: Option<&IOverlayNotify>, dwinterests: u32) -> windows_core::Result<()>;
    fn Unadvise(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IOverlay {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IOverlay_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IOverlay_Vtbl
    where
        Identity: IOverlay_Impl,
    {
        unsafe extern "system" fn GetPalette<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcolors: *mut u32, pppalette: *mut *mut super::super::Graphics::Gdi::PALETTEENTRY) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::GetPalette(this, core::mem::transmute_copy(&pdwcolors), core::mem::transmute_copy(&pppalette)).into()
        }
        unsafe extern "system" fn SetPalette<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcolors: u32, ppalette: *const super::super::Graphics::Gdi::PALETTEENTRY) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::SetPalette(this, core::mem::transmute_copy(&dwcolors), core::mem::transmute_copy(&ppalette)).into()
        }
        unsafe extern "system" fn GetDefaultColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorkey: *mut COLORKEY) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IOverlay_Impl::GetDefaultColorKey(this) {
                Ok(ok__) => {
                    pcolorkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorkey: *mut COLORKEY) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IOverlay_Impl::GetColorKey(this) {
                Ok(ok__) => {
                    pcolorkey.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, pcolorkey: *mut COLORKEY) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::SetColorKey(this, core::mem::transmute_copy(&pcolorkey)).into()
        }
        unsafe extern "system" fn GetWindowHandle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IOverlay_Impl::GetWindowHandle(this) {
                Ok(ok__) => {
                    phwnd.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetClipList<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourcerect: *mut super::super::Foundation::RECT, pdestinationrect: *mut super::super::Foundation::RECT, pprgndata: *mut *mut super::super::Graphics::Gdi::RGNDATA) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::GetClipList(this, core::mem::transmute_copy(&psourcerect), core::mem::transmute_copy(&pdestinationrect), core::mem::transmute_copy(&pprgndata)).into()
        }
        unsafe extern "system" fn GetVideoPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourcerect: *mut super::super::Foundation::RECT, pdestinationrect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::GetVideoPosition(this, core::mem::transmute_copy(&psourcerect), core::mem::transmute_copy(&pdestinationrect)).into()
        }
        unsafe extern "system" fn Advise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, poverlaynotify: *mut core::ffi::c_void, dwinterests: u32) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::Advise(this, windows_core::from_raw_borrowed(&poverlaynotify), core::mem::transmute_copy(&dwinterests)).into()
        }
        unsafe extern "system" fn Unadvise<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IOverlay_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlay_Impl::Unadvise(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPalette: GetPalette::<Identity, OFFSET>,
            SetPalette: SetPalette::<Identity, OFFSET>,
            GetDefaultColorKey: GetDefaultColorKey::<Identity, OFFSET>,
            GetColorKey: GetColorKey::<Identity, OFFSET>,
            SetColorKey: SetColorKey::<Identity, OFFSET>,
            GetWindowHandle: GetWindowHandle::<Identity, OFFSET>,
            GetClipList: GetClipList::<Identity, OFFSET>,
            GetVideoPosition: GetVideoPosition::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOverlay as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IOverlayNotify_Impl: Sized {
    fn OnPaletteChange(&self, dwcolors: u32, ppalette: *const super::super::Graphics::Gdi::PALETTEENTRY) -> windows_core::Result<()>;
    fn OnClipChange(&self, psourcerect: *const super::super::Foundation::RECT, pdestinationrect: *const super::super::Foundation::RECT, prgndata: *const super::super::Graphics::Gdi::RGNDATA) -> windows_core::Result<()>;
    fn OnColorKeyChange(&self, pcolorkey: *const COLORKEY) -> windows_core::Result<()>;
    fn OnPositionChange(&self, psourcerect: *const super::super::Foundation::RECT, pdestinationrect: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IOverlayNotify {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IOverlayNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IOverlayNotify_Vtbl
    where
        Identity: IOverlayNotify_Impl,
    {
        unsafe extern "system" fn OnPaletteChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcolors: u32, ppalette: *const super::super::Graphics::Gdi::PALETTEENTRY) -> windows_core::HRESULT
        where
            Identity: IOverlayNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlayNotify_Impl::OnPaletteChange(this, core::mem::transmute_copy(&dwcolors), core::mem::transmute_copy(&ppalette)).into()
        }
        unsafe extern "system" fn OnClipChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourcerect: *const super::super::Foundation::RECT, pdestinationrect: *const super::super::Foundation::RECT, prgndata: *const super::super::Graphics::Gdi::RGNDATA) -> windows_core::HRESULT
        where
            Identity: IOverlayNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlayNotify_Impl::OnClipChange(this, core::mem::transmute_copy(&psourcerect), core::mem::transmute_copy(&pdestinationrect), core::mem::transmute_copy(&prgndata)).into()
        }
        unsafe extern "system" fn OnColorKeyChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcolorkey: *const COLORKEY) -> windows_core::HRESULT
        where
            Identity: IOverlayNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlayNotify_Impl::OnColorKeyChange(this, core::mem::transmute_copy(&pcolorkey)).into()
        }
        unsafe extern "system" fn OnPositionChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, psourcerect: *const super::super::Foundation::RECT, pdestinationrect: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IOverlayNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlayNotify_Impl::OnPositionChange(this, core::mem::transmute_copy(&psourcerect), core::mem::transmute_copy(&pdestinationrect)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnPaletteChange: OnPaletteChange::<Identity, OFFSET>,
            OnClipChange: OnClipChange::<Identity, OFFSET>,
            OnColorKeyChange: OnColorKeyChange::<Identity, OFFSET>,
            OnPositionChange: OnPositionChange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOverlayNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IOverlayNotify2_Impl: Sized + IOverlayNotify_Impl {
    fn OnDisplayChange(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IOverlayNotify2 {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IOverlayNotify2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IOverlayNotify2_Vtbl
    where
        Identity: IOverlayNotify2_Impl,
    {
        unsafe extern "system" fn OnDisplayChange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IOverlayNotify2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IOverlayNotify2_Impl::OnDisplayChange(this, core::mem::transmute_copy(&hmonitor)).into()
        }
        Self { base__: IOverlayNotify_Vtbl::new::<Identity, OFFSET>(), OnDisplayChange: OnDisplayChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOverlayNotify2 as windows_core::Interface>::IID || iid == &<IOverlayNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IPersistMediaPropertyBag_Impl: Sized + super::super::System::Com::IPersist_Impl {
    fn InitNew(&self) -> windows_core::Result<()>;
    fn Load(&self, ppropbag: Option<&IMediaPropertyBag>, perrorlog: Option<&super::super::System::Com::IErrorLog>) -> windows_core::Result<()>;
    fn Save(&self, ppropbag: Option<&IMediaPropertyBag>, fcleardirty: super::super::Foundation::BOOL, fsaveallproperties: super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IPersistMediaPropertyBag {}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IPersistMediaPropertyBag_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPersistMediaPropertyBag_Vtbl
    where
        Identity: IPersistMediaPropertyBag_Impl,
    {
        unsafe extern "system" fn InitNew<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPersistMediaPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistMediaPropertyBag_Impl::InitNew(this).into()
        }
        unsafe extern "system" fn Load<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppropbag: *mut core::ffi::c_void, perrorlog: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPersistMediaPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistMediaPropertyBag_Impl::Load(this, windows_core::from_raw_borrowed(&ppropbag), windows_core::from_raw_borrowed(&perrorlog)).into()
        }
        unsafe extern "system" fn Save<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppropbag: *mut core::ffi::c_void, fcleardirty: super::super::Foundation::BOOL, fsaveallproperties: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IPersistMediaPropertyBag_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPersistMediaPropertyBag_Impl::Save(this, windows_core::from_raw_borrowed(&ppropbag), core::mem::transmute_copy(&fcleardirty), core::mem::transmute_copy(&fsaveallproperties)).into()
        }
        Self {
            base__: 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 == &<IPersistMediaPropertyBag as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
pub trait IPin_Impl: Sized {
    fn Connect(&self, preceivepin: Option<&IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn ReceiveConnection(&self, pconnector: Option<&IPin>, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn Disconnect(&self) -> windows_core::Result<()>;
    fn ConnectedTo(&self) -> windows_core::Result<IPin>;
    fn ConnectionMediaType(&self, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn QueryPinInfo(&self, pinfo: *mut PIN_INFO) -> windows_core::Result<()>;
    fn QueryDirection(&self) -> windows_core::Result<PIN_DIRECTION>;
    fn QueryId(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn QueryAccept(&self, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT;
    fn EnumMediaTypes(&self) -> windows_core::Result<IEnumMediaTypes>;
    fn QueryInternalConnections(&self, appin: *mut Option<IPin>, npin: *mut u32) -> windows_core::Result<()>;
    fn EndOfStream(&self) -> windows_core::Result<()>;
    fn BeginFlush(&self) -> windows_core::Result<()>;
    fn EndFlush(&self) -> windows_core::Result<()>;
    fn NewSegment(&self, tstart: i64, tstop: i64, drate: f64) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IPin {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_System_Com"))]
impl IPin_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPin_Vtbl
    where
        Identity: IPin_Impl,
    {
        unsafe extern "system" fn Connect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, preceivepin: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::Connect(this, windows_core::from_raw_borrowed(&preceivepin), core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn ReceiveConnection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconnector: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::ReceiveConnection(this, windows_core::from_raw_borrowed(&pconnector), core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::Disconnect(this).into()
        }
        unsafe extern "system" fn ConnectedTo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPin_Impl::ConnectedTo(this) {
                Ok(ok__) => {
                    ppin.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectionMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmt: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::ConnectionMediaType(this, core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn QueryPinInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut PIN_INFO) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::QueryPinInfo(this, core::mem::transmute_copy(&pinfo)).into()
        }
        unsafe extern "system" fn QueryDirection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppindir: *mut PIN_DIRECTION) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPin_Impl::QueryDirection(this) {
                Ok(ok__) => {
                    ppindir.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut windows_core::PWSTR) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPin_Impl::QueryId(this) {
                Ok(ok__) => {
                    id.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryAccept<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::QueryAccept(this, core::mem::transmute_copy(&pmt))
        }
        unsafe extern "system" fn EnumMediaTypes<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: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPin_Impl::EnumMediaTypes(this) {
                Ok(ok__) => {
                    ppenum.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn QueryInternalConnections<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, appin: *mut *mut core::ffi::c_void, npin: *mut u32) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::QueryInternalConnections(this, core::mem::transmute_copy(&appin), core::mem::transmute_copy(&npin)).into()
        }
        unsafe extern "system" fn EndOfStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::EndOfStream(this).into()
        }
        unsafe extern "system" fn BeginFlush<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::BeginFlush(this).into()
        }
        unsafe extern "system" fn EndFlush<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::EndFlush(this).into()
        }
        unsafe extern "system" fn NewSegment<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, tstart: i64, tstop: i64, drate: f64) -> windows_core::HRESULT
        where
            Identity: IPin_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPin_Impl::NewSegment(this, core::mem::transmute_copy(&tstart), core::mem::transmute_copy(&tstop), core::mem::transmute_copy(&drate)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Connect: Connect::<Identity, OFFSET>,
            ReceiveConnection: ReceiveConnection::<Identity, OFFSET>,
            Disconnect: Disconnect::<Identity, OFFSET>,
            ConnectedTo: ConnectedTo::<Identity, OFFSET>,
            ConnectionMediaType: ConnectionMediaType::<Identity, OFFSET>,
            QueryPinInfo: QueryPinInfo::<Identity, OFFSET>,
            QueryDirection: QueryDirection::<Identity, OFFSET>,
            QueryId: QueryId::<Identity, OFFSET>,
            QueryAccept: QueryAccept::<Identity, OFFSET>,
            EnumMediaTypes: EnumMediaTypes::<Identity, OFFSET>,
            QueryInternalConnections: QueryInternalConnections::<Identity, OFFSET>,
            EndOfStream: EndOfStream::<Identity, OFFSET>,
            BeginFlush: BeginFlush::<Identity, OFFSET>,
            EndFlush: EndFlush::<Identity, OFFSET>,
            NewSegment: NewSegment::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPin as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
pub trait IPinConnection_Impl: Sized {
    fn DynamicQueryAccept(&self, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn NotifyEndOfStream(&self, hnotifyevent: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn IsEndPin(&self) -> windows_core::HRESULT;
    fn DynamicDisconnect(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl windows_core::RuntimeName for IPinConnection {}
#[cfg(feature = "Win32_Media_MediaFoundation")]
impl IPinConnection_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPinConnection_Vtbl
    where
        Identity: IPinConnection_Impl,
    {
        unsafe extern "system" fn DynamicQueryAccept<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IPinConnection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinConnection_Impl::DynamicQueryAccept(this, core::mem::transmute_copy(&pmt)).into()
        }
        unsafe extern "system" fn NotifyEndOfStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hnotifyevent: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IPinConnection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinConnection_Impl::NotifyEndOfStream(this, core::mem::transmute_copy(&hnotifyevent)).into()
        }
        unsafe extern "system" fn IsEndPin<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinConnection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinConnection_Impl::IsEndPin(this)
        }
        unsafe extern "system" fn DynamicDisconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinConnection_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinConnection_Impl::DynamicDisconnect(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DynamicQueryAccept: DynamicQueryAccept::<Identity, OFFSET>,
            NotifyEndOfStream: NotifyEndOfStream::<Identity, OFFSET>,
            IsEndPin: IsEndPin::<Identity, OFFSET>,
            DynamicDisconnect: DynamicDisconnect::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPinConnection as windows_core::Interface>::IID
    }
}
pub trait IPinFlowControl_Impl: Sized {
    fn Block(&self, dwblockflags: u32, hevent: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IPinFlowControl {}
impl IPinFlowControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPinFlowControl_Vtbl
    where
        Identity: IPinFlowControl_Impl,
    {
        unsafe extern "system" fn Block<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwblockflags: u32, hevent: super::super::Foundation::HANDLE) -> windows_core::HRESULT
        where
            Identity: IPinFlowControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinFlowControl_Impl::Block(this, core::mem::transmute_copy(&dwblockflags), core::mem::transmute_copy(&hevent)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Block: Block::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPinFlowControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IPinInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Pin(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn ConnectedTo(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn ConnectionMediaType(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn FilterInfo(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Direction(&self) -> windows_core::Result<i32>;
    fn PinID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn MediaTypes(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Connect(&self, ppin: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ConnectDirect(&self, ppin: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ConnectWithType(&self, ppin: Option<&windows_core::IUnknown>, pmediatype: Option<&super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
    fn Disconnect(&self) -> windows_core::Result<()>;
    fn Render(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IPinInfo {}
#[cfg(feature = "Win32_System_Com")]
impl IPinInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IPinInfo_Vtbl
    where
        Identity: IPinInfo_Impl,
    {
        unsafe extern "system" fn Pin<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: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::Pin(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectedTo<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: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::ConnectedTo(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn ConnectionMediaType<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: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::ConnectionMediaType(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FilterInfo<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: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::FilterInfo(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::Name(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Direction<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdirection: *mut i32) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::Direction(this) {
                Ok(ok__) => {
                    ppdirection.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn PinID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strpinid: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::PinID(this) {
                Ok(ok__) => {
                    strpinid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn MediaTypes<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: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IPinInfo_Impl::MediaTypes(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Connect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinInfo_Impl::Connect(this, windows_core::from_raw_borrowed(&ppin)).into()
        }
        unsafe extern "system" fn ConnectDirect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinInfo_Impl::ConnectDirect(this, windows_core::from_raw_borrowed(&ppin)).into()
        }
        unsafe extern "system" fn ConnectWithType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppin: *mut core::ffi::c_void, pmediatype: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinInfo_Impl::ConnectWithType(this, windows_core::from_raw_borrowed(&ppin), windows_core::from_raw_borrowed(&pmediatype)).into()
        }
        unsafe extern "system" fn Disconnect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinInfo_Impl::Disconnect(this).into()
        }
        unsafe extern "system" fn Render<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IPinInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IPinInfo_Impl::Render(this).into()
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Pin: Pin::<Identity, OFFSET>,
            ConnectedTo: ConnectedTo::<Identity, OFFSET>,
            ConnectionMediaType: ConnectionMediaType::<Identity, OFFSET>,
            FilterInfo: FilterInfo::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            Direction: Direction::<Identity, OFFSET>,
            PinID: PinID::<Identity, OFFSET>,
            MediaTypes: MediaTypes::<Identity, OFFSET>,
            Connect: Connect::<Identity, OFFSET>,
            ConnectDirect: ConnectDirect::<Identity, OFFSET>,
            ConnectWithType: ConnectWithType::<Identity, OFFSET>,
            Disconnect: Disconnect::<Identity, OFFSET>,
            Render: Render::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPinInfo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IQualProp_Impl: Sized {
    fn FramesDroppedInRenderer(&self) -> windows_core::Result<i32>;
    fn FramesDrawn(&self) -> windows_core::Result<i32>;
    fn AvgFrameRate(&self) -> windows_core::Result<i32>;
    fn Jitter(&self) -> windows_core::Result<i32>;
    fn AvgSyncOffset(&self) -> windows_core::Result<i32>;
    fn DevSyncOffset(&self) -> windows_core::Result<i32>;
}
impl windows_core::RuntimeName for IQualProp {}
impl IQualProp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQualProp_Vtbl
    where
        Identity: IQualProp_Impl,
    {
        unsafe extern "system" fn FramesDroppedInRenderer<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcframes: *mut i32) -> windows_core::HRESULT
        where
            Identity: IQualProp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQualProp_Impl::FramesDroppedInRenderer(this) {
                Ok(ok__) => {
                    pcframes.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn FramesDrawn<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcframesdrawn: *mut i32) -> windows_core::HRESULT
        where
            Identity: IQualProp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQualProp_Impl::FramesDrawn(this) {
                Ok(ok__) => {
                    pcframesdrawn.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AvgFrameRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piavgframerate: *mut i32) -> windows_core::HRESULT
        where
            Identity: IQualProp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQualProp_Impl::AvgFrameRate(this) {
                Ok(ok__) => {
                    piavgframerate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Jitter<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ijitter: *mut i32) -> windows_core::HRESULT
        where
            Identity: IQualProp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQualProp_Impl::Jitter(this) {
                Ok(ok__) => {
                    ijitter.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AvgSyncOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piavg: *mut i32) -> windows_core::HRESULT
        where
            Identity: IQualProp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQualProp_Impl::AvgSyncOffset(this) {
                Ok(ok__) => {
                    piavg.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn DevSyncOffset<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidev: *mut i32) -> windows_core::HRESULT
        where
            Identity: IQualProp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IQualProp_Impl::DevSyncOffset(this) {
                Ok(ok__) => {
                    pidev.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FramesDroppedInRenderer: FramesDroppedInRenderer::<Identity, OFFSET>,
            FramesDrawn: FramesDrawn::<Identity, OFFSET>,
            AvgFrameRate: AvgFrameRate::<Identity, OFFSET>,
            Jitter: Jitter::<Identity, OFFSET>,
            AvgSyncOffset: AvgSyncOffset::<Identity, OFFSET>,
            DevSyncOffset: DevSyncOffset::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQualProp as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IQualityControl_Impl: Sized {
    fn Notify(&self, pself: Option<&IBaseFilter>, q: &Quality) -> windows_core::Result<()>;
    fn SetSink(&self, piqc: Option<&IQualityControl>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IQualityControl {}
#[cfg(feature = "Win32_System_Com")]
impl IQualityControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQualityControl_Vtbl
    where
        Identity: IQualityControl_Impl,
    {
        unsafe extern "system" fn Notify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pself: *mut core::ffi::c_void, q: Quality) -> windows_core::HRESULT
        where
            Identity: IQualityControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQualityControl_Impl::Notify(this, windows_core::from_raw_borrowed(&pself), core::mem::transmute(&q)).into()
        }
        unsafe extern "system" fn SetSink<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piqc: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IQualityControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQualityControl_Impl::SetSink(this, windows_core::from_raw_borrowed(&piqc)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Notify: Notify::<Identity, OFFSET>, SetSink: SetSink::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQualityControl as windows_core::Interface>::IID
    }
}
pub trait IQueueCommand_Impl: Sized {
    fn InvokeAtStreamTime(&self, pcmd: *mut Option<IDeferredCommand>, time: f64, iid: *const windows_core::GUID, dispidmethod: i32, wflags: i16, cargs: i32, pdispparams: *const windows_core::VARIANT, pvarresult: *mut windows_core::VARIANT, puargerr: *mut i16) -> windows_core::Result<()>;
    fn InvokeAtPresentationTime(&self, pcmd: *mut Option<IDeferredCommand>, time: f64, iid: *const windows_core::GUID, dispidmethod: i32, wflags: i16, cargs: i32, pdispparams: *const windows_core::VARIANT, pvarresult: *mut windows_core::VARIANT, puargerr: *mut i16) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IQueueCommand {}
impl IQueueCommand_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IQueueCommand_Vtbl
    where
        Identity: IQueueCommand_Impl,
    {
        unsafe extern "system" fn InvokeAtStreamTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcmd: *mut *mut core::ffi::c_void, time: f64, iid: *const windows_core::GUID, dispidmethod: i32, wflags: i16, cargs: i32, pdispparams: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarresult: *mut core::mem::MaybeUninit<windows_core::VARIANT>, puargerr: *mut i16) -> windows_core::HRESULT
        where
            Identity: IQueueCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueueCommand_Impl::InvokeAtStreamTime(this, core::mem::transmute_copy(&pcmd), core::mem::transmute_copy(&time), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&dispidmethod), core::mem::transmute_copy(&wflags), core::mem::transmute_copy(&cargs), core::mem::transmute_copy(&pdispparams), core::mem::transmute_copy(&pvarresult), core::mem::transmute_copy(&puargerr)).into()
        }
        unsafe extern "system" fn InvokeAtPresentationTime<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcmd: *mut *mut core::ffi::c_void, time: f64, iid: *const windows_core::GUID, dispidmethod: i32, wflags: i16, cargs: i32, pdispparams: *const core::mem::MaybeUninit<windows_core::VARIANT>, pvarresult: *mut core::mem::MaybeUninit<windows_core::VARIANT>, puargerr: *mut i16) -> windows_core::HRESULT
        where
            Identity: IQueueCommand_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IQueueCommand_Impl::InvokeAtPresentationTime(this, core::mem::transmute_copy(&pcmd), core::mem::transmute_copy(&time), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&dispidmethod), core::mem::transmute_copy(&wflags), core::mem::transmute_copy(&cargs), core::mem::transmute_copy(&pdispparams), core::mem::transmute_copy(&pvarresult), core::mem::transmute_copy(&puargerr)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InvokeAtStreamTime: InvokeAtStreamTime::<Identity, OFFSET>,
            InvokeAtPresentationTime: InvokeAtPresentationTime::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueueCommand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
pub trait IRegFilterInfo_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Filter(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IRegFilterInfo {}
#[cfg(feature = "Win32_System_Com")]
impl IRegFilterInfo_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRegFilterInfo_Vtbl
    where
        Identity: IRegFilterInfo_Impl,
    {
        unsafe extern "system" fn Name<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strname: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IRegFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IRegFilterInfo_Impl::Name(this) {
                Ok(ok__) => {
                    strname.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn Filter<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: IRegFilterInfo_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IRegFilterInfo_Impl::Filter(this) {
                Ok(ok__) => {
                    ppunk.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), Name: Name::<Identity, OFFSET>, Filter: Filter::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRegFilterInfo as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
pub trait IRegisterServiceProvider_Impl: Sized {
    fn RegisterService(&self, guidservice: *const windows_core::GUID, punkobject: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IRegisterServiceProvider {}
impl IRegisterServiceProvider_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IRegisterServiceProvider_Vtbl
    where
        Identity: IRegisterServiceProvider_Impl,
    {
        unsafe extern "system" fn RegisterService<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidservice: *const windows_core::GUID, punkobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IRegisterServiceProvider_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IRegisterServiceProvider_Impl::RegisterService(this, core::mem::transmute_copy(&guidservice), windows_core::from_raw_borrowed(&punkobject)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RegisterService: RegisterService::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRegisterServiceProvider as windows_core::Interface>::IID
    }
}
pub trait IResourceConsumer_Impl: Sized {
    fn AcquireResource(&self, idresource: i32) -> windows_core::Result<()>;
    fn ReleaseResource(&self, idresource: i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IResourceConsumer {}
impl IResourceConsumer_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IResourceConsumer_Vtbl
    where
        Identity: IResourceConsumer_Impl,
    {
        unsafe extern "system" fn AcquireResource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idresource: i32) -> windows_core::HRESULT
        where
            Identity: IResourceConsumer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceConsumer_Impl::AcquireResource(this, core::mem::transmute_copy(&idresource)).into()
        }
        unsafe extern "system" fn ReleaseResource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idresource: i32) -> windows_core::HRESULT
        where
            Identity: IResourceConsumer_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceConsumer_Impl::ReleaseResource(this, core::mem::transmute_copy(&idresource)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AcquireResource: AcquireResource::<Identity, OFFSET>,
            ReleaseResource: ReleaseResource::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IResourceConsumer as windows_core::Interface>::IID
    }
}
pub trait IResourceManager_Impl: Sized {
    fn Register(&self, pname: &windows_core::PCWSTR, cresource: i32) -> windows_core::Result<i32>;
    fn RegisterGroup(&self, pname: &windows_core::PCWSTR, cresource: i32, paltokens: *const i32) -> windows_core::Result<i32>;
    fn RequestResource(&self, idresource: i32, pfocusobject: Option<&windows_core::IUnknown>, pconsumer: Option<&IResourceConsumer>) -> windows_core::Result<()>;
    fn NotifyAcquire(&self, idresource: i32, pconsumer: Option<&IResourceConsumer>, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn NotifyRelease(&self, idresource: i32, pconsumer: Option<&IResourceConsumer>, bstillwant: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CancelRequest(&self, idresource: i32, pconsumer: Option<&IResourceConsumer>) -> windows_core::Result<()>;
    fn SetFocus(&self, pfocusobject: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ReleaseFocus(&self, pfocusobject: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IResourceManager {}
impl IResourceManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IResourceManager_Vtbl
    where
        Identity: IResourceManager_Impl,
    {
        unsafe extern "system" fn Register<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pname: windows_core::PCWSTR, cresource: i32, pltoken: *mut i32) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IResourceManager_Impl::Register(this, core::mem::transmute(&pname), core::mem::transmute_copy(&cresource)) {
                Ok(ok__) => {
                    pltoken.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RegisterGroup<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pname: windows_core::PCWSTR, cresource: i32, paltokens: *const i32, pltoken: *mut i32) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IResourceManager_Impl::RegisterGroup(this, core::mem::transmute(&pname), core::mem::transmute_copy(&cresource), core::mem::transmute_copy(&paltokens)) {
                Ok(ok__) => {
                    pltoken.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn RequestResource<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idresource: i32, pfocusobject: *mut core::ffi::c_void, pconsumer: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceManager_Impl::RequestResource(this, core::mem::transmute_copy(&idresource), windows_core::from_raw_borrowed(&pfocusobject), windows_core::from_raw_borrowed(&pconsumer)).into()
        }
        unsafe extern "system" fn NotifyAcquire<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idresource: i32, pconsumer: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceManager_Impl::NotifyAcquire(this, core::mem::transmute_copy(&idresource), windows_core::from_raw_borrowed(&pconsumer), core::mem::transmute_copy(&hr)).into()
        }
        unsafe extern "system" fn NotifyRelease<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idresource: i32, pconsumer: *mut core::ffi::c_void, bstillwant: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceManager_Impl::NotifyRelease(this, core::mem::transmute_copy(&idresource), windows_core::from_raw_borrowed(&pconsumer), core::mem::transmute_copy(&bstillwant)).into()
        }
        unsafe extern "system" fn CancelRequest<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, idresource: i32, pconsumer: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceManager_Impl::CancelRequest(this, core::mem::transmute_copy(&idresource), windows_core::from_raw_borrowed(&pconsumer)).into()
        }
        unsafe extern "system" fn SetFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfocusobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceManager_Impl::SetFocus(this, windows_core::from_raw_borrowed(&pfocusobject)).into()
        }
        unsafe extern "system" fn ReleaseFocus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfocusobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IResourceManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IResourceManager_Impl::ReleaseFocus(this, windows_core::from_raw_borrowed(&pfocusobject)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, OFFSET>,
            RegisterGroup: RegisterGroup::<Identity, OFFSET>,
            RequestResource: RequestResource::<Identity, OFFSET>,
            NotifyAcquire: NotifyAcquire::<Identity, OFFSET>,
            NotifyRelease: NotifyRelease::<Identity, OFFSET>,
            CancelRequest: CancelRequest::<Identity, OFFSET>,
            SetFocus: SetFocus::<Identity, OFFSET>,
            ReleaseFocus: ReleaseFocus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IResourceManager as windows_core::Interface>::IID
    }
}
pub trait ISeekingPassThru_Impl: Sized {
    fn Init(&self, bsupportrendering: super::super::Foundation::BOOL, ppin: Option<&IPin>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISeekingPassThru {}
impl ISeekingPassThru_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISeekingPassThru_Vtbl
    where
        Identity: ISeekingPassThru_Impl,
    {
        unsafe extern "system" fn Init<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsupportrendering: super::super::Foundation::BOOL, ppin: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: ISeekingPassThru_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISeekingPassThru_Impl::Init(this, core::mem::transmute_copy(&bsupportrendering), windows_core::from_raw_borrowed(&ppin)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISeekingPassThru as windows_core::Interface>::IID
    }
}
pub trait ISelector_Impl: Sized {
    fn NumSources(&self) -> windows_core::Result<u32>;
    fn SourceNodeId(&self) -> windows_core::Result<u32>;
    fn SetSourceNodeId(&self, dwpinid: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for ISelector {}
impl ISelector_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISelector_Vtbl
    where
        Identity: ISelector_Impl,
    {
        unsafe extern "system" fn NumSources<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumsources: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISelector_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISelector_Impl::NumSources(this) {
                Ok(ok__) => {
                    pdwnumsources.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SourceNodeId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwpinid: *mut u32) -> windows_core::HRESULT
        where
            Identity: ISelector_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISelector_Impl::SourceNodeId(this) {
                Ok(ok__) => {
                    pdwpinid.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetSourceNodeId<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwpinid: u32) -> windows_core::HRESULT
        where
            Identity: ISelector_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            ISelector_Impl::SetSourceNodeId(this, core::mem::transmute_copy(&dwpinid)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            NumSources: NumSources::<Identity, OFFSET>,
            SourceNodeId: SourceNodeId::<Identity, OFFSET>,
            SetSourceNodeId: SetSourceNodeId::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISelector as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
pub trait ISpecifyParticularPages_Impl: Sized {
    fn GetPages(&self, guidwhatpages: *const windows_core::GUID) -> windows_core::Result<super::super::System::Ole::CAUUID>;
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for ISpecifyParticularPages {}
#[cfg(feature = "Win32_System_Ole")]
impl ISpecifyParticularPages_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> ISpecifyParticularPages_Vtbl
    where
        Identity: ISpecifyParticularPages_Impl,
    {
        unsafe extern "system" fn GetPages<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidwhatpages: *const windows_core::GUID, ppages: *mut super::super::System::Ole::CAUUID) -> windows_core::HRESULT
        where
            Identity: ISpecifyParticularPages_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match ISpecifyParticularPages_Impl::GetPages(this, core::mem::transmute_copy(&guidwhatpages)) {
                Ok(ok__) => {
                    ppages.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetPages: GetPages::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISpecifyParticularPages as windows_core::Interface>::IID
    }
}
pub trait IStreamBuilder_Impl: Sized {
    fn Render(&self, ppinout: Option<&IPin>, pgraph: Option<&IGraphBuilder>) -> windows_core::Result<()>;
    fn Backout(&self, ppinout: Option<&IPin>, pgraph: Option<&IGraphBuilder>) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamBuilder {}
impl IStreamBuilder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamBuilder_Vtbl
    where
        Identity: IStreamBuilder_Impl,
    {
        unsafe extern "system" fn Render<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinout: *mut core::ffi::c_void, pgraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBuilder_Impl::Render(this, windows_core::from_raw_borrowed(&ppinout), windows_core::from_raw_borrowed(&pgraph)).into()
        }
        unsafe extern "system" fn Backout<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppinout: *mut core::ffi::c_void, pgraph: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamBuilder_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamBuilder_Impl::Backout(this, windows_core::from_raw_borrowed(&ppinout), windows_core::from_raw_borrowed(&pgraph)).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Render: Render::<Identity, OFFSET>, Backout: Backout::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamBuilder as windows_core::Interface>::IID
    }
}
pub trait IStreamSample_Impl: Sized {
    fn GetMediaStream(&self, ppmediastream: *const Option<IMediaStream>) -> windows_core::Result<()>;
    fn GetSampleTimes(&self, pstarttime: *mut i64, pendtime: *mut i64, pcurrenttime: *mut i64) -> windows_core::Result<()>;
    fn SetSampleTimes(&self, pstarttime: *const i64, pendtime: *const i64) -> windows_core::Result<()>;
    fn Update(&self, dwflags: u32, hevent: super::super::Foundation::HANDLE, pfnapc: super::super::Foundation::PAPCFUNC, dwapcdata: usize) -> windows_core::Result<()>;
    fn CompletionStatus(&self, dwflags: u32, dwmilliseconds: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IStreamSample {}
impl IStreamSample_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IStreamSample_Vtbl
    where
        Identity: IStreamSample_Impl,
    {
        unsafe extern "system" fn GetMediaStream<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppmediastream: *const *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamSample_Impl::GetMediaStream(this, core::mem::transmute_copy(&ppmediastream)).into()
        }
        unsafe extern "system" fn GetSampleTimes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstarttime: *mut i64, pendtime: *mut i64, pcurrenttime: *mut i64) -> windows_core::HRESULT
        where
            Identity: IStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamSample_Impl::GetSampleTimes(this, core::mem::transmute_copy(&pstarttime), core::mem::transmute_copy(&pendtime), core::mem::transmute_copy(&pcurrenttime)).into()
        }
        unsafe extern "system" fn SetSampleTimes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstarttime: *const i64, pendtime: *const i64) -> windows_core::HRESULT
        where
            Identity: IStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamSample_Impl::SetSampleTimes(this, core::mem::transmute_copy(&pstarttime), core::mem::transmute_copy(&pendtime)).into()
        }
        unsafe extern "system" fn Update<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, hevent: super::super::Foundation::HANDLE, pfnapc: super::super::Foundation::PAPCFUNC, dwapcdata: usize) -> windows_core::HRESULT
        where
            Identity: IStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamSample_Impl::Update(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&hevent), core::mem::transmute_copy(&pfnapc), core::mem::transmute_copy(&dwapcdata)).into()
        }
        unsafe extern "system" fn CompletionStatus<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, dwmilliseconds: u32) -> windows_core::HRESULT
        where
            Identity: IStreamSample_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IStreamSample_Impl::CompletionStatus(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&dwmilliseconds)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMediaStream: GetMediaStream::<Identity, OFFSET>,
            GetSampleTimes: GetSampleTimes::<Identity, OFFSET>,
            SetSampleTimes: SetSampleTimes::<Identity, OFFSET>,
            Update: Update::<Identity, OFFSET>,
            CompletionStatus: CompletionStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamSample as windows_core::Interface>::IID
    }
}
pub trait IVMRAspectRatioControl_Impl: Sized {
    fn GetAspectRatioMode(&self) -> windows_core::Result<u32>;
    fn SetAspectRatioMode(&self, dwarmode: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVMRAspectRatioControl {}
impl IVMRAspectRatioControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRAspectRatioControl_Vtbl
    where
        Identity: IVMRAspectRatioControl_Impl,
    {
        unsafe extern "system" fn GetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdwarmode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRAspectRatioControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRAspectRatioControl_Impl::GetAspectRatioMode(this) {
                Ok(ok__) => {
                    lpdwarmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwarmode: u32) -> windows_core::HRESULT
        where
            Identity: IVMRAspectRatioControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRAspectRatioControl_Impl::SetAspectRatioMode(this, core::mem::transmute_copy(&dwarmode)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAspectRatioMode: GetAspectRatioMode::<Identity, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRAspectRatioControl as windows_core::Interface>::IID
    }
}
pub trait IVMRAspectRatioControl9_Impl: Sized {
    fn GetAspectRatioMode(&self) -> windows_core::Result<u32>;
    fn SetAspectRatioMode(&self, dwarmode: u32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVMRAspectRatioControl9 {}
impl IVMRAspectRatioControl9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRAspectRatioControl9_Vtbl
    where
        Identity: IVMRAspectRatioControl9_Impl,
    {
        unsafe extern "system" fn GetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdwarmode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRAspectRatioControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRAspectRatioControl9_Impl::GetAspectRatioMode(this) {
                Ok(ok__) => {
                    lpdwarmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwarmode: u32) -> windows_core::HRESULT
        where
            Identity: IVMRAspectRatioControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRAspectRatioControl9_Impl::SetAspectRatioMode(this, core::mem::transmute_copy(&dwarmode)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAspectRatioMode: GetAspectRatioMode::<Identity, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRAspectRatioControl9 as windows_core::Interface>::IID
    }
}
pub trait IVMRDeinterlaceControl_Impl: Sized {
    fn GetNumberOfDeinterlaceModes(&self, lpvideodescription: *const VMRVideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetDeinterlaceModeCaps(&self, lpdeinterlacemode: *const windows_core::GUID, lpvideodescription: *const VMRVideoDesc, lpdeinterlacecaps: *mut VMRDeinterlaceCaps) -> windows_core::Result<()>;
    fn GetDeinterlaceMode(&self, dwstreamid: u32) -> windows_core::Result<windows_core::GUID>;
    fn SetDeinterlaceMode(&self, dwstreamid: u32, lpdeinterlacemode: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetDeinterlacePrefs(&self) -> windows_core::Result<u32>;
    fn SetDeinterlacePrefs(&self, dwdeinterlaceprefs: u32) -> windows_core::Result<()>;
    fn GetActualDeinterlaceMode(&self, dwstreamid: u32) -> windows_core::Result<windows_core::GUID>;
}
impl windows_core::RuntimeName for IVMRDeinterlaceControl {}
impl IVMRDeinterlaceControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRDeinterlaceControl_Vtbl
    where
        Identity: IVMRDeinterlaceControl_Impl,
    {
        unsafe extern "system" fn GetNumberOfDeinterlaceModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpvideodescription: *const VMRVideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl_Impl::GetNumberOfDeinterlaceModes(this, core::mem::transmute_copy(&lpvideodescription), core::mem::transmute_copy(&lpdwnumdeinterlacemodes), core::mem::transmute_copy(&lpdeinterlacemodes)).into()
        }
        unsafe extern "system" fn GetDeinterlaceModeCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdeinterlacemode: *const windows_core::GUID, lpvideodescription: *const VMRVideoDesc, lpdeinterlacecaps: *mut VMRDeinterlaceCaps) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl_Impl::GetDeinterlaceModeCaps(this, core::mem::transmute_copy(&lpdeinterlacemode), core::mem::transmute_copy(&lpvideodescription), core::mem::transmute_copy(&lpdeinterlacecaps)).into()
        }
        unsafe extern "system" fn GetDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRDeinterlaceControl_Impl::GetDeinterlaceMode(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    lpdeinterlacemode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl_Impl::SetDeinterlaceMode(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&lpdeinterlacemode)).into()
        }
        unsafe extern "system" fn GetDeinterlacePrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdwdeinterlaceprefs: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRDeinterlaceControl_Impl::GetDeinterlacePrefs(this) {
                Ok(ok__) => {
                    lpdwdeinterlaceprefs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeinterlacePrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwdeinterlaceprefs: u32) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl_Impl::SetDeinterlacePrefs(this, core::mem::transmute_copy(&dwdeinterlaceprefs)).into()
        }
        unsafe extern "system" fn GetActualDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRDeinterlaceControl_Impl::GetActualDeinterlaceMode(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    lpdeinterlacemode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfDeinterlaceModes: GetNumberOfDeinterlaceModes::<Identity, OFFSET>,
            GetDeinterlaceModeCaps: GetDeinterlaceModeCaps::<Identity, OFFSET>,
            GetDeinterlaceMode: GetDeinterlaceMode::<Identity, OFFSET>,
            SetDeinterlaceMode: SetDeinterlaceMode::<Identity, OFFSET>,
            GetDeinterlacePrefs: GetDeinterlacePrefs::<Identity, OFFSET>,
            SetDeinterlacePrefs: SetDeinterlacePrefs::<Identity, OFFSET>,
            GetActualDeinterlaceMode: GetActualDeinterlaceMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRDeinterlaceControl as windows_core::Interface>::IID
    }
}
pub trait IVMRDeinterlaceControl9_Impl: Sized {
    fn GetNumberOfDeinterlaceModes(&self, lpvideodescription: *const VMR9VideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetDeinterlaceModeCaps(&self, lpdeinterlacemode: *const windows_core::GUID, lpvideodescription: *const VMR9VideoDesc, lpdeinterlacecaps: *mut VMR9DeinterlaceCaps) -> windows_core::Result<()>;
    fn GetDeinterlaceMode(&self, dwstreamid: u32) -> windows_core::Result<windows_core::GUID>;
    fn SetDeinterlaceMode(&self, dwstreamid: u32, lpdeinterlacemode: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetDeinterlacePrefs(&self) -> windows_core::Result<u32>;
    fn SetDeinterlacePrefs(&self, dwdeinterlaceprefs: u32) -> windows_core::Result<()>;
    fn GetActualDeinterlaceMode(&self, dwstreamid: u32) -> windows_core::Result<windows_core::GUID>;
}
impl windows_core::RuntimeName for IVMRDeinterlaceControl9 {}
impl IVMRDeinterlaceControl9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRDeinterlaceControl9_Vtbl
    where
        Identity: IVMRDeinterlaceControl9_Impl,
    {
        unsafe extern "system" fn GetNumberOfDeinterlaceModes<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpvideodescription: *const VMR9VideoDesc, lpdwnumdeinterlacemodes: *mut u32, lpdeinterlacemodes: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl9_Impl::GetNumberOfDeinterlaceModes(this, core::mem::transmute_copy(&lpvideodescription), core::mem::transmute_copy(&lpdwnumdeinterlacemodes), core::mem::transmute_copy(&lpdeinterlacemodes)).into()
        }
        unsafe extern "system" fn GetDeinterlaceModeCaps<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdeinterlacemode: *const windows_core::GUID, lpvideodescription: *const VMR9VideoDesc, lpdeinterlacecaps: *mut VMR9DeinterlaceCaps) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl9_Impl::GetDeinterlaceModeCaps(this, core::mem::transmute_copy(&lpdeinterlacemode), core::mem::transmute_copy(&lpvideodescription), core::mem::transmute_copy(&lpdeinterlacecaps)).into()
        }
        unsafe extern "system" fn GetDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRDeinterlaceControl9_Impl::GetDeinterlaceMode(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    lpdeinterlacemode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *const windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl9_Impl::SetDeinterlaceMode(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&lpdeinterlacemode)).into()
        }
        unsafe extern "system" fn GetDeinterlacePrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdwdeinterlaceprefs: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRDeinterlaceControl9_Impl::GetDeinterlacePrefs(this) {
                Ok(ok__) => {
                    lpdwdeinterlaceprefs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDeinterlacePrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwdeinterlaceprefs: u32) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRDeinterlaceControl9_Impl::SetDeinterlacePrefs(this, core::mem::transmute_copy(&dwdeinterlaceprefs)).into()
        }
        unsafe extern "system" fn GetActualDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpdeinterlacemode: *mut windows_core::GUID) -> windows_core::HRESULT
        where
            Identity: IVMRDeinterlaceControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRDeinterlaceControl9_Impl::GetActualDeinterlaceMode(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    lpdeinterlacemode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfDeinterlaceModes: GetNumberOfDeinterlaceModes::<Identity, OFFSET>,
            GetDeinterlaceModeCaps: GetDeinterlaceModeCaps::<Identity, OFFSET>,
            GetDeinterlaceMode: GetDeinterlaceMode::<Identity, OFFSET>,
            SetDeinterlaceMode: SetDeinterlaceMode::<Identity, OFFSET>,
            GetDeinterlacePrefs: GetDeinterlacePrefs::<Identity, OFFSET>,
            SetDeinterlacePrefs: SetDeinterlacePrefs::<Identity, OFFSET>,
            GetActualDeinterlaceMode: GetActualDeinterlaceMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRDeinterlaceControl9 as windows_core::Interface>::IID
    }
}
pub trait IVMRFilterConfig_Impl: Sized {
    fn SetImageCompositor(&self, lpvmrimgcompositor: Option<&IVMRImageCompositor>) -> windows_core::Result<()>;
    fn SetNumberOfStreams(&self, dwmaxstreams: u32) -> windows_core::Result<()>;
    fn GetNumberOfStreams(&self) -> windows_core::Result<u32>;
    fn SetRenderingPrefs(&self, dwrenderflags: u32) -> windows_core::Result<()>;
    fn GetRenderingPrefs(&self) -> windows_core::Result<u32>;
    fn SetRenderingMode(&self, mode: u32) -> windows_core::Result<()>;
    fn GetRenderingMode(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IVMRFilterConfig {}
impl IVMRFilterConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRFilterConfig_Vtbl
    where
        Identity: IVMRFilterConfig_Impl,
    {
        unsafe extern "system" fn SetImageCompositor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpvmrimgcompositor: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig_Impl::SetImageCompositor(this, windows_core::from_raw_borrowed(&lpvmrimgcompositor)).into()
        }
        unsafe extern "system" fn SetNumberOfStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmaxstreams: u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig_Impl::SetNumberOfStreams(this, core::mem::transmute_copy(&dwmaxstreams)).into()
        }
        unsafe extern "system" fn GetNumberOfStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmaxstreams: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRFilterConfig_Impl::GetNumberOfStreams(this) {
                Ok(ok__) => {
                    pdwmaxstreams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrenderflags: u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig_Impl::SetRenderingPrefs(this, core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwrenderflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRFilterConfig_Impl::GetRenderingPrefs(this) {
                Ok(ok__) => {
                    pdwrenderflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRenderingMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig_Impl::SetRenderingMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetRenderingMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRFilterConfig_Impl::GetRenderingMode(this) {
                Ok(ok__) => {
                    pmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetImageCompositor: SetImageCompositor::<Identity, OFFSET>,
            SetNumberOfStreams: SetNumberOfStreams::<Identity, OFFSET>,
            GetNumberOfStreams: GetNumberOfStreams::<Identity, OFFSET>,
            SetRenderingPrefs: SetRenderingPrefs::<Identity, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, OFFSET>,
            SetRenderingMode: SetRenderingMode::<Identity, OFFSET>,
            GetRenderingMode: GetRenderingMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRFilterConfig as windows_core::Interface>::IID
    }
}
pub trait IVMRFilterConfig9_Impl: Sized {
    fn SetImageCompositor(&self, lpvmrimgcompositor: Option<&IVMRImageCompositor9>) -> windows_core::Result<()>;
    fn SetNumberOfStreams(&self, dwmaxstreams: u32) -> windows_core::Result<()>;
    fn GetNumberOfStreams(&self) -> windows_core::Result<u32>;
    fn SetRenderingPrefs(&self, dwrenderflags: u32) -> windows_core::Result<()>;
    fn GetRenderingPrefs(&self) -> windows_core::Result<u32>;
    fn SetRenderingMode(&self, mode: u32) -> windows_core::Result<()>;
    fn GetRenderingMode(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IVMRFilterConfig9 {}
impl IVMRFilterConfig9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRFilterConfig9_Vtbl
    where
        Identity: IVMRFilterConfig9_Impl,
    {
        unsafe extern "system" fn SetImageCompositor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpvmrimgcompositor: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig9_Impl::SetImageCompositor(this, windows_core::from_raw_borrowed(&lpvmrimgcompositor)).into()
        }
        unsafe extern "system" fn SetNumberOfStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmaxstreams: u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig9_Impl::SetNumberOfStreams(this, core::mem::transmute_copy(&dwmaxstreams)).into()
        }
        unsafe extern "system" fn GetNumberOfStreams<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmaxstreams: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRFilterConfig9_Impl::GetNumberOfStreams(this) {
                Ok(ok__) => {
                    pdwmaxstreams.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrenderflags: u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig9_Impl::SetRenderingPrefs(this, core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwrenderflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRFilterConfig9_Impl::GetRenderingPrefs(this) {
                Ok(ok__) => {
                    pdwrenderflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetRenderingMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRFilterConfig9_Impl::SetRenderingMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetRenderingMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRFilterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRFilterConfig9_Impl::GetRenderingMode(this) {
                Ok(ok__) => {
                    pmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetImageCompositor: SetImageCompositor::<Identity, OFFSET>,
            SetNumberOfStreams: SetNumberOfStreams::<Identity, OFFSET>,
            GetNumberOfStreams: GetNumberOfStreams::<Identity, OFFSET>,
            SetRenderingPrefs: SetRenderingPrefs::<Identity, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, OFFSET>,
            SetRenderingMode: SetRenderingMode::<Identity, OFFSET>,
            GetRenderingMode: GetRenderingMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRFilterConfig9 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Media_MediaFoundation"))]
pub trait IVMRImageCompositor_Impl: Sized {
    fn InitCompositionTarget(&self, pd3ddevice: Option<&windows_core::IUnknown>, pddsrendertarget: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> windows_core::Result<()>;
    fn TermCompositionTarget(&self, pd3ddevice: Option<&windows_core::IUnknown>, pddsrendertarget: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> windows_core::Result<()>;
    fn SetStreamMediaType(&self, dwstrmid: u32, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE, ftexture: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CompositeImage(&self, pd3ddevice: Option<&windows_core::IUnknown>, pddsrendertarget: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface7>, pmtrendertarget: *const super::MediaFoundation::AM_MEDIA_TYPE, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *const VMRVIDEOSTREAMINFO, cstreams: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Media_MediaFoundation"))]
impl windows_core::RuntimeName for IVMRImageCompositor {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Media_MediaFoundation"))]
impl IVMRImageCompositor_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImageCompositor_Vtbl
    where
        Identity: IVMRImageCompositor_Impl,
    {
        unsafe extern "system" fn InitCompositionTarget<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pd3ddevice: *mut core::ffi::c_void, pddsrendertarget: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor_Impl::InitCompositionTarget(this, windows_core::from_raw_borrowed(&pd3ddevice), windows_core::from_raw_borrowed(&pddsrendertarget)).into()
        }
        unsafe extern "system" fn TermCompositionTarget<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pd3ddevice: *mut core::ffi::c_void, pddsrendertarget: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor_Impl::TermCompositionTarget(this, windows_core::from_raw_borrowed(&pd3ddevice), windows_core::from_raw_borrowed(&pddsrendertarget)).into()
        }
        unsafe extern "system" fn SetStreamMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstrmid: u32, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE, ftexture: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor_Impl::SetStreamMediaType(this, core::mem::transmute_copy(&dwstrmid), core::mem::transmute_copy(&pmt), core::mem::transmute_copy(&ftexture)).into()
        }
        unsafe extern "system" fn CompositeImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pd3ddevice: *mut core::ffi::c_void, pddsrendertarget: *mut core::ffi::c_void, pmtrendertarget: *const super::MediaFoundation::AM_MEDIA_TYPE, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *const VMRVIDEOSTREAMINFO, cstreams: u32) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor_Impl::CompositeImage(this, windows_core::from_raw_borrowed(&pd3ddevice), windows_core::from_raw_borrowed(&pddsrendertarget), core::mem::transmute_copy(&pmtrendertarget), core::mem::transmute_copy(&rtstart), core::mem::transmute_copy(&rtend), core::mem::transmute_copy(&dwclrbkgnd), core::mem::transmute_copy(&pvideostreaminfo), core::mem::transmute_copy(&cstreams)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitCompositionTarget: InitCompositionTarget::<Identity, OFFSET>,
            TermCompositionTarget: TermCompositionTarget::<Identity, OFFSET>,
            SetStreamMediaType: SetStreamMediaType::<Identity, OFFSET>,
            CompositeImage: CompositeImage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImageCompositor as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Media_MediaFoundation"))]
pub trait IVMRImageCompositor9_Impl: Sized {
    fn InitCompositionDevice(&self, pd3ddevice: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn TermCompositionDevice(&self, pd3ddevice: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn SetStreamMediaType(&self, dwstrmid: u32, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE, ftexture: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn CompositeImage(&self, pd3ddevice: Option<&windows_core::IUnknown>, pddsrendertarget: Option<&super::super::Graphics::Direct3D9::IDirect3DSurface9>, pmtrendertarget: *const super::MediaFoundation::AM_MEDIA_TYPE, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *const VMR9VideoStreamInfo, cstreams: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Media_MediaFoundation"))]
impl windows_core::RuntimeName for IVMRImageCompositor9 {}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Media_MediaFoundation"))]
impl IVMRImageCompositor9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImageCompositor9_Vtbl
    where
        Identity: IVMRImageCompositor9_Impl,
    {
        unsafe extern "system" fn InitCompositionDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pd3ddevice: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor9_Impl::InitCompositionDevice(this, windows_core::from_raw_borrowed(&pd3ddevice)).into()
        }
        unsafe extern "system" fn TermCompositionDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pd3ddevice: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor9_Impl::TermCompositionDevice(this, windows_core::from_raw_borrowed(&pd3ddevice)).into()
        }
        unsafe extern "system" fn SetStreamMediaType<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstrmid: u32, pmt: *const super::MediaFoundation::AM_MEDIA_TYPE, ftexture: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor9_Impl::SetStreamMediaType(this, core::mem::transmute_copy(&dwstrmid), core::mem::transmute_copy(&pmt), core::mem::transmute_copy(&ftexture)).into()
        }
        unsafe extern "system" fn CompositeImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pd3ddevice: *mut core::ffi::c_void, pddsrendertarget: *mut core::ffi::c_void, pmtrendertarget: *const super::MediaFoundation::AM_MEDIA_TYPE, rtstart: i64, rtend: i64, dwclrbkgnd: u32, pvideostreaminfo: *const VMR9VideoStreamInfo, cstreams: u32) -> windows_core::HRESULT
        where
            Identity: IVMRImageCompositor9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImageCompositor9_Impl::CompositeImage(this, windows_core::from_raw_borrowed(&pd3ddevice), windows_core::from_raw_borrowed(&pddsrendertarget), core::mem::transmute_copy(&pmtrendertarget), core::mem::transmute_copy(&rtstart), core::mem::transmute_copy(&rtend), core::mem::transmute_copy(&dwclrbkgnd), core::mem::transmute_copy(&pvideostreaminfo), core::mem::transmute_copy(&cstreams)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitCompositionDevice: InitCompositionDevice::<Identity, OFFSET>,
            TermCompositionDevice: TermCompositionDevice::<Identity, OFFSET>,
            SetStreamMediaType: SetStreamMediaType::<Identity, OFFSET>,
            CompositeImage: CompositeImage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImageCompositor9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVMRImagePresenter_Impl: Sized {
    fn StartPresenting(&self, dwuserid: usize) -> windows_core::Result<()>;
    fn StopPresenting(&self, dwuserid: usize) -> windows_core::Result<()>;
    fn PresentImage(&self, dwuserid: usize, lppresinfo: *const VMRPRESENTATIONINFO) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVMRImagePresenter {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVMRImagePresenter_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImagePresenter_Vtbl
    where
        Identity: IVMRImagePresenter_Impl,
    {
        unsafe extern "system" fn StartPresenting<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenter_Impl::StartPresenting(this, core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn StopPresenting<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenter_Impl::StopPresenting(this, core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn PresentImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lppresinfo: *const VMRPRESENTATIONINFO) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenter_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenter_Impl::PresentImage(this, core::mem::transmute_copy(&dwuserid), core::mem::transmute_copy(&lppresinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartPresenting: StartPresenting::<Identity, OFFSET>,
            StopPresenting: StopPresenting::<Identity, OFFSET>,
            PresentImage: PresentImage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImagePresenter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
pub trait IVMRImagePresenter9_Impl: Sized {
    fn StartPresenting(&self, dwuserid: usize) -> windows_core::Result<()>;
    fn StopPresenting(&self, dwuserid: usize) -> windows_core::Result<()>;
    fn PresentImage(&self, dwuserid: usize, lppresinfo: *const VMR9PresentationInfo) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl windows_core::RuntimeName for IVMRImagePresenter9 {}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl IVMRImagePresenter9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImagePresenter9_Vtbl
    where
        Identity: IVMRImagePresenter9_Impl,
    {
        unsafe extern "system" fn StartPresenting<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenter9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenter9_Impl::StartPresenting(this, core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn StopPresenting<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenter9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenter9_Impl::StopPresenting(this, core::mem::transmute_copy(&dwuserid)).into()
        }
        unsafe extern "system" fn PresentImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lppresinfo: *const VMR9PresentationInfo) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenter9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenter9_Impl::PresentImage(this, core::mem::transmute_copy(&dwuserid), core::mem::transmute_copy(&lppresinfo)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartPresenting: StartPresenting::<Identity, OFFSET>,
            StopPresenting: StopPresenting::<Identity, OFFSET>,
            PresentImage: PresentImage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImagePresenter9 as windows_core::Interface>::IID
    }
}
pub trait IVMRImagePresenterConfig_Impl: Sized {
    fn SetRenderingPrefs(&self, dwrenderflags: u32) -> windows_core::Result<()>;
    fn GetRenderingPrefs(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IVMRImagePresenterConfig {}
impl IVMRImagePresenterConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImagePresenterConfig_Vtbl
    where
        Identity: IVMRImagePresenterConfig_Impl,
    {
        unsafe extern "system" fn SetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrenderflags: u32) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenterConfig_Impl::SetRenderingPrefs(this, core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrenderflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenterConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRImagePresenterConfig_Impl::GetRenderingPrefs(this) {
                Ok(ok__) => {
                    dwrenderflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetRenderingPrefs: SetRenderingPrefs::<Identity, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImagePresenterConfig as windows_core::Interface>::IID
    }
}
pub trait IVMRImagePresenterConfig9_Impl: Sized {
    fn SetRenderingPrefs(&self, dwrenderflags: u32) -> windows_core::Result<()>;
    fn GetRenderingPrefs(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IVMRImagePresenterConfig9 {}
impl IVMRImagePresenterConfig9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImagePresenterConfig9_Vtbl
    where
        Identity: IVMRImagePresenterConfig9_Impl,
    {
        unsafe extern "system" fn SetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrenderflags: u32) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenterConfig9_Impl::SetRenderingPrefs(this, core::mem::transmute_copy(&dwrenderflags)).into()
        }
        unsafe extern "system" fn GetRenderingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwrenderflags: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenterConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRImagePresenterConfig9_Impl::GetRenderingPrefs(this) {
                Ok(ok__) => {
                    dwrenderflags.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetRenderingPrefs: SetRenderingPrefs::<Identity, OFFSET>,
            GetRenderingPrefs: GetRenderingPrefs::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImagePresenterConfig9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVMRImagePresenterExclModeConfig_Impl: Sized + IVMRImagePresenterConfig_Impl {
    fn SetXlcModeDDObjAndPrimarySurface(&self, lpddobj: Option<&super::super::Graphics::DirectDraw::IDirectDraw7>, lpprimarysurf: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> windows_core::Result<()>;
    fn GetXlcModeDDObjAndPrimarySurface(&self, lpddobj: *mut Option<super::super::Graphics::DirectDraw::IDirectDraw7>, lpprimarysurf: *mut Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVMRImagePresenterExclModeConfig {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVMRImagePresenterExclModeConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRImagePresenterExclModeConfig_Vtbl
    where
        Identity: IVMRImagePresenterExclModeConfig_Impl,
    {
        unsafe extern "system" fn SetXlcModeDDObjAndPrimarySurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpddobj: *mut core::ffi::c_void, lpprimarysurf: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenterExclModeConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenterExclModeConfig_Impl::SetXlcModeDDObjAndPrimarySurface(this, windows_core::from_raw_borrowed(&lpddobj), windows_core::from_raw_borrowed(&lpprimarysurf)).into()
        }
        unsafe extern "system" fn GetXlcModeDDObjAndPrimarySurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpddobj: *mut *mut core::ffi::c_void, lpprimarysurf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRImagePresenterExclModeConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRImagePresenterExclModeConfig_Impl::GetXlcModeDDObjAndPrimarySurface(this, core::mem::transmute_copy(&lpddobj), core::mem::transmute_copy(&lpprimarysurf)).into()
        }
        Self {
            base__: IVMRImagePresenterConfig_Vtbl::new::<Identity, OFFSET>(),
            SetXlcModeDDObjAndPrimarySurface: SetXlcModeDDObjAndPrimarySurface::<Identity, OFFSET>,
            GetXlcModeDDObjAndPrimarySurface: GetXlcModeDDObjAndPrimarySurface::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRImagePresenterExclModeConfig as windows_core::Interface>::IID || iid == &<IVMRImagePresenterConfig as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRMixerBitmap_Impl: Sized {
    fn SetAlphaBitmap(&self, pbmpparms: *const VMRALPHABITMAP) -> windows_core::Result<()>;
    fn UpdateAlphaBitmapParameters(&self, pbmpparms: *const VMRALPHABITMAP) -> windows_core::Result<()>;
    fn GetAlphaBitmapParameters(&self, pbmpparms: *mut VMRALPHABITMAP) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl windows_core::RuntimeName for IVMRMixerBitmap {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl IVMRMixerBitmap_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRMixerBitmap_Vtbl
    where
        Identity: IVMRMixerBitmap_Impl,
    {
        unsafe extern "system" fn SetAlphaBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbmpparms: *const VMRALPHABITMAP) -> windows_core::HRESULT
        where
            Identity: IVMRMixerBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerBitmap_Impl::SetAlphaBitmap(this, core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn UpdateAlphaBitmapParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbmpparms: *const VMRALPHABITMAP) -> windows_core::HRESULT
        where
            Identity: IVMRMixerBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerBitmap_Impl::UpdateAlphaBitmapParameters(this, core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn GetAlphaBitmapParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbmpparms: *mut VMRALPHABITMAP) -> windows_core::HRESULT
        where
            Identity: IVMRMixerBitmap_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerBitmap_Impl::GetAlphaBitmapParameters(this, core::mem::transmute_copy(&pbmpparms)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlphaBitmap: SetAlphaBitmap::<Identity, OFFSET>,
            UpdateAlphaBitmapParameters: UpdateAlphaBitmapParameters::<Identity, OFFSET>,
            GetAlphaBitmapParameters: GetAlphaBitmapParameters::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRMixerBitmap as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRMixerBitmap9_Impl: Sized {
    fn SetAlphaBitmap(&self, pbmpparms: *const VMR9AlphaBitmap) -> windows_core::Result<()>;
    fn UpdateAlphaBitmapParameters(&self, pbmpparms: *const VMR9AlphaBitmap) -> windows_core::Result<()>;
    fn GetAlphaBitmapParameters(&self, pbmpparms: *mut VMR9AlphaBitmap) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl windows_core::RuntimeName for IVMRMixerBitmap9 {}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl IVMRMixerBitmap9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRMixerBitmap9_Vtbl
    where
        Identity: IVMRMixerBitmap9_Impl,
    {
        unsafe extern "system" fn SetAlphaBitmap<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbmpparms: *const VMR9AlphaBitmap) -> windows_core::HRESULT
        where
            Identity: IVMRMixerBitmap9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerBitmap9_Impl::SetAlphaBitmap(this, core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn UpdateAlphaBitmapParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbmpparms: *const VMR9AlphaBitmap) -> windows_core::HRESULT
        where
            Identity: IVMRMixerBitmap9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerBitmap9_Impl::UpdateAlphaBitmapParameters(this, core::mem::transmute_copy(&pbmpparms)).into()
        }
        unsafe extern "system" fn GetAlphaBitmapParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbmpparms: *mut VMR9AlphaBitmap) -> windows_core::HRESULT
        where
            Identity: IVMRMixerBitmap9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerBitmap9_Impl::GetAlphaBitmapParameters(this, core::mem::transmute_copy(&pbmpparms)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlphaBitmap: SetAlphaBitmap::<Identity, OFFSET>,
            UpdateAlphaBitmapParameters: UpdateAlphaBitmapParameters::<Identity, OFFSET>,
            GetAlphaBitmapParameters: GetAlphaBitmapParameters::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRMixerBitmap9 as windows_core::Interface>::IID
    }
}
pub trait IVMRMixerControl_Impl: Sized {
    fn SetAlpha(&self, dwstreamid: u32, alpha: f32) -> windows_core::Result<()>;
    fn GetAlpha(&self, dwstreamid: u32) -> windows_core::Result<f32>;
    fn SetZOrder(&self, dwstreamid: u32, dwz: u32) -> windows_core::Result<()>;
    fn GetZOrder(&self, dwstreamid: u32) -> windows_core::Result<u32>;
    fn SetOutputRect(&self, dwstreamid: u32, prect: *const NORMALIZEDRECT) -> windows_core::Result<()>;
    fn GetOutputRect(&self, dwstreamid: u32) -> windows_core::Result<NORMALIZEDRECT>;
    fn SetBackgroundClr(&self, clrbkg: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetBackgroundClr(&self, lpclrbkg: *const super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn SetMixingPrefs(&self, dwmixerprefs: u32) -> windows_core::Result<()>;
    fn GetMixingPrefs(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IVMRMixerControl {}
impl IVMRMixerControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRMixerControl_Vtbl
    where
        Identity: IVMRMixerControl_Impl,
    {
        unsafe extern "system" fn SetAlpha<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, alpha: f32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl_Impl::SetAlpha(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&alpha)).into()
        }
        unsafe extern "system" fn GetAlpha<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, palpha: *mut f32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl_Impl::GetAlpha(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    palpha.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetZOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, dwz: u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl_Impl::SetZOrder(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&dwz)).into()
        }
        unsafe extern "system" fn GetZOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, pz: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl_Impl::GetZOrder(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    pz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, prect: *const NORMALIZEDRECT) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl_Impl::SetOutputRect(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn GetOutputRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, prect: *mut NORMALIZEDRECT) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl_Impl::GetOutputRect(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackgroundClr<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clrbkg: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl_Impl::SetBackgroundClr(this, core::mem::transmute_copy(&clrbkg)).into()
        }
        unsafe extern "system" fn GetBackgroundClr<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclrbkg: *const super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl_Impl::GetBackgroundClr(this, core::mem::transmute_copy(&lpclrbkg)).into()
        }
        unsafe extern "system" fn SetMixingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmixerprefs: u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl_Impl::SetMixingPrefs(this, core::mem::transmute_copy(&dwmixerprefs)).into()
        }
        unsafe extern "system" fn GetMixingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmixerprefs: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl_Impl::GetMixingPrefs(this) {
                Ok(ok__) => {
                    pdwmixerprefs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlpha: SetAlpha::<Identity, OFFSET>,
            GetAlpha: GetAlpha::<Identity, OFFSET>,
            SetZOrder: SetZOrder::<Identity, OFFSET>,
            GetZOrder: GetZOrder::<Identity, OFFSET>,
            SetOutputRect: SetOutputRect::<Identity, OFFSET>,
            GetOutputRect: GetOutputRect::<Identity, OFFSET>,
            SetBackgroundClr: SetBackgroundClr::<Identity, OFFSET>,
            GetBackgroundClr: GetBackgroundClr::<Identity, OFFSET>,
            SetMixingPrefs: SetMixingPrefs::<Identity, OFFSET>,
            GetMixingPrefs: GetMixingPrefs::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRMixerControl as windows_core::Interface>::IID
    }
}
pub trait IVMRMixerControl9_Impl: Sized {
    fn SetAlpha(&self, dwstreamid: u32, alpha: f32) -> windows_core::Result<()>;
    fn GetAlpha(&self, dwstreamid: u32) -> windows_core::Result<f32>;
    fn SetZOrder(&self, dwstreamid: u32, dwz: u32) -> windows_core::Result<()>;
    fn GetZOrder(&self, dwstreamid: u32) -> windows_core::Result<u32>;
    fn SetOutputRect(&self, dwstreamid: u32, prect: *const VMR9NormalizedRect) -> windows_core::Result<()>;
    fn GetOutputRect(&self, dwstreamid: u32) -> windows_core::Result<VMR9NormalizedRect>;
    fn SetBackgroundClr(&self, clrbkg: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetBackgroundClr(&self, lpclrbkg: *const super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn SetMixingPrefs(&self, dwmixerprefs: u32) -> windows_core::Result<()>;
    fn GetMixingPrefs(&self) -> windows_core::Result<u32>;
    fn SetProcAmpControl(&self, dwstreamid: u32, lpclrcontrol: *const VMR9ProcAmpControl) -> windows_core::Result<()>;
    fn GetProcAmpControl(&self, dwstreamid: u32, lpclrcontrol: *mut VMR9ProcAmpControl) -> windows_core::Result<()>;
    fn GetProcAmpControlRange(&self, dwstreamid: u32, lpclrcontrol: *mut VMR9ProcAmpControlRange) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVMRMixerControl9 {}
impl IVMRMixerControl9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRMixerControl9_Vtbl
    where
        Identity: IVMRMixerControl9_Impl,
    {
        unsafe extern "system" fn SetAlpha<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, alpha: f32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::SetAlpha(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&alpha)).into()
        }
        unsafe extern "system" fn GetAlpha<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, palpha: *mut f32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl9_Impl::GetAlpha(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    palpha.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetZOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, dwz: u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::SetZOrder(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&dwz)).into()
        }
        unsafe extern "system" fn GetZOrder<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, pz: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl9_Impl::GetZOrder(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    pz.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOutputRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, prect: *const VMR9NormalizedRect) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::SetOutputRect(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&prect)).into()
        }
        unsafe extern "system" fn GetOutputRect<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, prect: *mut VMR9NormalizedRect) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl9_Impl::GetOutputRect(this, core::mem::transmute_copy(&dwstreamid)) {
                Ok(ok__) => {
                    prect.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackgroundClr<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clrbkg: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::SetBackgroundClr(this, core::mem::transmute_copy(&clrbkg)).into()
        }
        unsafe extern "system" fn GetBackgroundClr<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclrbkg: *const super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::GetBackgroundClr(this, core::mem::transmute_copy(&lpclrbkg)).into()
        }
        unsafe extern "system" fn SetMixingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmixerprefs: u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::SetMixingPrefs(this, core::mem::transmute_copy(&dwmixerprefs)).into()
        }
        unsafe extern "system" fn GetMixingPrefs<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwmixerprefs: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMixerControl9_Impl::GetMixingPrefs(this) {
                Ok(ok__) => {
                    pdwmixerprefs.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetProcAmpControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpclrcontrol: *const VMR9ProcAmpControl) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::SetProcAmpControl(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&lpclrcontrol)).into()
        }
        unsafe extern "system" fn GetProcAmpControl<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpclrcontrol: *mut VMR9ProcAmpControl) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::GetProcAmpControl(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&lpclrcontrol)).into()
        }
        unsafe extern "system" fn GetProcAmpControlRange<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstreamid: u32, lpclrcontrol: *mut VMR9ProcAmpControlRange) -> windows_core::HRESULT
        where
            Identity: IVMRMixerControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMixerControl9_Impl::GetProcAmpControlRange(this, core::mem::transmute_copy(&dwstreamid), core::mem::transmute_copy(&lpclrcontrol)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAlpha: SetAlpha::<Identity, OFFSET>,
            GetAlpha: GetAlpha::<Identity, OFFSET>,
            SetZOrder: SetZOrder::<Identity, OFFSET>,
            GetZOrder: GetZOrder::<Identity, OFFSET>,
            SetOutputRect: SetOutputRect::<Identity, OFFSET>,
            GetOutputRect: GetOutputRect::<Identity, OFFSET>,
            SetBackgroundClr: SetBackgroundClr::<Identity, OFFSET>,
            GetBackgroundClr: GetBackgroundClr::<Identity, OFFSET>,
            SetMixingPrefs: SetMixingPrefs::<Identity, OFFSET>,
            GetMixingPrefs: GetMixingPrefs::<Identity, OFFSET>,
            SetProcAmpControl: SetProcAmpControl::<Identity, OFFSET>,
            GetProcAmpControl: GetProcAmpControl::<Identity, OFFSET>,
            GetProcAmpControlRange: GetProcAmpControlRange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRMixerControl9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IVMRMonitorConfig_Impl: Sized {
    fn SetMonitor(&self, pguid: *const VMRGUID) -> windows_core::Result<()>;
    fn GetMonitor(&self, pguid: *mut VMRGUID) -> windows_core::Result<()>;
    fn SetDefaultMonitor(&self, pguid: *const VMRGUID) -> windows_core::Result<()>;
    fn GetDefaultMonitor(&self, pguid: *mut VMRGUID) -> windows_core::Result<()>;
    fn GetAvailableMonitors(&self, pinfo: *mut VMRMONITORINFO, dwmaxinfoarraysize: u32, pdwnumdevices: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IVMRMonitorConfig {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IVMRMonitorConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRMonitorConfig_Vtbl
    where
        Identity: IVMRMonitorConfig_Impl,
    {
        unsafe extern "system" fn SetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const VMRGUID) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig_Impl::SetMonitor(this, core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn GetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut VMRGUID) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig_Impl::GetMonitor(this, core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn SetDefaultMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const VMRGUID) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig_Impl::SetDefaultMonitor(this, core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn GetDefaultMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut VMRGUID) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig_Impl::GetDefaultMonitor(this, core::mem::transmute_copy(&pguid)).into()
        }
        unsafe extern "system" fn GetAvailableMonitors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut VMRMONITORINFO, dwmaxinfoarraysize: u32, pdwnumdevices: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig_Impl::GetAvailableMonitors(this, core::mem::transmute_copy(&pinfo), core::mem::transmute_copy(&dwmaxinfoarraysize), core::mem::transmute_copy(&pdwnumdevices)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetMonitor: SetMonitor::<Identity, OFFSET>,
            GetMonitor: GetMonitor::<Identity, OFFSET>,
            SetDefaultMonitor: SetDefaultMonitor::<Identity, OFFSET>,
            GetDefaultMonitor: GetDefaultMonitor::<Identity, OFFSET>,
            GetAvailableMonitors: GetAvailableMonitors::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRMonitorConfig as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IVMRMonitorConfig9_Impl: Sized {
    fn SetMonitor(&self, udev: u32) -> windows_core::Result<()>;
    fn GetMonitor(&self) -> windows_core::Result<u32>;
    fn SetDefaultMonitor(&self, udev: u32) -> windows_core::Result<()>;
    fn GetDefaultMonitor(&self) -> windows_core::Result<u32>;
    fn GetAvailableMonitors(&self, pinfo: *mut VMR9MonitorInfo, dwmaxinfoarraysize: u32, pdwnumdevices: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IVMRMonitorConfig9 {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IVMRMonitorConfig9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRMonitorConfig9_Vtbl
    where
        Identity: IVMRMonitorConfig9_Impl,
    {
        unsafe extern "system" fn SetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, udev: u32) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig9_Impl::SetMonitor(this, core::mem::transmute_copy(&udev)).into()
        }
        unsafe extern "system" fn GetMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pudev: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMonitorConfig9_Impl::GetMonitor(this) {
                Ok(ok__) => {
                    pudev.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDefaultMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, udev: u32) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig9_Impl::SetDefaultMonitor(this, core::mem::transmute_copy(&udev)).into()
        }
        unsafe extern "system" fn GetDefaultMonitor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pudev: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRMonitorConfig9_Impl::GetDefaultMonitor(this) {
                Ok(ok__) => {
                    pudev.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn GetAvailableMonitors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut VMR9MonitorInfo, dwmaxinfoarraysize: u32, pdwnumdevices: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRMonitorConfig9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRMonitorConfig9_Impl::GetAvailableMonitors(this, core::mem::transmute_copy(&pinfo), core::mem::transmute_copy(&dwmaxinfoarraysize), core::mem::transmute_copy(&pdwnumdevices)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetMonitor: SetMonitor::<Identity, OFFSET>,
            GetMonitor: GetMonitor::<Identity, OFFSET>,
            SetDefaultMonitor: SetDefaultMonitor::<Identity, OFFSET>,
            GetDefaultMonitor: GetDefaultMonitor::<Identity, OFFSET>,
            GetAvailableMonitors: GetAvailableMonitors::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRMonitorConfig9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVMRSurface_Impl: Sized {
    fn IsSurfaceLocked(&self) -> windows_core::Result<()>;
    fn LockSurface(&self) -> windows_core::Result<*mut u8>;
    fn UnlockSurface(&self) -> windows_core::Result<()>;
    fn GetSurface(&self) -> windows_core::Result<super::super::Graphics::DirectDraw::IDirectDrawSurface7>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVMRSurface {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVMRSurface_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurface_Vtbl
    where
        Identity: IVMRSurface_Impl,
    {
        unsafe extern "system" fn IsSurfaceLocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurface_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurface_Impl::IsSurfaceLocked(this).into()
        }
        unsafe extern "system" fn LockSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpsurface: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IVMRSurface_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRSurface_Impl::LockSurface(this) {
                Ok(ok__) => {
                    lpsurface.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UnlockSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurface_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurface_Impl::UnlockSurface(this).into()
        }
        unsafe extern "system" fn GetSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplpsurface: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurface_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRSurface_Impl::GetSurface(this) {
                Ok(ok__) => {
                    lplpsurface.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsSurfaceLocked: IsSurfaceLocked::<Identity, OFFSET>,
            LockSurface: LockSurface::<Identity, OFFSET>,
            UnlockSurface: UnlockSurface::<Identity, OFFSET>,
            GetSurface: GetSurface::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurface as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
pub trait IVMRSurface9_Impl: Sized {
    fn IsSurfaceLocked(&self) -> windows_core::Result<()>;
    fn LockSurface(&self) -> windows_core::Result<*mut u8>;
    fn UnlockSurface(&self) -> windows_core::Result<()>;
    fn GetSurface(&self) -> windows_core::Result<super::super::Graphics::Direct3D9::IDirect3DSurface9>;
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl windows_core::RuntimeName for IVMRSurface9 {}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl IVMRSurface9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurface9_Vtbl
    where
        Identity: IVMRSurface9_Impl,
    {
        unsafe extern "system" fn IsSurfaceLocked<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurface9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurface9_Impl::IsSurfaceLocked(this).into()
        }
        unsafe extern "system" fn LockSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpsurface: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IVMRSurface9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRSurface9_Impl::LockSurface(this) {
                Ok(ok__) => {
                    lpsurface.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn UnlockSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurface9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurface9_Impl::UnlockSurface(this).into()
        }
        unsafe extern "system" fn GetSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lplpsurface: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurface9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRSurface9_Impl::GetSurface(this) {
                Ok(ok__) => {
                    lplpsurface.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsSurfaceLocked: IsSurfaceLocked::<Identity, OFFSET>,
            LockSurface: LockSurface::<Identity, OFFSET>,
            UnlockSurface: UnlockSurface::<Identity, OFFSET>,
            GetSurface: GetSurface::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurface9 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRSurfaceAllocator_Impl: Sized {
    fn AllocateSurface(&self, dwuserid: usize, lpallocinfo: *const VMRALLOCATIONINFO, lpdwactualbuffers: *mut u32, lplpsurface: *mut Option<super::super::Graphics::DirectDraw::IDirectDrawSurface7>) -> windows_core::Result<()>;
    fn FreeSurface(&self, dwid: usize) -> windows_core::Result<()>;
    fn PrepareSurface(&self, dwuserid: usize, lpsurface: Option<&super::super::Graphics::DirectDraw::IDirectDrawSurface7>, dwsurfaceflags: u32) -> windows_core::Result<()>;
    fn AdviseNotify(&self, lpivmrsurfallocnotify: Option<&IVMRSurfaceAllocatorNotify>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl windows_core::RuntimeName for IVMRSurfaceAllocator {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl IVMRSurfaceAllocator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurfaceAllocator_Vtbl
    where
        Identity: IVMRSurfaceAllocator_Impl,
    {
        unsafe extern "system" fn AllocateSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lpallocinfo: *const VMRALLOCATIONINFO, lpdwactualbuffers: *mut u32, lplpsurface: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator_Impl::AllocateSurface(this, core::mem::transmute_copy(&dwuserid), core::mem::transmute_copy(&lpallocinfo), core::mem::transmute_copy(&lpdwactualbuffers), core::mem::transmute_copy(&lplpsurface)).into()
        }
        unsafe extern "system" fn FreeSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwid: usize) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator_Impl::FreeSurface(this, core::mem::transmute_copy(&dwid)).into()
        }
        unsafe extern "system" fn PrepareSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lpsurface: *mut core::ffi::c_void, dwsurfaceflags: u32) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator_Impl::PrepareSurface(this, core::mem::transmute_copy(&dwuserid), windows_core::from_raw_borrowed(&lpsurface), core::mem::transmute_copy(&dwsurfaceflags)).into()
        }
        unsafe extern "system" fn AdviseNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpivmrsurfallocnotify: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator_Impl::AdviseNotify(this, windows_core::from_raw_borrowed(&lpivmrsurfallocnotify)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AllocateSurface: AllocateSurface::<Identity, OFFSET>,
            FreeSurface: FreeSurface::<Identity, OFFSET>,
            PrepareSurface: PrepareSurface::<Identity, OFFSET>,
            AdviseNotify: AdviseNotify::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
pub trait IVMRSurfaceAllocator9_Impl: Sized {
    fn InitializeDevice(&self, dwuserid: usize, lpallocinfo: *const VMR9AllocationInfo, lpnumbuffers: *mut u32) -> windows_core::Result<()>;
    fn TerminateDevice(&self, dwid: usize) -> windows_core::Result<()>;
    fn GetSurface(&self, dwuserid: usize, surfaceindex: u32, surfaceflags: u32) -> windows_core::Result<super::super::Graphics::Direct3D9::IDirect3DSurface9>;
    fn AdviseNotify(&self, lpivmrsurfallocnotify: Option<&IVMRSurfaceAllocatorNotify9>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl windows_core::RuntimeName for IVMRSurfaceAllocator9 {}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl IVMRSurfaceAllocator9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurfaceAllocator9_Vtbl
    where
        Identity: IVMRSurfaceAllocator9_Impl,
    {
        unsafe extern "system" fn InitializeDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lpallocinfo: *const VMR9AllocationInfo, lpnumbuffers: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator9_Impl::InitializeDevice(this, core::mem::transmute_copy(&dwuserid), core::mem::transmute_copy(&lpallocinfo), core::mem::transmute_copy(&lpnumbuffers)).into()
        }
        unsafe extern "system" fn TerminateDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwid: usize) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator9_Impl::TerminateDevice(this, core::mem::transmute_copy(&dwid)).into()
        }
        unsafe extern "system" fn GetSurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, surfaceindex: u32, surfaceflags: u32, lplpsurface: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRSurfaceAllocator9_Impl::GetSurface(this, core::mem::transmute_copy(&dwuserid), core::mem::transmute_copy(&surfaceindex), core::mem::transmute_copy(&surfaceflags)) {
                Ok(ok__) => {
                    lplpsurface.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn AdviseNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpivmrsurfallocnotify: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocator9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocator9_Impl::AdviseNotify(this, windows_core::from_raw_borrowed(&lpivmrsurfallocnotify)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeDevice: InitializeDevice::<Identity, OFFSET>,
            TerminateDevice: TerminateDevice::<Identity, OFFSET>,
            GetSurface: GetSurface::<Identity, OFFSET>,
            AdviseNotify: AdviseNotify::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocator9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
pub trait IVMRSurfaceAllocatorEx9_Impl: Sized + IVMRSurfaceAllocator9_Impl {
    fn GetSurfaceEx(&self, dwuserid: usize, surfaceindex: u32, surfaceflags: u32, lplpsurface: *mut Option<super::super::Graphics::Direct3D9::IDirect3DSurface9>, lprcdst: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl windows_core::RuntimeName for IVMRSurfaceAllocatorEx9 {}
#[cfg(feature = "Win32_Graphics_Direct3D9")]
impl IVMRSurfaceAllocatorEx9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurfaceAllocatorEx9_Vtbl
    where
        Identity: IVMRSurfaceAllocatorEx9_Impl,
    {
        unsafe extern "system" fn GetSurfaceEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, surfaceindex: u32, surfaceflags: u32, lplpsurface: *mut *mut core::ffi::c_void, lprcdst: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorEx9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorEx9_Impl::GetSurfaceEx(this, core::mem::transmute_copy(&dwuserid), core::mem::transmute_copy(&surfaceindex), core::mem::transmute_copy(&surfaceflags), core::mem::transmute_copy(&lplpsurface), core::mem::transmute_copy(&lprcdst)).into()
        }
        Self { base__: IVMRSurfaceAllocator9_Vtbl::new::<Identity, OFFSET>(), GetSurfaceEx: GetSurfaceEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocatorEx9 as windows_core::Interface>::IID || iid == &<IVMRSurfaceAllocator9 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRSurfaceAllocatorNotify_Impl: Sized {
    fn AdviseSurfaceAllocator(&self, dwuserid: usize, lpivrmsurfaceallocator: Option<&IVMRSurfaceAllocator>) -> windows_core::Result<()>;
    fn SetDDrawDevice(&self, lpddrawdevice: Option<&super::super::Graphics::DirectDraw::IDirectDraw7>, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
    fn ChangeDDrawDevice(&self, lpddrawdevice: Option<&super::super::Graphics::DirectDraw::IDirectDraw7>, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
    fn RestoreDDrawSurfaces(&self) -> windows_core::Result<()>;
    fn NotifyEvent(&self, eventcode: i32, param1: isize, param2: isize) -> windows_core::Result<()>;
    fn SetBorderColor(&self, clrborder: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl windows_core::RuntimeName for IVMRSurfaceAllocatorNotify {}
#[cfg(all(feature = "Win32_Graphics_DirectDraw", feature = "Win32_Graphics_Gdi"))]
impl IVMRSurfaceAllocatorNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurfaceAllocatorNotify_Vtbl
    where
        Identity: IVMRSurfaceAllocatorNotify_Impl,
    {
        unsafe extern "system" fn AdviseSurfaceAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lpivrmsurfaceallocator: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify_Impl::AdviseSurfaceAllocator(this, core::mem::transmute_copy(&dwuserid), windows_core::from_raw_borrowed(&lpivrmsurfaceallocator)).into()
        }
        unsafe extern "system" fn SetDDrawDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpddrawdevice: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify_Impl::SetDDrawDevice(this, windows_core::from_raw_borrowed(&lpddrawdevice), core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn ChangeDDrawDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpddrawdevice: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify_Impl::ChangeDDrawDevice(this, windows_core::from_raw_borrowed(&lpddrawdevice), core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn RestoreDDrawSurfaces<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify_Impl::RestoreDDrawSurfaces(this).into()
        }
        unsafe extern "system" fn NotifyEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventcode: i32, param1: isize, param2: isize) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify_Impl::NotifyEvent(this, core::mem::transmute_copy(&eventcode), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2)).into()
        }
        unsafe extern "system" fn SetBorderColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, clrborder: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify_Impl::SetBorderColor(this, core::mem::transmute_copy(&clrborder)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AdviseSurfaceAllocator: AdviseSurfaceAllocator::<Identity, OFFSET>,
            SetDDrawDevice: SetDDrawDevice::<Identity, OFFSET>,
            ChangeDDrawDevice: ChangeDDrawDevice::<Identity, OFFSET>,
            RestoreDDrawSurfaces: RestoreDDrawSurfaces::<Identity, OFFSET>,
            NotifyEvent: NotifyEvent::<Identity, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocatorNotify as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
pub trait IVMRSurfaceAllocatorNotify9_Impl: Sized {
    fn AdviseSurfaceAllocator(&self, dwuserid: usize, lpivrmsurfaceallocator: Option<&IVMRSurfaceAllocator9>) -> windows_core::Result<()>;
    fn SetD3DDevice(&self, lpd3ddevice: Option<&super::super::Graphics::Direct3D9::IDirect3DDevice9>, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
    fn ChangeD3DDevice(&self, lpd3ddevice: Option<&super::super::Graphics::Direct3D9::IDirect3DDevice9>, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
    fn AllocateSurfaceHelper(&self, lpallocinfo: *const VMR9AllocationInfo, lpnumbuffers: *mut u32, lplpsurface: *mut Option<super::super::Graphics::Direct3D9::IDirect3DSurface9>) -> windows_core::Result<()>;
    fn NotifyEvent(&self, eventcode: i32, param1: isize, param2: isize) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl windows_core::RuntimeName for IVMRSurfaceAllocatorNotify9 {}
#[cfg(all(feature = "Win32_Graphics_Direct3D9", feature = "Win32_Graphics_Gdi"))]
impl IVMRSurfaceAllocatorNotify9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRSurfaceAllocatorNotify9_Vtbl
    where
        Identity: IVMRSurfaceAllocatorNotify9_Impl,
    {
        unsafe extern "system" fn AdviseSurfaceAllocator<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwuserid: usize, lpivrmsurfaceallocator: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify9_Impl::AdviseSurfaceAllocator(this, core::mem::transmute_copy(&dwuserid), windows_core::from_raw_borrowed(&lpivrmsurfaceallocator)).into()
        }
        unsafe extern "system" fn SetD3DDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpd3ddevice: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify9_Impl::SetD3DDevice(this, windows_core::from_raw_borrowed(&lpd3ddevice), core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn ChangeD3DDevice<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpd3ddevice: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify9_Impl::ChangeD3DDevice(this, windows_core::from_raw_borrowed(&lpd3ddevice), core::mem::transmute_copy(&hmonitor)).into()
        }
        unsafe extern "system" fn AllocateSurfaceHelper<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpallocinfo: *const VMR9AllocationInfo, lpnumbuffers: *mut u32, lplpsurface: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify9_Impl::AllocateSurfaceHelper(this, core::mem::transmute_copy(&lpallocinfo), core::mem::transmute_copy(&lpnumbuffers), core::mem::transmute_copy(&lplpsurface)).into()
        }
        unsafe extern "system" fn NotifyEvent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventcode: i32, param1: isize, param2: isize) -> windows_core::HRESULT
        where
            Identity: IVMRSurfaceAllocatorNotify9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRSurfaceAllocatorNotify9_Impl::NotifyEvent(this, core::mem::transmute_copy(&eventcode), core::mem::transmute_copy(&param1), core::mem::transmute_copy(&param2)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AdviseSurfaceAllocator: AdviseSurfaceAllocator::<Identity, OFFSET>,
            SetD3DDevice: SetD3DDevice::<Identity, OFFSET>,
            ChangeD3DDevice: ChangeD3DDevice::<Identity, OFFSET>,
            AllocateSurfaceHelper: AllocateSurfaceHelper::<Identity, OFFSET>,
            NotifyEvent: NotifyEvent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRSurfaceAllocatorNotify9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVMRVideoStreamControl_Impl: Sized {
    fn SetColorKey(&self, lpclrkey: *const super::super::Graphics::DirectDraw::DDCOLORKEY) -> windows_core::Result<()>;
    fn GetColorKey(&self) -> windows_core::Result<super::super::Graphics::DirectDraw::DDCOLORKEY>;
    fn SetStreamActiveState(&self, factive: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetStreamActiveState(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVMRVideoStreamControl {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVMRVideoStreamControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRVideoStreamControl_Vtbl
    where
        Identity: IVMRVideoStreamControl_Impl,
    {
        unsafe extern "system" fn SetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclrkey: *const super::super::Graphics::DirectDraw::DDCOLORKEY) -> windows_core::HRESULT
        where
            Identity: IVMRVideoStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRVideoStreamControl_Impl::SetColorKey(this, core::mem::transmute_copy(&lpclrkey)).into()
        }
        unsafe extern "system" fn GetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclrkey: *mut super::super::Graphics::DirectDraw::DDCOLORKEY) -> windows_core::HRESULT
        where
            Identity: IVMRVideoStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRVideoStreamControl_Impl::GetColorKey(this) {
                Ok(ok__) => {
                    lpclrkey.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetStreamActiveState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, factive: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVMRVideoStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRVideoStreamControl_Impl::SetStreamActiveState(this, core::mem::transmute_copy(&factive)).into()
        }
        unsafe extern "system" fn GetStreamActiveState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpfactive: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVMRVideoStreamControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRVideoStreamControl_Impl::GetStreamActiveState(this) {
                Ok(ok__) => {
                    lpfactive.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetColorKey: SetColorKey::<Identity, OFFSET>,
            GetColorKey: GetColorKey::<Identity, OFFSET>,
            SetStreamActiveState: SetStreamActiveState::<Identity, OFFSET>,
            GetStreamActiveState: GetStreamActiveState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRVideoStreamControl as windows_core::Interface>::IID
    }
}
pub trait IVMRVideoStreamControl9_Impl: Sized {
    fn SetStreamActiveState(&self, factive: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetStreamActiveState(&self) -> windows_core::Result<super::super::Foundation::BOOL>;
}
impl windows_core::RuntimeName for IVMRVideoStreamControl9 {}
impl IVMRVideoStreamControl9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRVideoStreamControl9_Vtbl
    where
        Identity: IVMRVideoStreamControl9_Impl,
    {
        unsafe extern "system" fn SetStreamActiveState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, factive: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVMRVideoStreamControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRVideoStreamControl9_Impl::SetStreamActiveState(this, core::mem::transmute_copy(&factive)).into()
        }
        unsafe extern "system" fn GetStreamActiveState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpfactive: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVMRVideoStreamControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRVideoStreamControl9_Impl::GetStreamActiveState(this) {
                Ok(ok__) => {
                    lpfactive.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetStreamActiveState: SetStreamActiveState::<Identity, OFFSET>,
            GetStreamActiveState: GetStreamActiveState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRVideoStreamControl9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IVMRWindowlessControl_Impl: Sized {
    fn GetNativeVideoSize(&self, lpwidth: *mut i32, lpheight: *mut i32, lparwidth: *mut i32, lparheight: *mut i32) -> windows_core::Result<()>;
    fn GetMinIdealVideoSize(&self, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::Result<()>;
    fn GetMaxIdealVideoSize(&self, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::Result<()>;
    fn SetVideoPosition(&self, lpsrcrect: *const super::super::Foundation::RECT, lpdstrect: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn GetVideoPosition(&self, lpsrcrect: *mut super::super::Foundation::RECT, lpdstrect: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn GetAspectRatioMode(&self) -> windows_core::Result<u32>;
    fn SetAspectRatioMode(&self, aspectratiomode: u32) -> windows_core::Result<()>;
    fn SetVideoClippingWindow(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn RepaintVideo(&self, hwnd: super::super::Foundation::HWND, hdc: super::super::Graphics::Gdi::HDC) -> windows_core::Result<()>;
    fn DisplayModeChanged(&self) -> windows_core::Result<()>;
    fn GetCurrentImage(&self) -> windows_core::Result<*mut u8>;
    fn SetBorderColor(&self, clr: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetBorderColor(&self) -> windows_core::Result<super::super::Foundation::COLORREF>;
    fn SetColorKey(&self, clr: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetColorKey(&self) -> windows_core::Result<super::super::Foundation::COLORREF>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IVMRWindowlessControl {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IVMRWindowlessControl_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRWindowlessControl_Vtbl
    where
        Identity: IVMRWindowlessControl_Impl,
    {
        unsafe extern "system" fn GetNativeVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32, lparwidth: *mut i32, lparheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::GetNativeVideoSize(this, core::mem::transmute_copy(&lpwidth), core::mem::transmute_copy(&lpheight), core::mem::transmute_copy(&lparwidth), core::mem::transmute_copy(&lparheight)).into()
        }
        unsafe extern "system" fn GetMinIdealVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::GetMinIdealVideoSize(this, core::mem::transmute_copy(&lpwidth), core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn GetMaxIdealVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::GetMaxIdealVideoSize(this, core::mem::transmute_copy(&lpwidth), core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn SetVideoPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpsrcrect: *const super::super::Foundation::RECT, lpdstrect: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::SetVideoPosition(this, core::mem::transmute_copy(&lpsrcrect), core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetVideoPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpsrcrect: *mut super::super::Foundation::RECT, lpdstrect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::GetVideoPosition(this, core::mem::transmute_copy(&lpsrcrect), core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpaspectratiomode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl_Impl::GetAspectRatioMode(this) {
                Ok(ok__) => {
                    lpaspectratiomode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, aspectratiomode: u32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::SetAspectRatioMode(this, core::mem::transmute_copy(&aspectratiomode)).into()
        }
        unsafe extern "system" fn SetVideoClippingWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::SetVideoClippingWindow(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn RepaintVideo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, hdc: super::super::Graphics::Gdi::HDC) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::RepaintVideo(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&hdc)).into()
        }
        unsafe extern "system" fn DisplayModeChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::DisplayModeChanged(this).into()
        }
        unsafe extern "system" fn GetCurrentImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdib: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl_Impl::GetCurrentImage(this) {
                Ok(ok__) => {
                    lpdib.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, clr: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::SetBorderColor(this, core::mem::transmute_copy(&clr)).into()
        }
        unsafe extern "system" fn GetBorderColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclr: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl_Impl::GetBorderColor(this) {
                Ok(ok__) => {
                    lpclr.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, clr: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl_Impl::SetColorKey(this, core::mem::transmute_copy(&clr)).into()
        }
        unsafe extern "system" fn GetColorKey<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclr: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl_Impl::GetColorKey(this) {
                Ok(ok__) => {
                    lpclr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNativeVideoSize: GetNativeVideoSize::<Identity, OFFSET>,
            GetMinIdealVideoSize: GetMinIdealVideoSize::<Identity, OFFSET>,
            GetMaxIdealVideoSize: GetMaxIdealVideoSize::<Identity, OFFSET>,
            SetVideoPosition: SetVideoPosition::<Identity, OFFSET>,
            GetVideoPosition: GetVideoPosition::<Identity, OFFSET>,
            GetAspectRatioMode: GetAspectRatioMode::<Identity, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, OFFSET>,
            SetVideoClippingWindow: SetVideoClippingWindow::<Identity, OFFSET>,
            RepaintVideo: RepaintVideo::<Identity, OFFSET>,
            DisplayModeChanged: DisplayModeChanged::<Identity, OFFSET>,
            GetCurrentImage: GetCurrentImage::<Identity, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, OFFSET>,
            GetBorderColor: GetBorderColor::<Identity, OFFSET>,
            SetColorKey: SetColorKey::<Identity, OFFSET>,
            GetColorKey: GetColorKey::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRWindowlessControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IVMRWindowlessControl9_Impl: Sized {
    fn GetNativeVideoSize(&self, lpwidth: *mut i32, lpheight: *mut i32, lparwidth: *mut i32, lparheight: *mut i32) -> windows_core::Result<()>;
    fn GetMinIdealVideoSize(&self, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::Result<()>;
    fn GetMaxIdealVideoSize(&self, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::Result<()>;
    fn SetVideoPosition(&self, lpsrcrect: *const super::super::Foundation::RECT, lpdstrect: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn GetVideoPosition(&self, lpsrcrect: *mut super::super::Foundation::RECT, lpdstrect: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn GetAspectRatioMode(&self) -> windows_core::Result<u32>;
    fn SetAspectRatioMode(&self, aspectratiomode: u32) -> windows_core::Result<()>;
    fn SetVideoClippingWindow(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn RepaintVideo(&self, hwnd: super::super::Foundation::HWND, hdc: super::super::Graphics::Gdi::HDC) -> windows_core::Result<()>;
    fn DisplayModeChanged(&self) -> windows_core::Result<()>;
    fn GetCurrentImage(&self) -> windows_core::Result<*mut u8>;
    fn SetBorderColor(&self, clr: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetBorderColor(&self) -> windows_core::Result<super::super::Foundation::COLORREF>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IVMRWindowlessControl9 {}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IVMRWindowlessControl9_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVMRWindowlessControl9_Vtbl
    where
        Identity: IVMRWindowlessControl9_Impl,
    {
        unsafe extern "system" fn GetNativeVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32, lparwidth: *mut i32, lparheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::GetNativeVideoSize(this, core::mem::transmute_copy(&lpwidth), core::mem::transmute_copy(&lpheight), core::mem::transmute_copy(&lparwidth), core::mem::transmute_copy(&lparheight)).into()
        }
        unsafe extern "system" fn GetMinIdealVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::GetMinIdealVideoSize(this, core::mem::transmute_copy(&lpwidth), core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn GetMaxIdealVideoSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpwidth: *mut i32, lpheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::GetMaxIdealVideoSize(this, core::mem::transmute_copy(&lpwidth), core::mem::transmute_copy(&lpheight)).into()
        }
        unsafe extern "system" fn SetVideoPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpsrcrect: *const super::super::Foundation::RECT, lpdstrect: *const super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::SetVideoPosition(this, core::mem::transmute_copy(&lpsrcrect), core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetVideoPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpsrcrect: *mut super::super::Foundation::RECT, lpdstrect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::GetVideoPosition(this, core::mem::transmute_copy(&lpsrcrect), core::mem::transmute_copy(&lpdstrect)).into()
        }
        unsafe extern "system" fn GetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpaspectratiomode: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl9_Impl::GetAspectRatioMode(this) {
                Ok(ok__) => {
                    lpaspectratiomode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAspectRatioMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, aspectratiomode: u32) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::SetAspectRatioMode(this, core::mem::transmute_copy(&aspectratiomode)).into()
        }
        unsafe extern "system" fn SetVideoClippingWindow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::SetVideoClippingWindow(this, core::mem::transmute_copy(&hwnd)).into()
        }
        unsafe extern "system" fn RepaintVideo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, hdc: super::super::Graphics::Gdi::HDC) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::RepaintVideo(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&hdc)).into()
        }
        unsafe extern "system" fn DisplayModeChanged<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::DisplayModeChanged(this).into()
        }
        unsafe extern "system" fn GetCurrentImage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpdib: *mut *mut u8) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl9_Impl::GetCurrentImage(this) {
                Ok(ok__) => {
                    lpdib.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, clr: super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVMRWindowlessControl9_Impl::SetBorderColor(this, core::mem::transmute_copy(&clr)).into()
        }
        unsafe extern "system" fn GetBorderColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpclr: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT
        where
            Identity: IVMRWindowlessControl9_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVMRWindowlessControl9_Impl::GetBorderColor(this) {
                Ok(ok__) => {
                    lpclr.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNativeVideoSize: GetNativeVideoSize::<Identity, OFFSET>,
            GetMinIdealVideoSize: GetMinIdealVideoSize::<Identity, OFFSET>,
            GetMaxIdealVideoSize: GetMaxIdealVideoSize::<Identity, OFFSET>,
            SetVideoPosition: SetVideoPosition::<Identity, OFFSET>,
            GetVideoPosition: GetVideoPosition::<Identity, OFFSET>,
            GetAspectRatioMode: GetAspectRatioMode::<Identity, OFFSET>,
            SetAspectRatioMode: SetAspectRatioMode::<Identity, OFFSET>,
            SetVideoClippingWindow: SetVideoClippingWindow::<Identity, OFFSET>,
            RepaintVideo: RepaintVideo::<Identity, OFFSET>,
            DisplayModeChanged: DisplayModeChanged::<Identity, OFFSET>,
            GetCurrentImage: GetCurrentImage::<Identity, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, OFFSET>,
            GetBorderColor: GetBorderColor::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVMRWindowlessControl9 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVPBaseConfig_Impl: Sized {
    fn GetConnectInfo(&self, pdwnumconnectinfo: *mut u32, pddvpconnectinfo: *mut super::super::Graphics::DirectDraw::DDVIDEOPORTCONNECT) -> windows_core::Result<()>;
    fn SetConnectInfo(&self, dwchosenentry: u32) -> windows_core::Result<()>;
    fn GetVPDataInfo(&self, pamvpdatainfo: *mut AMVPDATAINFO) -> windows_core::Result<()>;
    fn GetMaxPixelRate(&self, pamvpsize: *mut AMVPSIZE, pdwmaxpixelspersecond: *mut u32) -> windows_core::Result<()>;
    fn InformVPInputFormats(&self, dwnumformats: u32, pddpixelformats: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> windows_core::Result<()>;
    fn GetVideoFormats(&self, pdwnumformats: *mut u32, pddpixelformats: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> windows_core::Result<()>;
    fn SetVideoFormat(&self, dwchosenentry: u32) -> windows_core::Result<()>;
    fn SetInvertPolarity(&self) -> windows_core::Result<()>;
    fn GetOverlaySurface(&self) -> windows_core::Result<super::super::Graphics::DirectDraw::IDirectDrawSurface>;
    fn SetDirectDrawKernelHandle(&self, dwddkernelhandle: usize) -> windows_core::Result<()>;
    fn SetVideoPortID(&self, dwvideoportid: u32) -> windows_core::Result<()>;
    fn SetDDSurfaceKernelHandles(&self, chandles: u32, rgddkernelhandles: *mut usize) -> windows_core::Result<()>;
    fn SetSurfaceParameters(&self, dwpitch: u32, dwxorigin: u32, dwyorigin: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVPBaseConfig {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVPBaseConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPBaseConfig_Vtbl
    where
        Identity: IVPBaseConfig_Impl,
    {
        unsafe extern "system" fn GetConnectInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumconnectinfo: *mut u32, pddvpconnectinfo: *mut super::super::Graphics::DirectDraw::DDVIDEOPORTCONNECT) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::GetConnectInfo(this, core::mem::transmute_copy(&pdwnumconnectinfo), core::mem::transmute_copy(&pddvpconnectinfo)).into()
        }
        unsafe extern "system" fn SetConnectInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwchosenentry: u32) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetConnectInfo(this, core::mem::transmute_copy(&dwchosenentry)).into()
        }
        unsafe extern "system" fn GetVPDataInfo<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pamvpdatainfo: *mut AMVPDATAINFO) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::GetVPDataInfo(this, core::mem::transmute_copy(&pamvpdatainfo)).into()
        }
        unsafe extern "system" fn GetMaxPixelRate<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pamvpsize: *mut AMVPSIZE, pdwmaxpixelspersecond: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::GetMaxPixelRate(this, core::mem::transmute_copy(&pamvpsize), core::mem::transmute_copy(&pdwmaxpixelspersecond)).into()
        }
        unsafe extern "system" fn InformVPInputFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwnumformats: u32, pddpixelformats: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::InformVPInputFormats(this, core::mem::transmute_copy(&dwnumformats), core::mem::transmute_copy(&pddpixelformats)).into()
        }
        unsafe extern "system" fn GetVideoFormats<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumformats: *mut u32, pddpixelformats: *mut super::super::Graphics::DirectDraw::DDPIXELFORMAT) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::GetVideoFormats(this, core::mem::transmute_copy(&pdwnumformats), core::mem::transmute_copy(&pddpixelformats)).into()
        }
        unsafe extern "system" fn SetVideoFormat<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwchosenentry: u32) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetVideoFormat(this, core::mem::transmute_copy(&dwchosenentry)).into()
        }
        unsafe extern "system" fn SetInvertPolarity<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetInvertPolarity(this).into()
        }
        unsafe extern "system" fn GetOverlaySurface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppddoverlaysurface: *mut *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVPBaseConfig_Impl::GetOverlaySurface(this) {
                Ok(ok__) => {
                    ppddoverlaysurface.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetDirectDrawKernelHandle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwddkernelhandle: usize) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetDirectDrawKernelHandle(this, core::mem::transmute_copy(&dwddkernelhandle)).into()
        }
        unsafe extern "system" fn SetVideoPortID<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwvideoportid: u32) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetVideoPortID(this, core::mem::transmute_copy(&dwvideoportid)).into()
        }
        unsafe extern "system" fn SetDDSurfaceKernelHandles<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, chandles: u32, rgddkernelhandles: *mut usize) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetDDSurfaceKernelHandles(this, core::mem::transmute_copy(&chandles), core::mem::transmute_copy(&rgddkernelhandles)).into()
        }
        unsafe extern "system" fn SetSurfaceParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwpitch: u32, dwxorigin: u32, dwyorigin: u32) -> windows_core::HRESULT
        where
            Identity: IVPBaseConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseConfig_Impl::SetSurfaceParameters(this, core::mem::transmute_copy(&dwpitch), core::mem::transmute_copy(&dwxorigin), core::mem::transmute_copy(&dwyorigin)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetConnectInfo: GetConnectInfo::<Identity, OFFSET>,
            SetConnectInfo: SetConnectInfo::<Identity, OFFSET>,
            GetVPDataInfo: GetVPDataInfo::<Identity, OFFSET>,
            GetMaxPixelRate: GetMaxPixelRate::<Identity, OFFSET>,
            InformVPInputFormats: InformVPInputFormats::<Identity, OFFSET>,
            GetVideoFormats: GetVideoFormats::<Identity, OFFSET>,
            SetVideoFormat: SetVideoFormat::<Identity, OFFSET>,
            SetInvertPolarity: SetInvertPolarity::<Identity, OFFSET>,
            GetOverlaySurface: GetOverlaySurface::<Identity, OFFSET>,
            SetDirectDrawKernelHandle: SetDirectDrawKernelHandle::<Identity, OFFSET>,
            SetVideoPortID: SetVideoPortID::<Identity, OFFSET>,
            SetDDSurfaceKernelHandles: SetDDSurfaceKernelHandles::<Identity, OFFSET>,
            SetSurfaceParameters: SetSurfaceParameters::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPBaseConfig as windows_core::Interface>::IID
    }
}
pub trait IVPBaseNotify_Impl: Sized {
    fn RenegotiateVPParameters(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVPBaseNotify {}
impl IVPBaseNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPBaseNotify_Vtbl
    where
        Identity: IVPBaseNotify_Impl,
    {
        unsafe extern "system" fn RenegotiateVPParameters<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVPBaseNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPBaseNotify_Impl::RenegotiateVPParameters(this).into()
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RenegotiateVPParameters: RenegotiateVPParameters::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPBaseNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVPConfig_Impl: Sized + IVPBaseConfig_Impl {
    fn IsVPDecimationAllowed(&self, pbisdecimationallowed: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn SetScalingFactors(&self, pamvpsize: *mut AMVPSIZE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVPConfig {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVPConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPConfig_Vtbl
    where
        Identity: IVPConfig_Impl,
    {
        unsafe extern "system" fn IsVPDecimationAllowed<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbisdecimationallowed: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVPConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPConfig_Impl::IsVPDecimationAllowed(this, core::mem::transmute_copy(&pbisdecimationallowed)).into()
        }
        unsafe extern "system" fn SetScalingFactors<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pamvpsize: *mut AMVPSIZE) -> windows_core::HRESULT
        where
            Identity: IVPConfig_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPConfig_Impl::SetScalingFactors(this, core::mem::transmute_copy(&pamvpsize)).into()
        }
        Self {
            base__: IVPBaseConfig_Vtbl::new::<Identity, OFFSET>(),
            IsVPDecimationAllowed: IsVPDecimationAllowed::<Identity, OFFSET>,
            SetScalingFactors: SetScalingFactors::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPConfig as windows_core::Interface>::IID || iid == &<IVPBaseConfig as windows_core::Interface>::IID
    }
}
pub trait IVPManager_Impl: Sized {
    fn SetVideoPortIndex(&self, dwvideoportindex: u32) -> windows_core::Result<()>;
    fn GetVideoPortIndex(&self) -> windows_core::Result<u32>;
}
impl windows_core::RuntimeName for IVPManager {}
impl IVPManager_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPManager_Vtbl
    where
        Identity: IVPManager_Impl,
    {
        unsafe extern "system" fn SetVideoPortIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwvideoportindex: u32) -> windows_core::HRESULT
        where
            Identity: IVPManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPManager_Impl::SetVideoPortIndex(this, core::mem::transmute_copy(&dwvideoportindex)).into()
        }
        unsafe extern "system" fn GetVideoPortIndex<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwvideoportindex: *mut u32) -> windows_core::HRESULT
        where
            Identity: IVPManager_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVPManager_Impl::GetVideoPortIndex(this) {
                Ok(ok__) => {
                    pdwvideoportindex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetVideoPortIndex: SetVideoPortIndex::<Identity, OFFSET>,
            GetVideoPortIndex: GetVideoPortIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPManager as windows_core::Interface>::IID
    }
}
pub trait IVPNotify_Impl: Sized + IVPBaseNotify_Impl {
    fn SetDeinterlaceMode(&self, mode: AMVP_MODE) -> windows_core::Result<()>;
    fn GetDeinterlaceMode(&self, pmode: *mut AMVP_MODE) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVPNotify {}
impl IVPNotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPNotify_Vtbl
    where
        Identity: IVPNotify_Impl,
    {
        unsafe extern "system" fn SetDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: AMVP_MODE) -> windows_core::HRESULT
        where
            Identity: IVPNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPNotify_Impl::SetDeinterlaceMode(this, core::mem::transmute_copy(&mode)).into()
        }
        unsafe extern "system" fn GetDeinterlaceMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmode: *mut AMVP_MODE) -> windows_core::HRESULT
        where
            Identity: IVPNotify_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPNotify_Impl::GetDeinterlaceMode(this, core::mem::transmute_copy(&pmode)).into()
        }
        Self {
            base__: IVPBaseNotify_Vtbl::new::<Identity, OFFSET>(),
            SetDeinterlaceMode: SetDeinterlaceMode::<Identity, OFFSET>,
            GetDeinterlaceMode: GetDeinterlaceMode::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPNotify as windows_core::Interface>::IID || iid == &<IVPBaseNotify as windows_core::Interface>::IID
    }
}
pub trait IVPNotify2_Impl: Sized + IVPNotify_Impl {
    fn SetVPSyncMaster(&self, bvpsyncmaster: super::super::Foundation::BOOL) -> windows_core::Result<()>;
    fn GetVPSyncMaster(&self, pbvpsyncmaster: *mut super::super::Foundation::BOOL) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVPNotify2 {}
impl IVPNotify2_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPNotify2_Vtbl
    where
        Identity: IVPNotify2_Impl,
    {
        unsafe extern "system" fn SetVPSyncMaster<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bvpsyncmaster: super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVPNotify2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPNotify2_Impl::SetVPSyncMaster(this, core::mem::transmute_copy(&bvpsyncmaster)).into()
        }
        unsafe extern "system" fn GetVPSyncMaster<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbvpsyncmaster: *mut super::super::Foundation::BOOL) -> windows_core::HRESULT
        where
            Identity: IVPNotify2_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVPNotify2_Impl::GetVPSyncMaster(this, core::mem::transmute_copy(&pbvpsyncmaster)).into()
        }
        Self {
            base__: IVPNotify_Vtbl::new::<Identity, OFFSET>(),
            SetVPSyncMaster: SetVPSyncMaster::<Identity, OFFSET>,
            GetVPSyncMaster: GetVPSyncMaster::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPNotify2 as windows_core::Interface>::IID || iid == &<IVPBaseNotify as windows_core::Interface>::IID || iid == &<IVPNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
pub trait IVPVBIConfig_Impl: Sized + IVPBaseConfig_Impl {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl windows_core::RuntimeName for IVPVBIConfig {}
#[cfg(feature = "Win32_Graphics_DirectDraw")]
impl IVPVBIConfig_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPVBIConfig_Vtbl
    where
        Identity: IVPVBIConfig_Impl,
    {
        Self { base__: IVPBaseConfig_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPVBIConfig as windows_core::Interface>::IID || iid == &<IVPBaseConfig as windows_core::Interface>::IID
    }
}
pub trait IVPVBINotify_Impl: Sized + IVPBaseNotify_Impl {}
impl windows_core::RuntimeName for IVPVBINotify {}
impl IVPVBINotify_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVPVBINotify_Vtbl
    where
        Identity: IVPVBINotify_Impl,
    {
        Self { base__: IVPBaseNotify_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVPVBINotify as windows_core::Interface>::IID || iid == &<IVPBaseNotify as windows_core::Interface>::IID
    }
}
pub trait IVideoEncoder_Impl: Sized + IEncoderAPI_Impl {}
impl windows_core::RuntimeName for IVideoEncoder {}
impl IVideoEncoder_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVideoEncoder_Vtbl
    where
        Identity: IVideoEncoder_Impl,
    {
        Self { base__: IEncoderAPI_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVideoEncoder as windows_core::Interface>::IID || iid == &<IEncoderAPI as windows_core::Interface>::IID
    }
}
pub trait IVideoFrameStep_Impl: Sized {
    fn Step(&self, dwframes: u32, pstepobject: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn CanStep(&self, bmultiple: i32, pstepobject: Option<&windows_core::IUnknown>) -> windows_core::Result<()>;
    fn CancelStep(&self) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVideoFrameStep {}
impl IVideoFrameStep_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVideoFrameStep_Vtbl
    where
        Identity: IVideoFrameStep_Impl,
    {
        unsafe extern "system" fn Step<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwframes: u32, pstepobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVideoFrameStep_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoFrameStep_Impl::Step(this, core::mem::transmute_copy(&dwframes), windows_core::from_raw_borrowed(&pstepobject)).into()
        }
        unsafe extern "system" fn CanStep<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, bmultiple: i32, pstepobject: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVideoFrameStep_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoFrameStep_Impl::CanStep(this, core::mem::transmute_copy(&bmultiple), windows_core::from_raw_borrowed(&pstepobject)).into()
        }
        unsafe extern "system" fn CancelStep<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IVideoFrameStep_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoFrameStep_Impl::CancelStep(this).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Step: Step::<Identity, OFFSET>,
            CanStep: CanStep::<Identity, OFFSET>,
            CancelStep: CancelStep::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVideoFrameStep as windows_core::Interface>::IID
    }
}
pub trait IVideoProcAmp_Impl: Sized {
    fn get_BacklightCompensation(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_BacklightCompensation(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_BacklightCompensation(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Brightness(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Brightness(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Brightness(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_ColorEnable(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_ColorEnable(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_ColorEnable(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Contrast(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Contrast(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Contrast(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Gamma(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Gamma(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Gamma(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Saturation(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Saturation(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Saturation(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Sharpness(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Sharpness(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Sharpness(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_WhiteBalance(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_WhiteBalance(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_WhiteBalance(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Gain(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Gain(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Gain(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_Hue(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_Hue(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_Hue(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_DigitalMultiplier(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_DigitalMultiplier(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_DigitalMultiplier(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_PowerlineFrequency(&self, pvalue: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_PowerlineFrequency(&self, value: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_PowerlineFrequency(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
    fn get_WhiteBalanceComponent(&self, pvalue1: *mut i32, pvalue2: *mut i32, pflags: *mut i32) -> windows_core::Result<()>;
    fn put_WhiteBalanceComponent(&self, value1: i32, value2: i32, flags: i32) -> windows_core::Result<()>;
    fn getRange_WhiteBalanceComponent(&self, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::Result<()>;
}
impl windows_core::RuntimeName for IVideoProcAmp {}
impl IVideoProcAmp_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVideoProcAmp_Vtbl
    where
        Identity: IVideoProcAmp_Impl,
    {
        unsafe extern "system" fn get_BacklightCompensation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_BacklightCompensation(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_BacklightCompensation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_BacklightCompensation(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_BacklightCompensation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_BacklightCompensation(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Brightness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Brightness(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Brightness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Brightness(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Brightness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Brightness(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_ColorEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_ColorEnable(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_ColorEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_ColorEnable(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_ColorEnable<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_ColorEnable(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Contrast<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Contrast(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Contrast<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Contrast(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Contrast<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Contrast(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Gamma<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Gamma(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Gamma<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Gamma(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Gamma<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Gamma(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Saturation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Saturation(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Saturation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Saturation(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Saturation<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Saturation(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Sharpness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Sharpness(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Sharpness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Sharpness(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Sharpness<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Sharpness(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_WhiteBalance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_WhiteBalance(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_WhiteBalance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_WhiteBalance(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_WhiteBalance<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_WhiteBalance(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Gain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Gain(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Gain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Gain(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Gain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Gain(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_Hue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_Hue(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_Hue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_Hue(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_Hue<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_Hue(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_DigitalMultiplier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_DigitalMultiplier(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_DigitalMultiplier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_DigitalMultiplier(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_DigitalMultiplier<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_DigitalMultiplier(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_PowerlineFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_PowerlineFrequency(this, core::mem::transmute_copy(&pvalue), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_PowerlineFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_PowerlineFrequency(this, core::mem::transmute_copy(&value), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_PowerlineFrequency<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_PowerlineFrequency(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        unsafe extern "system" fn get_WhiteBalanceComponent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvalue1: *mut i32, pvalue2: *mut i32, pflags: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::get_WhiteBalanceComponent(this, core::mem::transmute_copy(&pvalue1), core::mem::transmute_copy(&pvalue2), core::mem::transmute_copy(&pflags)).into()
        }
        unsafe extern "system" fn put_WhiteBalanceComponent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, value1: i32, value2: i32, flags: i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::put_WhiteBalanceComponent(this, core::mem::transmute_copy(&value1), core::mem::transmute_copy(&value2), core::mem::transmute_copy(&flags)).into()
        }
        unsafe extern "system" fn getRange_WhiteBalanceComponent<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmin: *mut i32, pmax: *mut i32, psteppingdelta: *mut i32, pdefault: *mut i32, pcapsflag: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoProcAmp_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoProcAmp_Impl::getRange_WhiteBalanceComponent(this, core::mem::transmute_copy(&pmin), core::mem::transmute_copy(&pmax), core::mem::transmute_copy(&psteppingdelta), core::mem::transmute_copy(&pdefault), core::mem::transmute_copy(&pcapsflag)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            get_BacklightCompensation: get_BacklightCompensation::<Identity, OFFSET>,
            put_BacklightCompensation: put_BacklightCompensation::<Identity, OFFSET>,
            getRange_BacklightCompensation: getRange_BacklightCompensation::<Identity, OFFSET>,
            get_Brightness: get_Brightness::<Identity, OFFSET>,
            put_Brightness: put_Brightness::<Identity, OFFSET>,
            getRange_Brightness: getRange_Brightness::<Identity, OFFSET>,
            get_ColorEnable: get_ColorEnable::<Identity, OFFSET>,
            put_ColorEnable: put_ColorEnable::<Identity, OFFSET>,
            getRange_ColorEnable: getRange_ColorEnable::<Identity, OFFSET>,
            get_Contrast: get_Contrast::<Identity, OFFSET>,
            put_Contrast: put_Contrast::<Identity, OFFSET>,
            getRange_Contrast: getRange_Contrast::<Identity, OFFSET>,
            get_Gamma: get_Gamma::<Identity, OFFSET>,
            put_Gamma: put_Gamma::<Identity, OFFSET>,
            getRange_Gamma: getRange_Gamma::<Identity, OFFSET>,
            get_Saturation: get_Saturation::<Identity, OFFSET>,
            put_Saturation: put_Saturation::<Identity, OFFSET>,
            getRange_Saturation: getRange_Saturation::<Identity, OFFSET>,
            get_Sharpness: get_Sharpness::<Identity, OFFSET>,
            put_Sharpness: put_Sharpness::<Identity, OFFSET>,
            getRange_Sharpness: getRange_Sharpness::<Identity, OFFSET>,
            get_WhiteBalance: get_WhiteBalance::<Identity, OFFSET>,
            put_WhiteBalance: put_WhiteBalance::<Identity, OFFSET>,
            getRange_WhiteBalance: getRange_WhiteBalance::<Identity, OFFSET>,
            get_Gain: get_Gain::<Identity, OFFSET>,
            put_Gain: put_Gain::<Identity, OFFSET>,
            getRange_Gain: getRange_Gain::<Identity, OFFSET>,
            get_Hue: get_Hue::<Identity, OFFSET>,
            put_Hue: put_Hue::<Identity, OFFSET>,
            getRange_Hue: getRange_Hue::<Identity, OFFSET>,
            get_DigitalMultiplier: get_DigitalMultiplier::<Identity, OFFSET>,
            put_DigitalMultiplier: put_DigitalMultiplier::<Identity, OFFSET>,
            getRange_DigitalMultiplier: getRange_DigitalMultiplier::<Identity, OFFSET>,
            get_PowerlineFrequency: get_PowerlineFrequency::<Identity, OFFSET>,
            put_PowerlineFrequency: put_PowerlineFrequency::<Identity, OFFSET>,
            getRange_PowerlineFrequency: getRange_PowerlineFrequency::<Identity, OFFSET>,
            get_WhiteBalanceComponent: get_WhiteBalanceComponent::<Identity, OFFSET>,
            put_WhiteBalanceComponent: put_WhiteBalanceComponent::<Identity, OFFSET>,
            getRange_WhiteBalanceComponent: getRange_WhiteBalanceComponent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVideoProcAmp as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IVideoWindow_Impl: Sized + super::super::System::Com::IDispatch_Impl {
    fn SetCaption(&self, strcaption: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Caption(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetWindowStyle(&self, windowstyle: i32) -> windows_core::Result<()>;
    fn WindowStyle(&self) -> windows_core::Result<i32>;
    fn SetWindowStyleEx(&self, windowstyleex: i32) -> windows_core::Result<()>;
    fn WindowStyleEx(&self) -> windows_core::Result<i32>;
    fn SetAutoShow(&self, autoshow: i32) -> windows_core::Result<()>;
    fn AutoShow(&self) -> windows_core::Result<i32>;
    fn SetWindowState(&self, windowstate: i32) -> windows_core::Result<()>;
    fn WindowState(&self) -> windows_core::Result<super::super::UI::WindowsAndMessaging::SHOW_WINDOW_CMD>;
    fn SetBackgroundPalette(&self, backgroundpalette: i32) -> windows_core::Result<()>;
    fn BackgroundPalette(&self) -> windows_core::Result<i32>;
    fn SetVisible(&self, visible: i32) -> windows_core::Result<()>;
    fn Visible(&self) -> windows_core::Result<i32>;
    fn SetLeft(&self, left: i32) -> windows_core::Result<()>;
    fn Left(&self) -> windows_core::Result<i32>;
    fn SetWidth(&self, width: i32) -> windows_core::Result<()>;
    fn Width(&self) -> windows_core::Result<i32>;
    fn SetTop(&self, top: i32) -> windows_core::Result<()>;
    fn Top(&self) -> windows_core::Result<i32>;
    fn SetHeight(&self, height: i32) -> windows_core::Result<()>;
    fn Height(&self) -> windows_core::Result<i32>;
    fn SetOwner(&self, owner: isize) -> windows_core::Result<()>;
    fn Owner(&self) -> windows_core::Result<isize>;
    fn SetMessageDrain(&self, drain: isize) -> windows_core::Result<()>;
    fn MessageDrain(&self) -> windows_core::Result<isize>;
    fn BorderColor(&self) -> windows_core::Result<i32>;
    fn SetBorderColor(&self, color: i32) -> windows_core::Result<()>;
    fn FullScreenMode(&self) -> windows_core::Result<i32>;
    fn SetFullScreenMode(&self, fullscreenmode: i32) -> windows_core::Result<()>;
    fn SetWindowForeground(&self, focus: i32) -> windows_core::Result<()>;
    fn NotifyOwnerMessage(&self, hwnd: isize, umsg: i32, wparam: isize, lparam: isize) -> windows_core::Result<()>;
    fn SetWindowPosition(&self, left: i32, top: i32, width: i32, height: i32) -> windows_core::Result<()>;
    fn GetWindowPosition(&self, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn GetMinIdealImageSize(&self, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn GetMaxIdealImageSize(&self, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn GetRestorePosition(&self, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::Result<()>;
    fn HideCursor(&self, hidecursor: OA_BOOL) -> windows_core::Result<()>;
    fn IsCursorHidden(&self) -> windows_core::Result<i32>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IVideoWindow {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_WindowsAndMessaging"))]
impl IVideoWindow_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IVideoWindow_Vtbl
    where
        Identity: IVideoWindow_Impl,
    {
        unsafe extern "system" fn SetCaption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strcaption: core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetCaption(this, core::mem::transmute(&strcaption)).into()
        }
        unsafe extern "system" fn Caption<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, strcaption: *mut core::mem::MaybeUninit<windows_core::BSTR>) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Caption(this) {
                Ok(ok__) => {
                    strcaption.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowstyle: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetWindowStyle(this, core::mem::transmute_copy(&windowstyle)).into()
        }
        unsafe extern "system" fn WindowStyle<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowstyle: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::WindowStyle(this) {
                Ok(ok__) => {
                    windowstyle.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowStyleEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowstyleex: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetWindowStyleEx(this, core::mem::transmute_copy(&windowstyleex)).into()
        }
        unsafe extern "system" fn WindowStyleEx<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowstyleex: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::WindowStyleEx(this) {
                Ok(ok__) => {
                    windowstyleex.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetAutoShow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, autoshow: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetAutoShow(this, core::mem::transmute_copy(&autoshow)).into()
        }
        unsafe extern "system" fn AutoShow<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, autoshow: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::AutoShow(this) {
                Ok(ok__) => {
                    autoshow.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWindowState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowstate: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetWindowState(this, core::mem::transmute_copy(&windowstate)).into()
        }
        unsafe extern "system" fn WindowState<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, windowstate: *mut super::super::UI::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::WindowState(this) {
                Ok(ok__) => {
                    windowstate.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetBackgroundPalette<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, backgroundpalette: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetBackgroundPalette(this, core::mem::transmute_copy(&backgroundpalette)).into()
        }
        unsafe extern "system" fn BackgroundPalette<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbackgroundpalette: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::BackgroundPalette(this) {
                Ok(ok__) => {
                    pbackgroundpalette.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: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetVisible(this, core::mem::transmute_copy(&visible)).into()
        }
        unsafe extern "system" fn Visible<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvisible: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Visible(this) {
                Ok(ok__) => {
                    pvisible.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetLeft<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, left: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetLeft(this, core::mem::transmute_copy(&left)).into()
        }
        unsafe extern "system" fn Left<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pleft: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Left(this) {
                Ok(ok__) => {
                    pleft.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetWidth<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, width: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetWidth(this, core::mem::transmute_copy(&width)).into()
        }
        unsafe extern "system" fn Width<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwidth: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Width(this) {
                Ok(ok__) => {
                    pwidth.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetTop<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, top: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetTop(this, core::mem::transmute_copy(&top)).into()
        }
        unsafe extern "system" fn Top<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptop: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Top(this) {
                Ok(ok__) => {
                    ptop.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetHeight<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, height: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetHeight(this, core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn Height<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Height(this) {
                Ok(ok__) => {
                    pheight.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetOwner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, owner: isize) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetOwner(this, core::mem::transmute_copy(&owner)).into()
        }
        unsafe extern "system" fn Owner<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, owner: *mut isize) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::Owner(this) {
                Ok(ok__) => {
                    owner.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetMessageDrain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, drain: isize) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetMessageDrain(this, core::mem::transmute_copy(&drain)).into()
        }
        unsafe extern "system" fn MessageDrain<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, drain: *mut isize) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::MessageDrain(this) {
                Ok(ok__) => {
                    drain.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn BorderColor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_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: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetBorderColor(this, core::mem::transmute_copy(&color)).into()
        }
        unsafe extern "system" fn FullScreenMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fullscreenmode: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::FullScreenMode(this) {
                Ok(ok__) => {
                    fullscreenmode.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        unsafe extern "system" fn SetFullScreenMode<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, fullscreenmode: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetFullScreenMode(this, core::mem::transmute_copy(&fullscreenmode)).into()
        }
        unsafe extern "system" fn SetWindowForeground<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, focus: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetWindowForeground(this, core::mem::transmute_copy(&focus)).into()
        }
        unsafe extern "system" fn NotifyOwnerMessage<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: isize, umsg: i32, wparam: isize, lparam: isize) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::NotifyOwnerMessage(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
        }
        unsafe extern "system" fn SetWindowPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, left: i32, top: i32, width: i32, height: i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::SetWindowPosition(this, core::mem::transmute_copy(&left), core::mem::transmute_copy(&top), core::mem::transmute_copy(&width), core::mem::transmute_copy(&height)).into()
        }
        unsafe extern "system" fn GetWindowPosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::GetWindowPosition(this, core::mem::transmute_copy(&pleft), core::mem::transmute_copy(&ptop), core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetMinIdealImageSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::GetMinIdealImageSize(this, core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetMaxIdealImageSize<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::GetMaxIdealImageSize(this, core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn GetRestorePosition<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pleft: *mut i32, ptop: *mut i32, pwidth: *mut i32, pheight: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::GetRestorePosition(this, core::mem::transmute_copy(&pleft), core::mem::transmute_copy(&ptop), core::mem::transmute_copy(&pwidth), core::mem::transmute_copy(&pheight)).into()
        }
        unsafe extern "system" fn HideCursor<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, hidecursor: OA_BOOL) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IVideoWindow_Impl::HideCursor(this, core::mem::transmute_copy(&hidecursor)).into()
        }
        unsafe extern "system" fn IsCursorHidden<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, cursorhidden: *mut i32) -> windows_core::HRESULT
        where
            Identity: IVideoWindow_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            match IVideoWindow_Impl::IsCursorHidden(this) {
                Ok(ok__) => {
                    cursorhidden.write(core::mem::transmute(ok__));
                    windows_core::HRESULT(0)
                }
                Err(err) => err.into(),
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            SetCaption: SetCaption::<Identity, OFFSET>,
            Caption: Caption::<Identity, OFFSET>,
            SetWindowStyle: SetWindowStyle::<Identity, OFFSET>,
            WindowStyle: WindowStyle::<Identity, OFFSET>,
            SetWindowStyleEx: SetWindowStyleEx::<Identity, OFFSET>,
            WindowStyleEx: WindowStyleEx::<Identity, OFFSET>,
            SetAutoShow: SetAutoShow::<Identity, OFFSET>,
            AutoShow: AutoShow::<Identity, OFFSET>,
            SetWindowState: SetWindowState::<Identity, OFFSET>,
            WindowState: WindowState::<Identity, OFFSET>,
            SetBackgroundPalette: SetBackgroundPalette::<Identity, OFFSET>,
            BackgroundPalette: BackgroundPalette::<Identity, OFFSET>,
            SetVisible: SetVisible::<Identity, OFFSET>,
            Visible: Visible::<Identity, OFFSET>,
            SetLeft: SetLeft::<Identity, OFFSET>,
            Left: Left::<Identity, OFFSET>,
            SetWidth: SetWidth::<Identity, OFFSET>,
            Width: Width::<Identity, OFFSET>,
            SetTop: SetTop::<Identity, OFFSET>,
            Top: Top::<Identity, OFFSET>,
            SetHeight: SetHeight::<Identity, OFFSET>,
            Height: Height::<Identity, OFFSET>,
            SetOwner: SetOwner::<Identity, OFFSET>,
            Owner: Owner::<Identity, OFFSET>,
            SetMessageDrain: SetMessageDrain::<Identity, OFFSET>,
            MessageDrain: MessageDrain::<Identity, OFFSET>,
            BorderColor: BorderColor::<Identity, OFFSET>,
            SetBorderColor: SetBorderColor::<Identity, OFFSET>,
            FullScreenMode: FullScreenMode::<Identity, OFFSET>,
            SetFullScreenMode: SetFullScreenMode::<Identity, OFFSET>,
            SetWindowForeground: SetWindowForeground::<Identity, OFFSET>,
            NotifyOwnerMessage: NotifyOwnerMessage::<Identity, OFFSET>,
            SetWindowPosition: SetWindowPosition::<Identity, OFFSET>,
            GetWindowPosition: GetWindowPosition::<Identity, OFFSET>,
            GetMinIdealImageSize: GetMinIdealImageSize::<Identity, OFFSET>,
            GetMaxIdealImageSize: GetMaxIdealImageSize::<Identity, OFFSET>,
            GetRestorePosition: GetRestorePosition::<Identity, OFFSET>,
            HideCursor: HideCursor::<Identity, OFFSET>,
            IsCursorHidden: IsCursorHidden::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVideoWindow as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
pub trait IWMCodecAMVideoAccelerator_Impl: Sized {
    fn SetAcceleratorInterface(&self, piamva: Option<&IAMVideoAccelerator>) -> windows_core::Result<()>;
    fn NegotiateConnection(&self, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn SetPlayerNotify(&self, phook: Option<&super::WindowsMediaFormat::IWMPlayerTimestampHook>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl windows_core::RuntimeName for IWMCodecAMVideoAccelerator {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl IWMCodecAMVideoAccelerator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWMCodecAMVideoAccelerator_Vtbl
    where
        Identity: IWMCodecAMVideoAccelerator_Impl,
    {
        unsafe extern "system" fn SetAcceleratorInterface<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piamva: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWMCodecAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWMCodecAMVideoAccelerator_Impl::SetAcceleratorInterface(this, windows_core::from_raw_borrowed(&piamva)).into()
        }
        unsafe extern "system" fn NegotiateConnection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IWMCodecAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWMCodecAMVideoAccelerator_Impl::NegotiateConnection(this, core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn SetPlayerNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phook: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWMCodecAMVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWMCodecAMVideoAccelerator_Impl::SetPlayerNotify(this, windows_core::from_raw_borrowed(&phook)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAcceleratorInterface: SetAcceleratorInterface::<Identity, OFFSET>,
            NegotiateConnection: NegotiateConnection::<Identity, OFFSET>,
            SetPlayerNotify: SetPlayerNotify::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWMCodecAMVideoAccelerator as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
pub trait IWMCodecVideoAccelerator_Impl: Sized {
    fn NegotiateConnection(&self, piamva: Option<&IAMVideoAccelerator>, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::Result<()>;
    fn SetPlayerNotify(&self, phook: Option<&super::WindowsMediaFormat::IWMPlayerTimestampHook>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl windows_core::RuntimeName for IWMCodecVideoAccelerator {}
#[cfg(all(feature = "Win32_Media_MediaFoundation", feature = "Win32_Media_WindowsMediaFormat"))]
impl IWMCodecVideoAccelerator_Vtbl {
    pub const fn new<Identity: windows_core::IUnknownImpl, const OFFSET: isize>() -> IWMCodecVideoAccelerator_Vtbl
    where
        Identity: IWMCodecVideoAccelerator_Impl,
    {
        unsafe extern "system" fn NegotiateConnection<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, piamva: *mut core::ffi::c_void, pmediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> windows_core::HRESULT
        where
            Identity: IWMCodecVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWMCodecVideoAccelerator_Impl::NegotiateConnection(this, windows_core::from_raw_borrowed(&piamva), core::mem::transmute_copy(&pmediatype)).into()
        }
        unsafe extern "system" fn SetPlayerNotify<Identity: windows_core::IUnknownImpl, const OFFSET: isize>(this: *mut core::ffi::c_void, phook: *mut core::ffi::c_void) -> windows_core::HRESULT
        where
            Identity: IWMCodecVideoAccelerator_Impl,
        {
            let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
            IWMCodecVideoAccelerator_Impl::SetPlayerNotify(this, windows_core::from_raw_borrowed(&phook)).into()
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            NegotiateConnection: NegotiateConnection::<Identity, OFFSET>,
            SetPlayerNotify: SetPlayerNotify::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWMCodecVideoAccelerator as windows_core::Interface>::IID
    }
}
